public WarningScheduleVo GetWarningInfo(int scheduleId, int courierId) { var listSchedule = _scheduleRepository.Get(o => o.CourierId == courierId) .OrderBy(o => o.StartTime.ToString("yyyyMMddHHmm")) .ThenBy(o => o.CreatedOn.GetValueOrDefault().ToString("yyyyMMddHHmm")) .ToList(); Schedule preivousSchedule = null; var result = new WarningScheduleVo(); foreach (var schedule in listSchedule) { if (preivousSchedule != null) { if (schedule.Id == scheduleId) { return(new WarningScheduleVo { PreviousName = preivousSchedule.Name, PreviousStartTime = preivousSchedule.StartTime, PreviousEndTime = preivousSchedule.EndTime, Name = schedule.Name, StartTime = schedule.StartTime, EndTime = schedule.EndTime, }); } } preivousSchedule = schedule; result = new WarningScheduleVo { PreviousName = preivousSchedule.Name, PreviousStartTime = preivousSchedule.StartTime, PreviousEndTime = preivousSchedule.EndTime, Name = schedule.Name, StartTime = schedule.StartTime, EndTime = schedule.EndTime, }; } return(result); }
private List <Schedule> WarningProcess(Schedule entity, out WarningScheduleVo warningScheduleVo, bool isDelete, int idDelete) { var offset = DateTimeHelper.GetClientTimeZone(); var currentDateParse = DateTime.UtcNow; var clientDate = currentDateParse.AddMinutes(offset); var startNowTime = currentDateParse.AddMilliseconds(-1 * clientDate.Subtract(new DateTime(clientDate.Year, clientDate.Month, clientDate.Day)).TotalMilliseconds); warningScheduleVo = null; var listSchedule = _scheduleRepository.GetScheduleByCourier(entity.CourierId, entity.DurationEnd); if (listSchedule.Count == 0) { return(new List <Schedule> { entity }); } //With Create if (entity.Id == 0) { listSchedule.Add(entity); } //With Update else { Func <Schedule, bool> condition = o => o.Id == entity.Id; if (listSchedule.FirstOrDefault(condition) != null) { listSchedule.First(condition).Name = entity.Name; listSchedule.First(condition).LocationFrom = entity.LocationFrom; listSchedule.First(condition).LocationTo = entity.LocationTo; listSchedule.First(condition).Frequency = entity.Frequency; listSchedule.First(condition).StartTime = entity.StartTime; listSchedule.First(condition).EndTime = entity.EndTime; listSchedule.First(condition).DurationStart = entity.DurationStart; listSchedule.First(condition).DurationEnd = entity.DurationEnd; listSchedule.First(condition).IsNoDurationEnd = entity.IsNoDurationEnd; listSchedule.First(condition).Description = entity.Description; listSchedule.First(condition).TimeZone = entity.TimeZone; } } foreach (var item in listSchedule) { if (item.Id == 0) { item.CopyCreatedOn = DateTime.UtcNow; } else { item.CopyCreatedOn = item.CreatedOn; } } listSchedule = listSchedule.Where(w => w.IsNoDurationEnd == true || DateTimeHelper.CompareDateTime(w.DurationEnd.GetValueOrDefault(), startNowTime) >= 0) .OrderBy(o => o.StartTime.ToString("yyyyMMddHHmm")) .ThenBy(o => o.CopyCreatedOn.GetValueOrDefault().ToString("yyyyMMddHHmm")) .ToList(); Schedule preivousSchedule = null; foreach (var schedule in listSchedule) { if (schedule.Id == idDelete && isDelete) { schedule.IsDeleted = true; } else { if (preivousSchedule != null && !schedule.IsDeleted) { schedule.IsWarning = CheckStartTimeAndTime(preivousSchedule, schedule); if (schedule.IsWarning.GetValueOrDefault()) { if (schedule.Id == entity.Id) { warningScheduleVo = new WarningScheduleVo { PreviousName = preivousSchedule.Name, PreviousStartTime = preivousSchedule.StartTime, PreviousEndTime = preivousSchedule.EndTime, Name = schedule.Name, StartTime = schedule.StartTime, EndTime = schedule.EndTime, }; } } } else if (preivousSchedule == null && !schedule.IsDeleted) { schedule.IsWarning = false; } preivousSchedule = schedule; } } return(listSchedule); }
public ActionResult WarningInfo(int scheduleId, int courierId) { WarningScheduleVo obj = _scheduleService.GetWarningInfo(scheduleId, courierId); return(Json(obj, JsonRequestBehavior.AllowGet)); }