public void CancelOrder(Order order) { CallTaskWorker callTaskWorker = new CallTaskWorker( CallTaskSingletonFactory.GetInstance(), new CallTaskRepository(), _orderRepository, _employeeRepository, new BaseParametersProvider(_parametersProvider), ServicesConfig.CommonServices.UserService, ErrorReporter.Instance); if (order.OrderStatus == OrderStatus.InTravelList) { ValidationContext validationContext = new ValidationContext(order, null, new Dictionary <object, object> { { "NewStatus", OrderStatus.Canceled }, }); validationContext.ServiceContainer.AddService(_orderParametersProvider); validationContext.ServiceContainer.AddService(_deliveryRulesParametersProvider); if (!ServicesConfig.ValidationService.Validate(order, validationContext)) { return; } ITdiPage page = tdiNavigation.OpenTdiTab <UndeliveryOnOrderCloseDlg, Order, IUnitOfWork>(null, order, UoW); page.PageClosed += (sender, e) => { order.SetUndeliveredStatus(UoW, new BaseParametersProvider(_parametersProvider), callTaskWorker); var routeListItem = _routeListItemRepository.GetRouteListItemForOrder(UoW, order); if (routeListItem != null && routeListItem.Status != RouteListItemStatus.Canceled) { routeListItem.RouteList.SetAddressStatusWithoutOrderChange(routeListItem.Id, RouteListItemStatus.Canceled); routeListItem.StatusLastUpdate = DateTime.Now; routeListItem.SetOrderActualCountsToZeroOnCanceled(); UoW.Save(routeListItem.RouteList); UoW.Save(routeListItem); } UoW.Commit(); }; } else { order.ChangeStatusAndCreateTasks(OrderStatus.Canceled, callTaskWorker); UoW.Save(order); UoW.Commit(); } }
private IPage FindOrCreatePage(ITdiTab tab) { if (tab == null) { return(null); } ITdiPage page = AllPages.OfType <ITdiPage>().FirstOrDefault(x => x.TdiTab == tab); if (page == null) { page = new TdiTabPage(tab, null); pages.Add(page); } return((IPage)page); }
public void CancelOrder(Order order) { CallTaskWorker callTaskWorker = new CallTaskWorker( CallTaskSingletonFactory.GetInstance(), new CallTaskRepository(), orderRepository, employeeRepository, new BaseParametersProvider(), ServicesConfig.CommonServices.UserService, SingletonErrorReporter.Instance); if (order.OrderStatus == OrderStatus.InTravelList) { var valid = new QSValidator <Order>(order, new Dictionary <object, object> { { "NewStatus", OrderStatus.Canceled }, }); if (valid.RunDlgIfNotValid(null)) { return; } ITdiPage page = tdiNavigation.OpenTdiTab <UndeliveryOnOrderCloseDlg, Order, IUnitOfWork>(null, order, UoW); page.PageClosed += (sender, e) => { order.SetUndeliveredStatus(UoW, new BaseParametersProvider(), callTaskWorker); var routeListItem = routeListItemRepository.GetRouteListItemForOrder(UoW, order); if (routeListItem != null && routeListItem.Status != RouteListItemStatus.Canceled) { routeListItem.SetStatusWithoutOrderChange(RouteListItemStatus.Canceled); routeListItem.StatusLastUpdate = DateTime.Now; routeListItem.FillCountsOnCanceled(); UoW.Save(routeListItem); } UoW.Commit(); }; } else { order.ChangeStatusAndCreateTasks(OrderStatus.Canceled, callTaskWorker); UoW.Save(order); UoW.Commit(); } }