public ActionResult DeleteConfirmed(int id)
        {
            ScheduleParameters scheduleParameters = db.ScheduleParameters.Find(id);
            ShiftsPerWeek      SperW = db.ShiftsPerWeek.FirstOrDefault();

            HsDelete.SpecialFixedFshiftDeletion();
            if (scheduleParameters.Day == null)
            {
                SperW.NumOfShifts -= scheduleParameters.Morning * 7;
                SperW.NumOfShifts -= scheduleParameters.Afternoon * 7;
                SperW.NumOfShifts -= scheduleParameters.Night * 7;

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }
            else
            {
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DMorning);
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DAfternoon);
                SperW.NumOfShifts -= Convert.ToInt32(scheduleParameters.DNight);

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }

            db.ScheduleParameters.Remove(scheduleParameters);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult Create(ScheduleParameters scheduleParameters)
        {
            int TotalShifts = 0;
            int idnum       = 0;

            if (Convert.ToInt32(scheduleParameters.DMorning) < 0 || Convert.ToInt32(scheduleParameters.DAfternoon) < 0 || Convert.ToInt32(scheduleParameters.DNight) < 0)
            {
                return(RedirectToAction("DayCreate", new { whattodo = false }));
            }

            if (scheduleParameters.Day != null && db.ScheduleParameters.Select(o => o.Day != null).Count() > 7)
            {
                return(RedirectToAction("DayCreate", new { whattodo = true }));
            }
            if (scheduleParameters.Day == null & (Convert.ToInt32(scheduleParameters.DMorning) != 0 || Convert.ToInt32(scheduleParameters.DAfternoon) != 0 || Convert.ToInt32(scheduleParameters.DNight) != 0))
            {
                return(RedirectToAction("DayCreate", new { whattodo = true, require = true }));
            }
            if (db.ScheduleParameters.Where(d => d.Day == scheduleParameters.Day).Count() > 0)
            {
                return(RedirectToAction("DayCreate", new { dayexists = true }));
            }

            HsDelete.SpecialFixedFshiftDeletion();
            if (db.ShiftsPerWeek.Any())
            {
                idnum = db.ShiftsPerWeek.FirstOrDefault().ID;
            }

            if (scheduleParameters.Day == null)
            {
                if (idnum == 0)
                {
                    ShiftsPerWeek SPW = new ShiftsPerWeek
                    {
                        NumOfShifts = (scheduleParameters.Morning + scheduleParameters.Afternoon + scheduleParameters.Night) * 7
                    };
                    db.ShiftsPerWeek.Add(SPW);
                    db.SaveChanges();
                }
                else
                {
                    ShiftsPerWeek EditOldShift = db.ShiftsPerWeek.Find(idnum);
                    EditOldShift.NumOfShifts     = (scheduleParameters.Morning + scheduleParameters.Afternoon + scheduleParameters.Night) * 7;
                    db.Entry(EditOldShift).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else
            {
                scheduleParameters.DMorning   = scheduleParameters.DMorning == null ? 0 : scheduleParameters.DMorning;
                scheduleParameters.DAfternoon = scheduleParameters.DAfternoon == null ? 0 : scheduleParameters.DAfternoon;
                scheduleParameters.DNight     = scheduleParameters.DNight == null ? 0 : scheduleParameters.DNight;

                TotalShifts += Convert.ToInt32(scheduleParameters.DMorning);
                TotalShifts += Convert.ToInt32(scheduleParameters.DAfternoon);
                TotalShifts += Convert.ToInt32(scheduleParameters.DNight);

                TotalShifts += db.ShiftsPerWeek.Select(y => y.NumOfShifts).FirstOrDefault();
                ShiftsPerWeek SperW = db.ShiftsPerWeek.Find(idnum);
                SperW.NumOfShifts = TotalShifts;

                db.Entry(SperW).State = EntityState.Modified;
                db.SaveChanges();
            }

            if (ModelState.IsValid)
            {
                db.ScheduleParameters.Add(scheduleParameters);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(scheduleParameters));
        }
        public ActionResult Edit(ScheduleParameters scheduleParameters, bool?WhichEdit)
        {
            HsDelete.SpecialFixedFshiftDeletion();

            if (WhichEdit == true)
            {
                scheduleParameters.Morning   = db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault();
                scheduleParameters.Afternoon = db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault();
                scheduleParameters.Night     = db.ScheduleParameters.Select(x => x.Night).FirstOrDefault();

                if (scheduleParameters.MaxMorning < 0 || scheduleParameters.MaxAfternoon < 0 || scheduleParameters.MaxNight < 0)
                {
                    return(RedirectToAction("EditMax", new { scheduleParameters.ID, whattodo = true }));
                }
            }

            if (scheduleParameters.Day == null && WhichEdit == null)
            {
                if (scheduleParameters.Morning < 0 || scheduleParameters.Afternoon < 0 || scheduleParameters.Night < 0)
                {
                    return(RedirectToAction("EditWeek", new { scheduleParameters.ID, whattodo = true }));
                }

                scheduleParameters.MaxMorning   = db.ScheduleParameters.Select(x => x.MaxMorning).FirstOrDefault();
                scheduleParameters.MaxAfternoon = db.ScheduleParameters.Select(x => x.MaxAfternoon).FirstOrDefault();
                scheduleParameters.MaxNight     = db.ScheduleParameters.Select(x => x.MaxNight).FirstOrDefault();

                if (scheduleParameters.Morning != db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Morning - db.ScheduleParameters.Select(x => x.Morning).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.Afternoon != db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Afternoon - db.ScheduleParameters.Select(x => x.Afternoon).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.Night != db.ScheduleParameters.Select(x => x.Night).FirstOrDefault())
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += (scheduleParameters.Night - db.ScheduleParameters.Select(x => x.Night).FirstOrDefault()) * 7;

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            else if (scheduleParameters.Day != null && WhichEdit == null)
            {
                if (scheduleParameters.DMorning < 0 || scheduleParameters.DAfternoon < 0 || scheduleParameters.DNight < 0)
                {
                    return(RedirectToAction("EditDay", new { scheduleParameters.ID, whattodo = true }));
                }

                if (scheduleParameters.DMorning != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts    += Convert.ToInt32(scheduleParameters.DMorning);
                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.DAfternoon != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += Convert.ToInt32(scheduleParameters.DAfternoon);

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }

                if (scheduleParameters.DNight != 0)
                {
                    ShiftsPerWeek SperW = db.ShiftsPerWeek.FirstOrDefault();
                    SperW.NumOfShifts += Convert.ToInt32(scheduleParameters.DNight);

                    db.Entry(SperW).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }

            if (ModelState.IsValid)
            {
                db.Entry(scheduleParameters).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(scheduleParameters));
        }