Align .editorconfig files Move Controller logic to DMO classes GlobalVars.AppSettings = Models.AppSettings.GetFromConfigurationManager(); Question EditorConfig Project level editorconfig Format White Spaces AppSetting when EnvironmentVariable not set Corrective Actions Tests Schedule Actions Tests DMO Tests Controller Tests Get ready to use VSCode IDE
68 lines
3.1 KiB
C#
68 lines
3.1 KiB
C#
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);
|
|
});
|
|
}
|
|
} |