public RouteListAnalysisViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices) : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            Entity.ObservableAddresses.PropertyOfElementChanged += ObservableAddressesOnPropertyOfElementChanged;

            undeliveryViewOpener = new UndeliveriesViewOpener();
            employeeService      = VodovozGtkServicesConfig.EmployeeService;
            CurrentEmployee      = employeeService.GetEmployeeForUser(UoW, CurrentUser.Id);

            if (CurrentEmployee == null)
            {
                AbortOpening("Ваш пользователь не привязан к действующему сотруднику, вы не можете открыть " +
                             "диалог разбора МЛ, так как некого указывать в качестве логиста.", "Невозможно открыть разбор МЛ");
            }

            employeeSelectorFactory = new DefaultEntityAutocompleteSelectorFactory <Employee, EmployeesJournalViewModel, EmployeeFilterViewModel>(commonServices);

            LogisticanSelectorFactory =
                new EntityAutocompleteSelectorFactory <EmployeesJournalViewModel>(typeof(Employee),
                                                                                  () => {
                var filter = new EmployeeFilterViewModel {
                    Status = EmployeeStatus.IsWorking, RestrictCategory = EmployeeCategory.office
                };
                return(new EmployeesJournalViewModel(filter, UnitOfWorkFactory, CommonServices));
            });

            DriverSelectorFactory =
                new EntityAutocompleteSelectorFactory <EmployeesJournalViewModel>(typeof(Employee),
                                                                                  () => {
                var filter = new EmployeeFilterViewModel {
                    Status = EmployeeStatus.IsWorking, RestrictCategory = EmployeeCategory.driver
                };
                return(new EmployeesJournalViewModel(filter, UnitOfWorkFactory, CommonServices));
            });

            ForwarderSelectorFactory =
                new EntityAutocompleteSelectorFactory <EmployeesJournalViewModel>(typeof(Employee),
                                                                                  () => {
                var filter = new EmployeeFilterViewModel {
                    Status = EmployeeStatus.IsWorking, RestrictCategory = EmployeeCategory.forwarder
                };
                return(new EmployeesJournalViewModel(filter, UnitOfWorkFactory, CommonServices));
            });

            TabName = $"Диалог разбора {Entity.Title}";
        }
        public FinesJournalViewModel(
            FineFilterViewModel filterViewModel,
            IUndeliveriesViewOpener undeliveryViewOpener,
            IEmployeeService employeeService,
            IEntitySelectorFactory employeeSelectorFactory,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices
            ) : base(filterViewModel, unitOfWorkFactory, commonServices)
        {
            this.undeliveryViewOpener    = undeliveryViewOpener ?? throw new ArgumentNullException(nameof(undeliveryViewOpener));
            this.employeeService         = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
            this.employeeSelectorFactory = employeeSelectorFactory ?? throw new ArgumentNullException(nameof(employeeSelectorFactory));
            this.commonServices          = commonServices ?? throw new ArgumentNullException(nameof(commonServices));

            TabName = "Журнал штрафов";
        }
Esempio n. 3
0
 public FineViewModel(
     IEntityUoWBuilder uowBuilder,
     IUnitOfWorkFactory uowFactory,
     IUndeliveriesViewOpener undeliveryViewOpener,
     IEmployeeService employeeService,
     IEntitySelectorFactory employeeSelectorFactory,
     ICommonServices commonServices
     ) : base(uowBuilder, uowFactory, commonServices)
 {
     this.uowFactory              = uowFactory ?? throw new ArgumentNullException(nameof(uowFactory));
     this.undeliveryViewOpener    = undeliveryViewOpener ?? throw new ArgumentNullException(nameof(undeliveryViewOpener));
     this.employeeService         = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
     this.employeeSelectorFactory = employeeSelectorFactory ?? throw new ArgumentNullException(nameof(employeeSelectorFactory));
     CreateCommands();
     ConfigureEntityPropertyChanges();
     UpdateEmployeeList();
 }
