private VMRosterModel CalculateRosterFields(VMRosterApplication vm, int _RotaAppID) { VAT_Shift shift = DDService.GetShift().Where(aa => aa.PShiftID == vm.ShiftID).First(); VMRosterModel _objmodel = new VMRosterModel(); try { int endPoint = 0; if (vm.RosterTypeID == 2) { endPoint = (vm.DateEnded.Value - vm.DateStarted.Value).Days + 1; } else if (vm.RosterTypeID == 3) { endPoint = 15; } else if (vm.RosterTypeID == 4) { endPoint = System.DateTime.DaysInMonth(vm.DateStarted.Value.Year, vm.DateEnded.Value.Month); } else if (vm.RosterTypeID == 4) { endPoint = 84; } _objmodel._RosterAttributes = new List <RosterAttributes>(); _objmodel.Criteria = ConvertCriteriaAbrvToFull("C"); _objmodel.RotaAppID = _RotaAppID; _objmodel.CriteriaValue = vm.CrewID; _objmodel.ShiftID = vm.ShiftID; _objmodel.StartDate = vm.DateStarted.Value; _objmodel.EndDate = vm.DateEnded.Value; _objmodel.NoOfDays = endPoint; _objmodel.CriteriaValueName = DDService.GetCrew().Where(aa => aa.PCrewID == vm.CrewID).First().CrewName; _objmodel.ShiftName = shift.ShiftName; DateTime _StartDate = vm.DateStarted.Value; for (int i = 1; i <= endPoint; i++) { string _day = _StartDate.Date.ToString("dddd"); string _date = _StartDate.Date.ToString("dd-MMM-yyyy"); string shiftStartTimeString = GetShiftStartTimeString(_StartDate.DayOfWeek, vm); TimeSpan shiftStartTime = ATAssistant.ConvertTime(shiftStartTimeString); int workMin = GetWorkMinutesForSpecificDates(_StartDate, vm); _objmodel._RosterAttributes.Add(new RosterAttributes { ID = i, DateString = _date, Day = _day, DutyDate = _StartDate.Date, DutyTimeString = shiftStartTimeString, DutyTime = shiftStartTime, WorkMin = workMin }); _StartDate = _StartDate.AddDays(1); } Expression <Func <RosterApplication, bool> > SpecificEntries = c => c.RotaAppID == _RotaAppID; RosterApplication rosterApp = RosterApplicationService.GetIndexSpecific(SpecificEntries).First(); rosterApp.DateEnded = _StartDate.AddDays(-1); RosterApplicationService.PostEdit(rosterApp); return(_objmodel); } catch (Exception ex) { return(_objmodel); } }