public HttpResponseMessage GenerateSchedule([FromUri] ScheduleParamsModel parameters) { //var dateFrom = (DateTime?)DateHelper.GetSunday(DateTime.Now); //var dateTo = (DateTime?)dateFrom.Value.AddDays(7).Date; //parameters.DateFrom = DateHelper.DateToString(dateFrom); //parameters.DateTo = DateHelper.DateToString(dateTo); var dateFrom = DateHelper.StringToDate(parameters.DateFrom); var dateTo = DateHelper.StringToDate(parameters.DateTo); var fakeId = 0; if (!dateFrom.HasValue || !dateTo.HasValue || string.IsNullOrEmpty(parameters.LinesIds)) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } var schedule = scheduleService.GenerateSchedule(parameters) .Select(x => new ScheduleItemModel(x)) .ToList(); return(Request.CreateResponse( HttpStatusCode.OK, new { rows = schedule })); }
public HttpResponseMessage GetSchedule([FromUri] ScheduleParamsModel parameters, bool _search, string nd, int rows, int page, string sidx, string sord, string filters = "") { var items = new List <ScheduleItemModel>(); var totalRecords = 0; var linesIdsList = parameters.LinesIds != null ? parameters.LinesIds.Split(',').Select(int.Parse) : null; var dateFromDt = DateHelper.StringToDate(parameters.DateFrom); var dateToDt = DateHelper.StringToDate(parameters.DateTo); using (var logic = new tblScheduleLogic()) { items = logic.GetPaged(linesIdsList, dateFromDt, dateToDt, _search, rows, page, sidx, sord, filters) .Select(z => new ScheduleItemModel(z)).ToList(); totalRecords = logic.Schedule.Count(); } return(Request.CreateResponse( HttpStatusCode.OK, new { total = (totalRecords + rows - 1) / rows, page, records = totalRecords, rows = items })); }
public IEnumerable <tblSchedule> GenerateSchedule(ScheduleParamsModel parameters) { var dateFrom = DateHelper.StringToDate(parameters.DateFrom); var dateTo = DateHelper.StringToDate(parameters.DateTo); var schedule = new List <tblSchedule>(); var fakeId = 0; if (!dateFrom.HasValue || !dateTo.HasValue || string.IsNullOrEmpty(parameters.LinesIds)) { return(null); } using (var logic = new LineLogic()) { var lines = logic.GetLinesByPlan(parameters.LinesIds.Split(',').Select(int.Parse)); foreach (var line in lines) { var dates = GetScheduleLineDates(line, dateFrom.Value, dateTo.Value, parameters); foreach (var date in dates) { var item = GenerateSingleSchedule(line, date, parameters.LeaveTime, parameters.ArriveTime); item.Id = fakeId++; schedule.Add(item); } } } return(schedule); }
public bool PopulateLinesPlan() { var linesIds = new List <int>(); var dateFrom = DateHelper.GetSunday(DateTime.Now); // DateTime.Now.AddDays(1).Date; var dateTo = dateFrom.AddDays(7).Date; using (var logic = new LineLogic()) { linesIds = logic.GetList().Select(x => x.Id).ToList(); } var parameters = new ScheduleParamsModel { LinesIds = string.Join(",", linesIds), DateFrom = DateHelper.DateToString(dateFrom), DateTo = DateHelper.DateToString(dateTo), ArriveTime = true, LeaveTime = true, Sun = true, Mon = true, Tue = true, Wed = true, Thu = true, Fri = true, Sut = true, }; using (var logic = new tblLinesPlanLogic()) { // 0 Step - Remove all plans that has no line attached to it logic.DeleteAllUnbindedPlans(); // 1 Step - Setting tblLines to LinesPlan state logic.SyncLinesToPlans(); } // 2 Step - Generate new schedule sets by tblLines state var schedule = GenerateSchedule(parameters).ToList(); // 3 Step - save new sets to tblSchedule return(SaveGeneratedShcedule(schedule, dateFrom, dateTo)); }
private List <DateTime> GetScheduleLineDates(IWeekDatedObject line, DateTime dateFrom, DateTime dateTo, ScheduleParamsModel parameters) { var dates = new List <DateTime>(); for (DateTime date = dateFrom; date <= dateTo; date = date.AddDays(1)) { switch (date.DayOfWeek) { case DayOfWeek.Sunday: if (line.Sun.HasValue && line.Sun.Value && parameters.Sun) { dates.Add(date); } break; case DayOfWeek.Monday: if (line.Mon.HasValue && line.Mon.Value && parameters.Mon) { dates.Add(date); } break; case DayOfWeek.Tuesday: if (line.Tue.HasValue && line.Tue.Value && parameters.Tue) { dates.Add(date); } break; case DayOfWeek.Wednesday: if (line.Wed.HasValue && line.Wed.Value && parameters.Wed) { dates.Add(date); } break; case DayOfWeek.Thursday: if (line.Thu.HasValue && line.Thu.Value && parameters.Thu) { dates.Add(date); } break; case DayOfWeek.Friday: if (line.Fri.HasValue && line.Fri.Value && parameters.Fri) { dates.Add(date); } break; case DayOfWeek.Saturday: if (line.Sut.HasValue && line.Sut.Value && parameters.Sut) { dates.Add(date); } break; } } return(dates); }