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 = "<h1>Mesa Approval Open Training Assignments Report - OOO</h1> <br />"; emailBody += "<p>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.</p><br />"; emailBody += "<style>table,th,td{border: 1px solid black;}</style>"; // Get all users set up to receive the training report email. List<TrainingReportUser> trainingReportUsers = adminDMO.GetTrainingReportUsers(); List<string> 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<Training> openTrainings = trainingDMO.GetAllOpenTrainings(); foreach (Training training in openTrainings) { string trainingSection = ""; int trainingSectionUserCount = 0; string ecnTitle = ecnDMO.GetECN(training.ECN).Title; trainingSection += "<h3>" + training.ECN + " - " + ecnTitle + "</h3>"; trainingSection += "<table>"; trainingSection += "<tr><th>Name</th><th>Date Assigned</th></tr>"; List<TrainingAssignment> 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") : "<not available>"; trainingSection += "<tr><td>" + assignment.FullName + "</td><td>" + DateAssigned + "</td>"; trainingSection += "</tr>"; } } trainingSection += "</table>"; if (trainingSectionUserCount > 0) emailBody += trainingSection; } string recipientEmail = ""; List<string> ccRecipients = emailList; EmailUtilities.SendNotification("MesaFabApproval@infineon.com", ccRecipients, "Open Training Report - OOO", emailBody); }); } }