예제 #1
0
        //отрытие журнала недовоза на конкретном недовозе из диалога штрафов
        public void OpenFromFine(ITdiTab tab, Order oldOrder, DateTime?deliveryDate, UndeliveryStatus undeliveryStatus)
        {
            var undeliveredOrdersFilter = new UndeliveredOrdersFilterViewModel(
                ServicesConfig.CommonServices,
                new OrderSelectorFactory(),
                new EmployeeJournalFactory(),
                new CounterpartyJournalFactory(),
                new DeliveryPointJournalFactory(),
                new SubdivisionJournalFactory())
            {
                RestrictOldOrder          = oldOrder,
                RestrictOldOrderStartDate = deliveryDate,
                RestrictOldOrderEndDate   = deliveryDate,
                RestrictUndeliveryStatus  = undeliveryStatus
            };

            var dlg = new UndeliveredOrdersJournalViewModel(
                undeliveredOrdersFilter,
                UnitOfWorkFactory.GetDefaultFactory,
                ServicesConfig.CommonServices,
                new GtkTabsOpener(),
                new EmployeeJournalFactory(),
                VodovozGtkServicesConfig.EmployeeService,
                new UndeliveredOrdersJournalOpener(),
                new OrderSelectorFactory(),
                new UndeliveredOrdersRepository());

            tab.TabParent.AddSlaveTab(tab, dlg);
        }
