// GET http://localhost:8005/api/sync/vehicles/{serialNo} public IHttpActionResult GetAllMarketRoutes(DateTime reqDate, string serialNo) { serialNo = serialNo.Trim().ToLower(); var terminal = TerminalServices.GetTerminalBySerial(serialNo); if (terminal == null) { return(Unauthorized()); } var result = new MarketRouteSyncCollection(); var allRoutes = _vanSalesService.GetAllMarketRoutes(terminal.TenantId, reqDate); var results = new List <MarketRouteSync>(); foreach (var p in allRoutes) { var sync = new MarketRouteSync(); var mapped = Mapper.Map(p, sync); results.Add(mapped); } if (results.Count > 1) { results = results.Take(1).ToList(); } result.Count = results.Count; result.TerminalLogId = TerminalServices.CreateTerminalLog(reqDate, terminal.TenantId, results.Count, terminal.TerminalId, TerminalLogTypeEnum.MarketRoutesSync).TerminalLogId; result.MarketRoutes = results; return(Ok(result)); }
public IHttpActionResult GetMyMarketRoutes(DateTime reqDate, string serialNo) { serialNo = serialNo.Trim().ToLower(); var terminal = TerminalServices.GetTerminalBySerial(serialNo); if (terminal == null) { return(Unauthorized()); } var result = new MarketRouteSyncCollection(); var warehouseId = terminal.WarehouseId; var mobileLocation = TerminalServices.GetMobileLocationByTerminalId(terminal.TerminalId); if (mobileLocation != null) { warehouseId = mobileLocation.WarehouseId; } var allRoutes = _vanSalesService.GetMyMarketRoutes(terminal.TenantId, warehouseId, reqDate); var results = new List <MarketRouteSync>(); foreach (var p in allRoutes) { DateTime nextAppointment = DateTime.MinValue; DateTime lastAppointment = DateTime.MinValue; RecurrenceInfo info = new RecurrenceInfo(); var appt = _vanSalesService.GetMarketRouteScheduleById(p.RouteScheduleId); Appointment newAppt = DevExpress.XtraScheduler.Compatibility.StaticAppointmentFactory.CreateAppointment(AppointmentType.Pattern); newAppt.RecurrenceInfo.FromXml(appt.RecurrenceInfo); newAppt.Start = appt.StartTime; newAppt.End = appt.EndTime; if (appt.RecurrenceInfo != null) { info.FromXml(appt.RecurrenceInfo); OccurrenceCalculator calc = OccurrenceCalculator.CreateInstance(info); nextAppointment = calc.FindNextOccurrenceTimeAfter(new DateTime(reqDate.Year, reqDate.Month, reqDate.Day, 0, 0, 0), newAppt); if (!newAppt.SameDay && nextAppointment.Date != reqDate.Date) { var reqDate2 = reqDate.AddDays(-1); nextAppointment = calc.FindNextOccurrenceTimeAfter(new DateTime(reqDate2.Year, reqDate2.Month, reqDate2.Day, 0, 0, 0), newAppt); } } else { nextAppointment = newAppt.Start; if (!newAppt.SameDay && nextAppointment.Date != reqDate.Date) { nextAppointment = newAppt.Start.AddDays(1); } } if (reqDate.Date == nextAppointment.Date && appt.WarehouseId == warehouseId || (!newAppt.SameDay && reqDate.Date == nextAppointment.Date.AddDays(1))) { var sync = new MarketRouteSync(); var mapped = Mapper.Map(p, sync); results.Add(mapped); } } result.Count = results.Count; result.TerminalLogId = TerminalServices.CreateTerminalLog(reqDate, terminal.TenantId, results.Count, terminal.TerminalId, TerminalLogTypeEnum.DayMarketRouteSync).TerminalLogId; result.MarketRoutes = results; return(Ok(result)); }