using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Fab2ApprovalSystem.DMO;
using Fab2ApprovalSystem.Models;
using Fab2ApprovalSystem.Utilities;
using Quartz;
namespace Fab2ApprovalSystem.Workers;
public class OOOTrainingReportJob : IJob {
private readonly UserAccountDMO userDMO = new();
private readonly AdminDMO adminDMO = new();
private readonly TrainingDMO trainingDMO = new();
private readonly ECN_DMO ecnDMO = new();
async Task IJob.Execute(IJobExecutionContext context) {
await Task.Run(() => {
string emailBody = "
Mesa Approval Open Training Assignments Report - OOO
";
emailBody += "The following contains open training assignments in the Mesa Approval system for out of office users.";
emailBody += " Please ensure they complete their training assignments promptly upon their return.
";
emailBody += "";
// Get all users set up to receive the training report email.
List trainingReportUsers = adminDMO.GetTrainingReportUsers();
List emailList = new();
foreach (TrainingReportUser user in trainingReportUsers) {
string userEmail = userDMO.GetUserByID(user.UserId).Email;
emailList.Add(userEmail);
}
// emailList.Add("Chase.Tucker@infineon.com");
// Get a list of open trainings
List openTrainings = trainingDMO.GetAllOpenTrainings();
foreach (Training training in openTrainings) {
string trainingSection = "";
int trainingSectionUserCount = 0;
string ecnTitle = ecnDMO.GetECN(training.ECN).Title;
trainingSection += "" + training.ECN + " - " + ecnTitle + "
";
trainingSection += "";
trainingSection += "Name | Date Assigned |
";
List openAssignments = trainingDMO.GetOpenAssignmentsByTrainingID(training.TrainingID);
foreach (TrainingAssignment assignment in openAssignments) {
if (userDMO.GetUserByID(assignment.UserID).OOO) {
trainingSectionUserCount++;
DateTime? assignmentDate = assignment.DateAssigned;
string DateAssigned = assignmentDate.HasValue ? assignmentDate.Value.ToString("MM/dd/yyyy") : "";
trainingSection += "" + assignment.FullName + " | " + DateAssigned + " | ";
trainingSection += "
";
}
}
trainingSection += "
";
if (trainingSectionUserCount > 0)
emailBody += trainingSection;
}
string recipientEmail = "";
List ccRecipients = emailList;
EmailUtilities.SendNotification("MesaFabApproval@infineon.com", ccRecipients, "Open Training Report - OOO", emailBody);
});
}
}