// GET: Supervisor/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(RedirectToAction("Index")); } if (IsLoggedIn() && IsAuthorized()) { var user = db.User.Where(u => u.recordID == id).FirstOrDefault(); var supervisor = db.Supervisor.Where(s => s.recordID == id).FirstOrDefault(); var fields = db.Fields.ToList(); var supervisorFields = db.Fields.Where(f => f.Supervisor.Any(s => s.recordID == id)).ToList(); var selectedFields = supervisorFields.Select(x => x.recordID).ToArray(); var supervisorUser = new SupervisorUserFieldViewModel { user = user, supervisor = supervisor, SupervisorFields = supervisorFields, AllFields = fields, selectedFields = selectedFields }; return(View(supervisorUser)); } else { return(RedirectToAction("Login", "User")); } }
public ActionResult Edit(int id, SupervisorUserFieldViewModel supervisorUser) { try { // TODO: Add update logic here ModelState.Remove("User.firstName"); ModelState.Remove("User.lastName"); ModelState.Remove("User.email"); ModelState.Remove("User.password"); ModelState.Remove("User.confirmPassword"); if (ModelState.IsValid) { db.Configuration.ValidateOnSaveEnabled = false; var supervisor = db.Supervisor.Where(s => s.recordID == supervisorUser.supervisor.recordID).FirstOrDefault(); var user = db.User.Where(u => u.recordID == supervisorUser.user.recordID).FirstOrDefault(); var fields = new List <Fields>(); user.emailNotification = supervisorUser.user.emailNotification; if (supervisorUser.selectedFields != null) { foreach (int item in supervisorUser.selectedFields) { fields.Add(db.Fields.Where(f => f.recordID == item).FirstOrDefault()); } supervisor.Fields.Clear(); foreach (var item in fields) { supervisor.Fields.Add(item); } } if (supervisorUser.supervisor.daysForReport != null) { supervisor.daysForReport = supervisorUser.supervisor.daysForReport; } db.SaveChanges(); //Checking if scheduler is needed if (supervisor.daysForReport != "0") { //Checking for Quartz Scheduler var scheduler = HttpContext.Application["Scheduler"] as IScheduler; //Checking if the job is already added in the scheduler JobKey jobKey = JobKey.Create("report-job", "report-job-group"); var reportJob = scheduler.GetJobDetail(jobKey); if (reportJob == null) { //Preparing data string subject = "Your Ticketing Report"; var sysUser = db.User.Where(u => u.recordID == 999999).FirstOrDefault(); IJobDetail job = JobBuilder.Create <ReportJob>() .WithIdentity("report-job", "report-job-group") .Build(); job.JobDataMap["subject"] = subject; job.JobDataMap["user"] = user; job.JobDataMap["sysUser"] = sysUser; ITrigger trigger = TriggerBuilder.Create() .WithSimpleSchedule(s => s.WithIntervalInSeconds(60).RepeatForever()) .Build(); scheduler.ScheduleJob(job, trigger); } } } return(RedirectToAction("Index")); } catch { return(View()); } }