예제 #1
0
        // 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"));
            }
        }
예제 #2
0
        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());
            }
        }