diff --git a/Fab2ApprovalSystem/Controllers/TrainingController.cs b/Fab2ApprovalSystem/Controllers/TrainingController.cs
index 459cce6..891aafa 100644
--- a/Fab2ApprovalSystem/Controllers/TrainingController.cs
+++ b/Fab2ApprovalSystem/Controllers/TrainingController.cs
@@ -11,7 +11,7 @@ using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using Fab2ApprovalSystem.Misc;
using System.Configuration;
-
+using System.Threading.Tasks;
namespace Fab2ApprovalSystem.Controllers
{
@@ -762,68 +762,6 @@ namespace Fab2ApprovalSystem.Controllers
}
return isSuccess;
}
-
- public bool RunOOOTrainingReport()
- {
- bool isSuccess = false;
- try
- {
- 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");
- isSuccess = true;
- }
- catch
- {
- isSuccess = false;
- }
- return isSuccess;
- }
}
}
diff --git a/Fab2ApprovalSystem/Controllers/WebAPIController.cs b/Fab2ApprovalSystem/Controllers/WebAPIController.cs
index 37dac3b..dec2786 100644
--- a/Fab2ApprovalSystem/Controllers/WebAPIController.cs
+++ b/Fab2ApprovalSystem/Controllers/WebAPIController.cs
@@ -45,15 +45,6 @@ namespace Fab2ApprovalSystem.Controllers
{
return request.CreateResponse(HttpStatusCode.InternalServerError);
}
- case "TrainingReportOOO":
- if (trainingFunctions.RunOOOTrainingReport())
- {
- return request.CreateResponse(HttpStatusCode.OK);
- }
- else
- {
- return request.CreateResponse(HttpStatusCode.InternalServerError);
- }
case "CARDueDates":
if (carFunctions.ProcessCARDueDates())
{
diff --git a/Fab2ApprovalSystem/Fab2ApprovalSystem.csproj b/Fab2ApprovalSystem/Fab2ApprovalSystem.csproj
index 71d89b2..cd6df68 100644
--- a/Fab2ApprovalSystem/Fab2ApprovalSystem.csproj
+++ b/Fab2ApprovalSystem/Fab2ApprovalSystem.csproj
@@ -130,6 +130,7 @@
Global.asax
+
@@ -248,6 +249,7 @@
+
@@ -1966,6 +1968,9 @@
1.0.0
+
+ 3.7.0
+
1.2.0
diff --git a/Fab2ApprovalSystem/Global.asax.cs b/Fab2ApprovalSystem/Global.asax.cs
index e6285b6..52a9a82 100644
--- a/Fab2ApprovalSystem/Global.asax.cs
+++ b/Fab2ApprovalSystem/Global.asax.cs
@@ -11,6 +11,7 @@ using System.Web.Security;
using System.Configuration;
using Fab2ApprovalSystem.DMO;
using System.Web.Http;
+using Fab2ApprovalSystem.JobSchedules;
namespace Fab2ApprovalSystem
{
@@ -45,8 +46,8 @@ namespace Fab2ApprovalSystem
//GlobalVars.AttachmentUrl = connectionstring.ToUpper().Contains("TEST") ? @"http://" + DevAttachmentUrl + "/" : @"http://" + ProdAttachmentUrl + "/"; ;
GlobalVars.hostURL = connectionstring.ToUpper().Contains("TEST") ? @"http://" + DevWebSiteUrl : @"http://" + ProdWebSiteUrl ;
-
+ OOOTrainingReportJobSchedule.Start();
}
diff --git a/Fab2ApprovalSystem/JobSchedules/OOOTrainingReportJobSchedule.cs b/Fab2ApprovalSystem/JobSchedules/OOOTrainingReportJobSchedule.cs
new file mode 100644
index 0000000..9040207
--- /dev/null
+++ b/Fab2ApprovalSystem/JobSchedules/OOOTrainingReportJobSchedule.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using Fab2ApprovalSystem.Workers;
+using Quartz.Impl;
+using Quartz;
+
+namespace Fab2ApprovalSystem.JobSchedules
+{
+ public class OOOTrainingReportJobSchedule
+ {
+ public static void Start()
+ {
+ ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
+
+ IScheduler scheduler = schedulerFactory.GetScheduler().GetAwaiter().GetResult();
+ scheduler.Start();
+
+ IJobDetail oooTrainingReportJob = JobBuilder.Create()
+ .WithIdentity("oooTrainingReportJob", "trainingReportGroup")
+ .Build();
+
+ ITrigger oooTrainingReportTrigger = TriggerBuilder.Create()
+ .WithIdentity("oooTrainingReportTrigger", "trainingReportGroup")
+ .WithCronSchedule("0 0 12 ? * 2 *")
+ .ForJob(oooTrainingReportJob)
+ .Build();
+
+ scheduler.ScheduleJob(oooTrainingReportJob, oooTrainingReportTrigger);
+ }
+ }
+}
diff --git a/Fab2ApprovalSystem/Jobs/OOOTrainingReportJob.cs b/Fab2ApprovalSystem/Jobs/OOOTrainingReportJob.cs
new file mode 100644
index 0000000..5c6f584
--- /dev/null
+++ b/Fab2ApprovalSystem/Jobs/OOOTrainingReportJob.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Web;
+using Fab2ApprovalSystem.Controllers;
+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");
+ });
+ }
+ }
+}
diff --git a/Fab2ApprovalSystem/Startup.cs b/Fab2ApprovalSystem/Startup.cs
index c56738f..65ba6aa 100644
--- a/Fab2ApprovalSystem/Startup.cs
+++ b/Fab2ApprovalSystem/Startup.cs
@@ -1,6 +1,9 @@
using System.Web.Http;
+using Fab2ApprovalSystem.Workers;
using Microsoft.Owin;
using Owin;
+using Quartz;
+using Quartz.Impl;
[assembly: OwinStartupAttribute(typeof(Fab2ApprovalSystem.Startup))]
namespace Fab2ApprovalSystem
@@ -10,6 +13,22 @@ namespace Fab2ApprovalSystem
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
+
+ ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
+
+ IScheduler scheduler = schedulerFactory.GetScheduler().GetAwaiter().GetResult();
+
+ IJobDetail oooTrainingReportJob = JobBuilder.Create()
+ .WithIdentity("oooTrainingReportJob", "trainingReportGroup")
+ .Build();
+
+ ITrigger oooTrainingReportTrigger = TriggerBuilder.Create()
+ .WithIdentity("oooTrainingReportTrigger", "trainingReportGroup")
+ .WithCronSchedule("15 13 * * MON")
+ .ForJob(oooTrainingReportJob)
+ .Build();
+
+ scheduler.ScheduleJob(oooTrainingReportJob, oooTrainingReportTrigger);
}
public void Configuration(IAppBuilder app)
{