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
{
UserAccountDMO userDMO = new UserAccountDMO();
AdminDMO adminDMO = new AdminDMO();
TrainingDMO trainingDMO = new TrainingDMO();
ECN_DMO ecnDMO = new ECN_DMO();
public EmailUtilities emailer = new EmailUtilities();
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 List();
foreach (var 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;
emailer.SendNotification("MesaFabApproval@infineon.com", ccRecipients, "Mesa Approval Open Training Report - OOO", emailBody, "Open Training Report - OOO");
});
}
}
}