Esempio n. 4
0
        public ComplaintViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory uowFactory,
            ICommonServices commonServices,
            IUndeliveriesViewOpener undeliveryViewOpener,
            IEmployeeService employeeService,
            IEntityAutocompleteSelectorFactory employeeSelectorFactory,
            IEntityAutocompleteSelectorFactory counterpartySelectorFactory,
            IFilePickerService filePickerService,
            ISubdivisionRepository subdivisionRepository,
            IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory,
            INomenclatureRepository nomenclatureRepository,
            IUserRepository userRepository
            ) : base(uowBuilder, uowFactory, commonServices)
        {
            this.filePickerService      = filePickerService ?? throw new ArgumentNullException(nameof(filePickerService));
            this.subdivisionRepository  = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository));
            CounterpartySelectorFactory = counterpartySelectorFactory ?? throw new ArgumentNullException(nameof(counterpartySelectorFactory));
            NomenclatureSelectorFactory = nomenclatureSelectorFactory ?? throw new ArgumentNullException(nameof(nomenclatureSelectorFactory));
            this.commonServices         = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
            this.undeliveryViewOpener   = undeliveryViewOpener ?? throw new ArgumentNullException(nameof(undeliveryViewOpener));
            EmployeeService             = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
            NomenclatureRepository      = nomenclatureRepository ?? throw new ArgumentNullException(nameof(nomenclatureRepository));
            UserRepository = userRepository ?? throw new ArgumentNullException(nameof(userRepository));
            this.employeeSelectorFactory = employeeSelectorFactory ?? throw new ArgumentNullException(nameof(employeeSelectorFactory));
            Entity.ObservableComplaintDiscussions.ElementChanged     += ObservableComplaintDiscussions_ElementChanged;
            Entity.ObservableComplaintDiscussions.ListContentChanged += ObservableComplaintDiscussions_ListContentChanged;
            Entity.ObservableFines.ListContentChanged += ObservableFines_ListContentChanged;

            if (uowBuilder.IsNewEntity)
            {
                AbortOpening("Невозможно создать новую рекламацию из текущего диалога, необходимо использовать диалоги создания");
            }

            if (CurrentEmployee == null)
            {
                AbortOpening("Невозможно открыть рекламацию так как к вашему пользователю не привязан сотрудник");
            }

            ConfigureEntityChangingRelations();

            CreateCommands();
            TabName = $"Рекламация №{Entity.Id} от {Entity.CreationDate.ToShortDateString()}";
        }
        public ComplaintsJournalViewModel(
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IUndeliveriesViewOpener undeliveriesViewOpener,
            IEmployeeService employeeService,
            IEntityAutocompleteSelectorFactory employeeSelectorFactory,
            IEntityAutocompleteSelectorFactory counterpartySelectorFactory,
            IEntityAutocompleteSelectorFactory nomenclatureSelectorFactory,
            IRouteListItemRepository routeListItemRepository,
            ISubdivisionService subdivisionService,
            ComplaintFilterViewModel filterViewModel,
            IFilePickerService filePickerService,
            ISubdivisionRepository subdivisionRepository,
            IReportViewOpener reportViewOpener,
            IGtkTabsOpenerForRouteListViewAndOrderView gtkDialogsOpener,
            INomenclatureRepository nomenclatureRepository,
            IUserRepository userRepository
            ) : base(filterViewModel, unitOfWorkFactory, commonServices)
        {
            this.unitOfWorkFactory           = unitOfWorkFactory ?? throw new ArgumentNullException(nameof(unitOfWorkFactory));
            this.commonServices              = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
            this.undeliveriesViewOpener      = undeliveriesViewOpener ?? throw new ArgumentNullException(nameof(undeliveriesViewOpener));
            this.employeeService             = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
            this.employeeSelectorFactory     = employeeSelectorFactory ?? throw new ArgumentNullException(nameof(employeeSelectorFactory));
            this.counterpartySelectorFactory = counterpartySelectorFactory ?? throw new ArgumentNullException(nameof(counterpartySelectorFactory));
            this.nomenclatureSelectorFactory = nomenclatureSelectorFactory ?? throw new ArgumentNullException(nameof(nomenclatureSelectorFactory));
            this.filePickerService           = filePickerService ?? throw new ArgumentNullException(nameof(filePickerService));
            this.subdivisionRepository       = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository));
            this.routeListItemRepository     = routeListItemRepository ?? throw new ArgumentNullException(nameof(routeListItemRepository));
            this.subdivisionService          = subdivisionService ?? throw new ArgumentNullException(nameof(subdivisionService));
            this.reportViewOpener            = reportViewOpener ?? throw new ArgumentNullException(nameof(reportViewOpener));
            this.gtkDlgOpener           = gtkDialogsOpener ?? throw new ArgumentNullException(nameof(gtkDialogsOpener));
            this.nomenclatureRepository = nomenclatureRepository ?? throw new ArgumentNullException(nameof(nomenclatureRepository));
            this.userRepository         = userRepository ?? throw new ArgumentNullException(nameof(userRepository));

            TabName = "Журнал рекламаций";

            RegisterComplaints();

            var threadLoader = DataLoader as ThreadDataLoader <ComplaintJournalNode>;

            threadLoader.MergeInOrderBy(x => x.Id, true);

            FinishJournalConfiguration();

            FilterViewModel.SubdivisionService = subdivisionService;
            FilterViewModel.EmployeeService    = employeeService;

            var currentUserSettings        = userRepository.GetUserSettings(UoW, commonServices.UserService.CurrentUserId);
            var defaultSubdivision         = currentUserSettings.DefaultSubdivision;
            var currentEmployeeSubdivision = employeeService.GetEmployeeForUser(UoW, commonServices.UserService.CurrentUserId).Subdivision;

            FilterViewModel.CurrentUserSubdivision = currentEmployeeSubdivision;

            if (FilterViewModel.SubdivisionService.GetOkkId() == currentEmployeeSubdivision.Id)
            {
                FilterViewModel.ComplaintStatus = ComplaintStatuses.Checking;
            }
            else
            {
                if (currentUserSettings.UseEmployeeSubdivision)
                {
                    FilterViewModel.Subdivision = currentEmployeeSubdivision;
                }
                else
                {
                    FilterViewModel.Subdivision = defaultSubdivision;
                }

                FilterViewModel.ComplaintStatus = currentUserSettings.DefaultComplaintStatus;
            }

            UpdateOnChanges(
                typeof(Complaint),
                typeof(ComplaintGuiltyItem),
                typeof(ComplaintResult),
                typeof(Subdivision),
                typeof(ComplaintDiscussion),
                typeof(DeliveryPoint),
                typeof(Fine),
                typeof(Order),
                typeof(RouteList),
                typeof(RouteListItem)
                );
            this.DataLoader.ItemsListUpdated += (sender, e) => CurrentObjectChanged?.Invoke(this, new CurrentObjectChangedArgs(null));

            DataLoader.PostLoadProcessingFunc = BeforeItemsUpdated;
        }