예제 #2
0
        protected void OnBtnShowUndeliveryClicked(object sender, EventArgs e)
        {
            var undeliveredOrdersFilter = new UndeliveredOrdersFilterViewModel(
                ServicesConfig.CommonServices,
                new OrderSelectorFactory(),
                new EmployeeJournalFactory(),
                new CounterpartyJournalFactory(),
                new DeliveryPointJournalFactory(),
                new SubdivisionJournalFactory())
            {
                HidenByDefault            = true,
                RestrictOldOrder          = Entity.UndeliveredOrder.OldOrder,
                RestrictOldOrderStartDate = Entity.UndeliveredOrder.OldOrder.DeliveryDate,
                RestrictOldOrderEndDate   = Entity.UndeliveredOrder.OldOrder.DeliveryDate,
                RestrictUndeliveryStatus  = Entity.UndeliveredOrder.UndeliveryStatus
            };

            var dlg = new UndeliveredOrdersJournalViewModel(
                undeliveredOrdersFilter,
                UnitOfWorkFactory.GetDefaultFactory,
                ServicesConfig.CommonServices,
                new GtkTabsOpener(),
                new EmployeeJournalFactory(),
                VodovozGtkServicesConfig.EmployeeService,
                new UndeliveredOrdersJournalOpener(),
                new OrderSelectorFactory(),
                new UndeliveredOrdersRepository()
                );

            TabParent.AddSlaveTab(this, dlg);
        }
        protected override void CreatePopupActions()
        {
            bool IsOrder(object[] objs)
            {
                var selectedNodes = objs.Cast <RetailOrderJournalNode>();

                if (selectedNodes.Count() != 1)
                {
                    return(false);
                }

                return(selectedNodes.FirstOrDefault().EntityType == typeof(VodovozOrder));
            }

            PopupActionsList.Add(
                new JournalAction(
                    "Перейти в маршрутный лист",
                    selectedItems => selectedItems.Any(
                        x => AccessRouteListKeeping((x as RetailOrderJournalNode).Id)) && IsOrder(selectedItems),
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                var addresses     = UoW.Session.QueryOver <RouteListItem>()
                                    .Where(x => x.Order.Id.IsIn(selectedNodes.Select(n => n.Id).ToArray())).List();

                var routes = addresses.GroupBy(x => x.RouteList.Id);

                var tdiMain = MainClass.MainWin.TdiMain;

                foreach (var route in routes)
                {
                    tdiMain.OpenTab(
                        DialogHelper.GenerateDialogHashName <RouteList>(route.Key),
                        () => new RouteListKeepingDlg(route.Key, route.Select(x => x.Order.Id).ToArray())
                        );
                }
            }
                    )
                );
            PopupActionsList.Add(
                new JournalAction(
                    "Перейти в недовоз",
                    (selectedItems) => selectedItems.Any(
                        o => _undeliveredOrdersRepository.GetListOfUndeliveriesForOrder(
                            UoW, (o as RetailOrderJournalNode).Id).Any()) && IsOrder(selectedItems),
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                var order         = UoW.GetById <VodovozOrder>(selectedNodes.FirstOrDefault().Id);

                var undeliveredOrdersFilter = new UndeliveredOrdersFilterViewModel(
                    _commonServices,
                    _orderSelectorFactory,
                    _employeeJournalFactory,
                    _counterpartyJournalFactory,
                    _deliveryPointJournalFactory,
                    _subdivisionJournalFactory)
                {
                    HidenByDefault            = true,
                    RestrictOldOrder          = order,
                    RestrictOldOrderStartDate = order.DeliveryDate,
                    RestrictOldOrderEndDate   = order.DeliveryDate
                };

                var dlg = new UndeliveredOrdersJournalViewModel(
                    undeliveredOrdersFilter,
                    UnitOfWorkFactory,
                    _commonServices,
                    _gtkDialogsOpener,
                    _employeeJournalFactory,
                    _employeeService,
                    _undeliveredOrdersJournalOpener,
                    _orderSelectorFactory,
                    _undeliveredOrdersRepository
                    );

                MainClass.MainWin.TdiMain.AddTab(dlg);
            }
                    )
                );
            PopupActionsList.Add(
                new JournalAction(
                    "Открыть диалог закрытия",
                    (selectedItems) => selectedItems.Any(
                        x => AccessToRouteListClosing((x as RetailOrderJournalNode).Id)) && IsOrder(selectedItems),
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                var routeListIds  = selectedNodes.Select(x => x.Id).ToArray();
                var addresses     = UoW.Session.QueryOver <RouteListItem>()
                                    .Where(x => x.Order.Id.IsIn(routeListIds)).List();

                var routes  = addresses.GroupBy(x => x.RouteList.Id);
                var tdiMain = MainClass.MainWin.TdiMain;

                foreach (var rl in routes)
                {
                    tdiMain.OpenTab(
                        DialogHelper.GenerateDialogHashName <RouteList>(rl.Key),
                        () => new RouteListClosingDlg(rl.Key)
                        );
                }
            }
                    )
                );
            PopupActionsList.Add(
                new JournalAction(
                    "Открыть на Yandex картах(координаты)",
                    IsOrder,
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                foreach (var sel in selectedNodes)
                {
                    var order = UoW.GetById <VodovozOrder>(sel.Id);
                    if (order.DeliveryPoint == null || order.DeliveryPoint.Latitude == null || order.DeliveryPoint.Longitude == null)
                    {
                        continue;
                    }

                    System.Diagnostics.Process.Start(
                        string.Format(
                            CultureInfo.InvariantCulture,
                            "https://maps.yandex.ru/?ll={0},{1}&z=17",
                            order.DeliveryPoint.Longitude,
                            order.DeliveryPoint.Latitude
                            )
                        );
                }
            }
                    )
                );
            PopupActionsList.Add(
                new JournalAction(
                    "Открыть на Yandex картах(адрес)",
                    IsOrder,
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                foreach (var sel in selectedNodes)
                {
                    var order = UoW.GetById <VodovozOrder>(sel.Id);
                    if (order.DeliveryPoint == null)
                    {
                        continue;
                    }

                    System.Diagnostics.Process.Start(
                        string.Format(CultureInfo.InvariantCulture,
                                      "https://maps.yandex.ru/?text={0} {1} {2}",
                                      order.DeliveryPoint.City,
                                      order.DeliveryPoint.Street,
                                      order.DeliveryPoint.Building
                                      )
                        );
                }
            }
                    )
                );
            PopupActionsList.Add(
                new JournalAction(
                    "Открыть на карте OSM",
                    IsOrder,
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                foreach (var sel in selectedNodes)
                {
                    var order = UoW.GetById <VodovozOrder>(sel.Id);
                    if (order.DeliveryPoint == null || order.DeliveryPoint.Latitude == null || order.DeliveryPoint.Longitude == null)
                    {
                        continue;
                    }

                    System.Diagnostics.Process.Start(string.Format(CultureInfo.InvariantCulture, "http://www.openstreetmap.org/#map=17/{1}/{0}", order.DeliveryPoint.Longitude, order.DeliveryPoint.Latitude));
                }
            }
                    )
                );

            PopupActionsList.Add(
                new JournalAction(
                    "Повторить заказ",
                    IsOrder,
                    selectedItems => true,
                    (selectedItems) => {
                var selectedNodes = selectedItems.Cast <RetailOrderJournalNode>();
                var order         = UoW.GetById <VodovozOrder>(selectedNodes.FirstOrDefault().Id);

                var dlg = new OrderDlg();
                dlg.CopyLesserOrderFrom(order.Id);
                var tdiMain = MainClass.MainWin.TdiMain;
                tdiMain.OpenTab(
                    DialogHelper.GenerateDialogHashName <Domain.Orders.Order>(65656),
                    () => dlg
                    );
            }
                    )
                );
        }