public ActionResult OnGetRouteList() { // "[\"2020-11-01T05:00:00.000Z\",\"2020-11-02T05:00:00.000Z\"]" => // 202-11-01 2020-11-02 var date_range = Request.Query["data"].ToString().Replace("\"", "").Replace("[", "").Replace("]", "").Split(","); DateTime start_time = DateTime.ParseExact(date_range[0], "yyyy-MM-ddTHH:mm:ss.fffZ", null); DateTime end_time = DateTime.ParseExact(date_range[1], "yyyy-MM-ddTHH:mm:ss.fffZ", null); Console.WriteLine(" ------------------------------ Get custom route list------------------------------"); Console.WriteLine("Get datetime range from {0} to {1}", start_time, end_time); Console.WriteLine(" ------------------------------ Get custom route list ------------------------------"); /* Get Route_Call for different weeks */ Route_Call_All = _context.RouteCall .Include(c => c.Route) .ThenInclude(c => c.Machine_Train_List) .Where(c => c.CompleteDate == null) .AsNoTracking() .ToList(); List <RouteCall> Custom_Route_Call_List = Route_Call_All .Where(r => r.ScheduleDate <= end_time) .Where(r => r.ScheduleDate >= start_time) .OrderBy(r => r.PkCallId) .ToList(); double route_hour = Custom_Route_Call_List.Sum(r => r.LabourHours); result = new CustomRouteList { route_list = Custom_Route_Call_List, hour = route_hour }; return(new JsonResult(result)); }
public async Task OnGetAsync() { GetUserName(); V_Route_Machines_All = await _context.VRouteMachines .AsNoTracking() .ToListAsync(); /* Get Route_Call for different weeks */ Route_Call_All = await _context.RouteCall .Include(c => c.Route) .ThenInclude(c => c.Machine_Train_List) .Where(c => c.CompleteDate == null) .AsNoTracking() .ToListAsync(); DayOfWeek weekStart = DayOfWeek.Monday; // or Sunday, or whenever DateTime startingDate = DateTime.Today; while (startingDate.DayOfWeek != weekStart) { startingDate = startingDate.AddDays(-1); } for (int i = 0; i < 4; ++i) { DateTime weekstartdate = startingDate.AddDays(-7 + 7 * i); DateTime weekenddate = startingDate.AddDays(-1 + 7 * i); Route_Call_Week_List.Add(Route_Call_All .Where(r => r.ScheduleDate <= weekenddate) .Where(r => r.ScheduleDate >= weekstartdate) //.OrderBy(r => r.RouteId) .ToList()); WeekHourList.Add(Route_Call_Week_List[i].Sum(r => r.LabourHours)); for (int j = 0; j < Route_Call_Week_List[i].Count; ++j) { var r_id = Route_Call_Week_List[i][j].FkRouteId; if (!Machine_List_Dict.ContainsKey(r_id)) { var Machine_List = V_Route_Machines_All .Where(m => m.RouteId == r_id) .ToList(); Machine_List_Dict.Add(r_id, Machine_List); } } } /* Get Route_Call for different weeks */ }