Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
            }
        }