Beispiel #1
0
        public IEntityAutocompleteSelectorFactory CreateDefaultExpenseCategoryAutocompleteSelectorFactory()
        {
            var expenceCategoryfilterViewModel = new ExpenseCategoryJournalFilterViewModel();

            expenceCategoryfilterViewModel.ExcludedIds    = _excludedIds;
            expenceCategoryfilterViewModel.HidenByDefault = true;

            IFileChooserProvider chooserProvider = new FileChooser();
            var employeeFilter = new EmployeeFilterViewModel
            {
                Status = EmployeeStatus.IsWorking
            };
            var commonServices = ServicesConfig.CommonServices;

            var employeeJournalFactory    = new EmployeeJournalFactory(employeeFilter);
            var subdivisionJournalFactory = new SubdivisionJournalFactory();
            var expenseFactory            = new ExpenseCategorySelectorFactory();

            return(new ExpenseCategoryAutoCompleteSelectorFactory(
                       commonServices,
                       expenceCategoryfilterViewModel,
                       chooserProvider,
                       employeeJournalFactory,
                       subdivisionJournalFactory,
                       expenseFactory));
        }
Beispiel #2
0
    void ActionFuelTransferDocuments_Activated(object sender, System.EventArgs e)
    {
        ISubdivisionRepository       subdivisionRepository       = new SubdivisionRepository();
        IFuelRepository              fuelRepository              = new FuelRepository();
        ICounterpartyJournalFactory  counterpartyJournalFactory  = new CounterpartyJournalFactory();
        INomenclatureSelectorFactory nomenclatureSelectorFactory = new NomenclatureSelectorFactory();
        IEmployeeJournalFactory      employeeJournalFactory      = new EmployeeJournalFactory();
        ICarJournalFactory           carJournalFactory           = new CarJournalFactory();

        IFileChooserProvider fileChooserProvider  = new Vodovoz.FileChooser("Категория Расхода.csv");
        var expenseCategoryJournalFilterViewModel = new ExpenseCategoryJournalFilterViewModel();


        var fuelDocumentsJournalViewModel = new FuelDocumentsJournalViewModel(
            UnitOfWorkFactory.GetDefaultFactory,
            ServicesConfig.CommonServices,
            VodovozGtkServicesConfig.EmployeeService,
            subdivisionRepository,
            fuelRepository,
            counterpartyJournalFactory,
            nomenclatureSelectorFactory,
            employeeJournalFactory,
            carJournalFactory,
            new GtkReportViewOpener(),
            fileChooserProvider,
            expenseCategoryJournalFilterViewModel
            );

        tdiMain.AddTab(fuelDocumentsJournalViewModel);
    }
 public ExpenseCategoryAutoCompleteSelectorFactory(
     ICommonServices commonServices,
     ExpenseCategoryJournalFilterViewModel filterViewModel,
     IFileChooserProvider fileChooserProvider
     )
     : base(commonServices, filterViewModel, fileChooserProvider)
 {
 }
Beispiel #4
0
 public ExpenseCategoryAutoCompleteSelectorFactory(
     ICommonServices commonServices,
     ExpenseCategoryJournalFilterViewModel filterViewModel,
     IFileChooserProvider fileChooserProvider,
     IEmployeeJournalFactory employeeJournalFactory,
     ISubdivisionJournalFactory subdivisionJournalFactory)
     : base(commonServices, filterViewModel, fileChooserProvider, employeeJournalFactory, subdivisionJournalFactory)
 {
 }
 public ExpenseCategorySelectorFactory(ICommonServices commonServices,
                                       ExpenseCategoryJournalFilterViewModel filterViewModel,
                                       IFileChooserProvider fileChooserProvider
                                       )
 {
     this.commonServices = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
     filter = filterViewModel;
     this.fileChooserProvider = fileChooserProvider;
 }
Beispiel #6
0
        public IEntityAutocompleteSelectorFactory CreateSimpleExpenseCategoryAutocompleteSelectorFactory()
        {
            var expenceCategoryfilterViewModel = new ExpenseCategoryJournalFilterViewModel();

            expenceCategoryfilterViewModel.ExcludedIds    = _excludedIds;
            expenceCategoryfilterViewModel.HidenByDefault = true;

            var employeeFilter = new EmployeeFilterViewModel
            {
                Status = EmployeeStatus.IsWorking
            };

            var employeeJournalFactory    = new EmployeeJournalFactory(employeeFilter);
            var subdivisionJournalFactory = new SubdivisionJournalFactory();
            var expenseFactory            = new ExpenseCategorySelectorFactory();

            return(new SimpleEntitySelectorFactory <ExpenseCategory, ExpenseCategoryViewModel>(() =>
            {
                var journal = new SimpleEntityJournalViewModel <ExpenseCategory, ExpenseCategoryViewModel>(
                    x => x.Name,
                    () => new ExpenseCategoryViewModel(
                        EntityUoWBuilder.ForCreate(),
                        UnitOfWorkFactory.GetDefaultFactory,
                        ServicesConfig.CommonServices,
                        employeeJournalFactory,
                        subdivisionJournalFactory,
                        expenseFactory
                        ),
                    node => new ExpenseCategoryViewModel(
                        EntityUoWBuilder.ForOpen(node.Id),
                        UnitOfWorkFactory.GetDefaultFactory,
                        ServicesConfig.CommonServices,
                        employeeJournalFactory,
                        subdivisionJournalFactory,
                        expenseFactory
                        ),
                    UnitOfWorkFactory.GetDefaultFactory,
                    ServicesConfig.CommonServices
                    );
                journal.SelectionMode = JournalSelectionMode.Single;
                journal.SetFilter(expenceCategoryfilterViewModel,
                                  filter =>
                {
                    if (filter.ShowArchive)
                    {
                        return Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray()));
                    }

                    return Restrictions.Conjunction()
                    .Add(Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray())))
                    .Add(Restrictions.Eq(
                             Projections.Property <ExpenseCategory>(c => c.IsArchive), filter.ShowArchive));
                });
                return journal;
            }));
        }
 public ExpenseCategorySelectorFactory(ICommonServices commonServices,
                                       ExpenseCategoryJournalFilterViewModel filterViewModel,
                                       IFileChooserProvider fileChooserProvider,
                                       IEmployeeJournalFactory employeeJournalFactory,
                                       ISubdivisionJournalFactory subdivisionJournalFactory)
 {
     this.commonServices = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
     filter = filterViewModel;
     this.fileChooserProvider   = fileChooserProvider;
     _employeeJournalFactory    = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
     _subdivisionJournalFactory = subdivisionJournalFactory ?? throw new ArgumentNullException(nameof(subdivisionJournalFactory));
 }
Beispiel #8
0
        public FuelDocumentsJournalViewModel(
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IEmployeeService employeeService,
            ISubdivisionRepository subdivisionRepository,
            IFuelRepository fuelRepository,
            ICounterpartyJournalFactory counterpartyJournalFactory,
            INomenclatureSelectorFactory nomenclatureSelectorFactory,
            IEmployeeJournalFactory employeeJournalFactory,
            ISubdivisionJournalFactory subdivisionJournalFactory,
            ICarJournalFactory carJournalFactory,
            IReportViewOpener reportViewOpener,
            IFileChooserProvider fileChooserProvider,
            ExpenseCategoryJournalFilterViewModel expenseCategoryJournalFilterViewModel
            ) :
            base(unitOfWorkFactory, commonServices)
        {
            this.commonServices                        = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
            this.employeeService                       = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
            this.subdivisionRepository                 = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository));
            this.fuelRepository                        = fuelRepository ?? throw new ArgumentNullException(nameof(fuelRepository));
            this.counterpartyJournalFactory            = counterpartyJournalFactory ?? throw new ArgumentNullException(nameof(counterpartyJournalFactory));
            this.nomenclatureSelectorFactory           = nomenclatureSelectorFactory ?? throw new ArgumentNullException(nameof(nomenclatureSelectorFactory));
            this.employeeJournalFactory                = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
            _subdivisionJournalFactory                 = subdivisionJournalFactory ?? throw new ArgumentNullException(nameof(subdivisionJournalFactory));
            this.carJournalFactory                     = carJournalFactory ?? throw new ArgumentNullException(nameof(carJournalFactory));
            this.reportViewOpener                      = reportViewOpener ?? throw new ArgumentNullException(nameof(reportViewOpener));
            this.fileChooserProvider                   = fileChooserProvider ?? throw new ArgumentNullException(nameof(fileChooserProvider));
            this.expenseCategoryJournalFilterViewModel = expenseCategoryJournalFilterViewModel ?? throw new ArgumentNullException(nameof(expenseCategoryJournalFilterViewModel));


            TabName = "Журнал учета топлива";

            var loader = new ThreadDataLoader <FuelDocumentJournalNode>(unitOfWorkFactory);

            loader.MergeInOrderBy(x => x.CreationDate, true);
            DataLoader = loader;

            RegisterIncomeInvoice();
            RegisterTransferDocument();
            RegisterWriteoffDocument();

            FinishJournalConfiguration();

            UpdateOnChanges(
                typeof(FuelIncomeInvoice),
                typeof(FuelIncomeInvoiceItem),
                typeof(FuelTransferDocument),
                typeof(FuelWriteoffDocument),
                typeof(FuelWriteoffDocumentItem)
                );
        }
        public FuelWriteoffDocumentViewModel(
            IEntityUoWBuilder uoWBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            IEmployeeService employeeService,
            IFuelRepository fuelRepository,
            ISubdivisionRepository subdivisionRepository,
            ICommonServices commonServices,
            IEmployeeJournalFactory employeeJournalFactory,
            IReportViewOpener reportViewOpener,
            IFileChooserProvider fileChooserProvider,
            ExpenseCategoryJournalFilterViewModel expenseCategoryJournalFilterViewModel,
            ISubdivisionJournalFactory subdivisionJournalFactory
            )
            : base(uoWBuilder, unitOfWorkFactory, commonServices)
        {
            this.unitOfWorkFactory     = unitOfWorkFactory ?? throw new ArgumentNullException(nameof(unitOfWorkFactory));
            this.employeeService       = employeeService ?? throw new ArgumentNullException(nameof(employeeService));
            this.fuelRepository        = fuelRepository ?? throw new ArgumentNullException(nameof(fuelRepository));
            this.subdivisionRepository = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository));
            this.commonServices        = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
            EmployeeJournalFactory     = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
            this.reportViewOpener      = reportViewOpener ?? throw new ArgumentNullException(nameof(reportViewOpener));
            this.expenseCategoryJournalFilterViewModel = expenseCategoryJournalFilterViewModel ?? throw new ArgumentNullException(nameof(expenseCategoryJournalFilterViewModel));
            this.fileChooserProvider  = fileChooserProvider ?? throw new ArgumentNullException(nameof(fileChooserProvider));
            SubdivisionJournalFactory = subdivisionJournalFactory ?? throw new ArgumentNullException(nameof(subdivisionJournalFactory));

            CreateCommands();
            UpdateCashSubdivisions();

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

            if (UoW.IsNew)
            {
                Entity.Date    = DateTime.Now;
                Entity.Cashier = CurrentEmployee;
            }

            ValidationContext.ServiceContainer.AddService(typeof(IFuelRepository), fuelRepository);
            ConfigureEntries();
        }
        public ExpenseCategoryViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IFileChooserProvider fileChooserProvider,
            ExpenseCategoryJournalFilterViewModel journalFilterViewModel
            ) : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            ExpenseCategoryAutocompleteSelectorFactory =
                new ExpenseCategoryAutoCompleteSelectorFactory(commonServices, journalFilterViewModel, fileChooserProvider);

            if (uowBuilder.IsNewEntity)
            {
                TabName = "Создание новой категории расхода";
            }
            else
            {
                TabName = $"{Entity.Title}";
            }
        }
        public ExpenseCategoryViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IFileChooserProvider fileChooserProvider,
            ExpenseCategoryJournalFilterViewModel journalFilterViewModel,
            IEmployeeJournalFactory employeeJournalFactory,
            ISubdivisionJournalFactory subdivisionJournalFactory
            ) : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            if (employeeJournalFactory == null)
            {
                throw new ArgumentNullException(nameof(employeeJournalFactory));
            }

            if (subdivisionJournalFactory == null)
            {
                throw new ArgumentNullException(nameof(subdivisionJournalFactory));
            }

            ExpenseCategoryAutocompleteSelectorFactory =
                new ExpenseCategoryAutoCompleteSelectorFactory(
                    commonServices, journalFilterViewModel, fileChooserProvider, employeeJournalFactory, subdivisionJournalFactory);

            SubdivisionAutocompleteSelectorFactory =
                subdivisionJournalFactory.CreateDefaultSubdivisionAutocompleteSelectorFactory(
                    employeeJournalFactory.CreateEmployeeAutocompleteSelectorFactory());

            if (uowBuilder.IsNewEntity)
            {
                TabName = "Создание новой категории расхода";
            }
            else
            {
                TabName = $"{Entity.Title}";
            }
        }
Beispiel #12
0
        public CashRequestViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IFileChooserProvider fileChooserProvider,
            IEmployeeRepository employeeRepository,
            CashRepository cashRepository,
            ConsoleInteractiveService consoleInteractiveService
            ) : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            this.uowBuilder                = uowBuilder ?? throw new ArgumentNullException(nameof(uowBuilder));
            this.cashRepository            = cashRepository ?? throw new ArgumentNullException(nameof(cashRepository));
            this.unitOfWorkFactory         = unitOfWorkFactory ?? throw new ArgumentNullException(nameof(unitOfWorkFactory));
            this.consoleInteractiveService = consoleInteractiveService ?? throw new ArgumentNullException(nameof(consoleInteractiveService));
            var filterViewModel = new ExpenseCategoryJournalFilterViewModel {
                ExcludedIds    = CategoryRepository.ExpenseSelfDeliveryCategories(UoW).Select(x => x.Id),
                HidenByDefault = true
            };

            ExpenseCategoryAutocompleteSelectorFactory =
                new SimpleEntitySelectorFactory <ExpenseCategory, ExpenseCategoryViewModel>(
                    () =>
            {
                var expenseCategoryJournalViewModel =
                    new SimpleEntityJournalViewModel <ExpenseCategory, ExpenseCategoryViewModel>(
                        x => x.Name,
                        () => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForCreate(),
                            unitOfWorkFactory,
                            ServicesConfig.CommonServices,
                            fileChooserProvider,
                            filterViewModel
                            ),
                        node => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForOpen(node.Id),
                            unitOfWorkFactory,
                            ServicesConfig.CommonServices,
                            fileChooserProvider,
                            filterViewModel
                            ),
                        unitOfWorkFactory,
                        ServicesConfig.CommonServices
                        )
                {
                    SelectionMode = JournalSelectionMode.Single
                };
                expenseCategoryJournalViewModel.SetFilter(filterViewModel,
                                                          filter => Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray())));

                return(expenseCategoryJournalViewModel);
            });

            var expenseCategorySelectorFactory =
                CurrentEmployee = employeeRepository.GetEmployeeForCurrentUser(UoW);

            if (uowBuilder.IsNewEntity)
            {
                TabName = "Создание новой заявки на выдачу ДС";
            }
            else
            {
                TabName = $"{Entity.Title}";
            }

            int userId  = ServicesConfig.CommonServices.UserService.CurrentUserId;
            var isAdmin = ServicesConfig.CommonServices.UserService.GetCurrentUser(UoW).IsAdmin;

            IsAdminPanelVisible = isAdmin;

            var currentRole = getUserRole(userId);

            UserRole = currentRole;
            if (!dialogLoadedOnce)
            {
                savedUserRole    = UserRole;
                dialogLoadedOnce = true;
            }
            if (isAdmin)
            {
                UserRole = savedUserRole;
            }
            IsNewEntity = uowBuilder.IsNewEntity;
            ConfigureEntityChangingRelations();
        }
Beispiel #13
0
        void ConfigureDlg()
        {
            if (!UoW.IsNew)
            {
                enumcomboOperation.Sensitive         = false;
                specialListCmbOrganisation.Sensitive = false;
            }

            accessfilteredsubdivisionselectorwidget.OnSelected += Accessfilteredsubdivisionselectorwidget_OnSelected;
            if (Entity.RelatedToSubdivision != null)
            {
                accessfilteredsubdivisionselectorwidget.SelectIfPossible(Entity.RelatedToSubdivision);
            }

            enumcomboOperation.ItemsEnum = typeof(ExpenseType);
            enumcomboOperation.Binding.AddBinding(Entity, s => s.TypeOperation, w => w.SelectedItem).InitializeFromSource();

            var filterCasher = new EmployeeFilterViewModel {
                Status = EmployeeStatus.IsWorking
            };

            yentryCasher.RepresentationModel = new ViewModel.EmployeesVM(filterCasher);
            yentryCasher.Binding.AddBinding(Entity, s => s.Casher, w => w.Subject).InitializeFromSource();

            var filterEmployee = new EmployeeFilterViewModel {
                Status = EmployeeStatus.IsWorking
            };

            yentryEmployee.RepresentationModel = new ViewModel.EmployeesVM(filterEmployee);
            yentryEmployee.Binding.AddBinding(Entity, s => s.Employee, w => w.Subject).InitializeFromSource();
            yentryEmployee.ChangedByUser += (sender, e) => UpdateEmployeeBalaceInfo();

            ydateDocument.Binding.AddBinding(Entity, s => s.Date, w => w.Date).InitializeFromSource();
            ydateDocument.Sensitive = canEditDate;

            IFileChooserProvider fileChooserProvider = new FileChooser("Расход " + DateTime.Now + ".csv");
            var filterViewModel = new ExpenseCategoryJournalFilterViewModel {
                ExcludedIds    = CategoryRepository.ExpenseSelfDeliveryCategories(UoW).Select(x => x.Id),
                HidenByDefault = true
            };

            var expenseCategorySelectorFactory = new SimpleEntitySelectorFactory <ExpenseCategory, ExpenseCategoryViewModel>(
                () => {
                var expenseCategoryJournalViewModel = new SimpleEntityJournalViewModel <ExpenseCategory, ExpenseCategoryViewModel>(
                    x => x.Name,
                    () => new ExpenseCategoryViewModel(
                        EntityUoWBuilder.ForCreate(),
                        UnitOfWorkFactory.GetDefaultFactory,
                        ServicesConfig.CommonServices,
                        fileChooserProvider,
                        filterViewModel
                        ),
                    node => new ExpenseCategoryViewModel(
                        EntityUoWBuilder.ForOpen(node.Id),
                        UnitOfWorkFactory.GetDefaultFactory,
                        ServicesConfig.CommonServices,
                        fileChooserProvider,
                        filterViewModel
                        ),
                    UnitOfWorkFactory.GetDefaultFactory,
                    ServicesConfig.CommonServices
                    )
                {
                    SelectionMode = JournalSelectionMode.Single
                };
                expenseCategoryJournalViewModel.SetFilter(filterViewModel,
                                                          filter => Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray())));

                return(expenseCategoryJournalViewModel);
            }
                );

            entityVMEntryExpenseCategory.SetEntityAutocompleteSelectorFactory(expenseCategorySelectorFactory);
            entityVMEntryExpenseCategory.Binding.AddBinding(Entity, e => e.ExpenseCategory, w => w.Subject).InitializeFromSource();

            specialListCmbOrganisation.ShowSpecialStateNot = true;
            specialListCmbOrganisation.ItemsList           = UoW.GetAll <Organization>();
            specialListCmbOrganisation.Binding.AddBinding(Entity, e => e.Organisation, w => w.SelectedItem).InitializeFromSource();

            yspinMoney.Binding.AddBinding(Entity, s => s.Money, w => w.ValueAsDecimal).InitializeFromSource();

            ytextviewDescription.Binding.AddBinding(Entity, s => s.Description, w => w.Buffer.Text).InitializeFromSource();

            ExpenseType type = (ExpenseType)enumcomboOperation.SelectedItem;

            ylabelEmployeeWageBalance.Visible = type == ExpenseType.EmployeeAdvance ||
                                                type == ExpenseType.Salary ||
                                                (type == ExpenseType.Advance && (new EmployeeCategory[] { EmployeeCategory.office }).All(x => x != Entity?.Employee?.Category));
            UpdateEmployeeBalaceInfo();
            UpdateSubdivision();

            if (!CanEdit)
            {
                table1.Sensitive = false;
                accessfilteredsubdivisionselectorwidget.Sensitive = false;
                buttonSave.Sensitive          = false;
                ytextviewDescription.Editable = false;
            }
        }
        private void ConfigureEntityViewModelEntry()
        {
            var incomeCategoryFilter  = new IncomeCategoryJournalFilterViewModel();
            var expenseCategoryFilter = new ExpenseCategoryJournalFilterViewModel {
                ExcludedIds    = new CategoryRepository(new ParametersProvider()).ExpenseSelfDeliveryCategories(UoW).Select(x => x.Id),
                HidenByDefault = true
            };

            var commonServices = ServicesConfig.CommonServices;
            IFileChooserProvider chooserIncomeProvider  = new FileChooser("Приход " + DateTime.Now + ".csv");
            IFileChooserProvider chooserExpenseProvider = new FileChooser("Расход " + DateTime.Now + ".csv");
            var employeeJournalFactory    = new EmployeeJournalFactory();
            var subdivisionJournalFactory = new SubdivisionJournalFactory();

            var incomeCategoryAutocompleteSelectorFactory =
                new SimpleEntitySelectorFactory <IncomeCategory, IncomeCategoryViewModel>(
                    () =>
            {
                var incomeCategoryJournalViewModel =
                    new SimpleEntityJournalViewModel <IncomeCategory, IncomeCategoryViewModel>(
                        x => x.Name,
                        () => new IncomeCategoryViewModel(
                            EntityUoWBuilder.ForCreate(),
                            UnitOfWorkFactory.GetDefaultFactory,
                            commonServices,
                            chooserIncomeProvider,
                            incomeCategoryFilter,
                            employeeJournalFactory,
                            subdivisionJournalFactory
                            ),
                        node => new IncomeCategoryViewModel(
                            EntityUoWBuilder.ForOpen(node.Id),
                            UnitOfWorkFactory.GetDefaultFactory,
                            commonServices,
                            chooserIncomeProvider,
                            incomeCategoryFilter,
                            employeeJournalFactory,
                            subdivisionJournalFactory
                            ),
                        UnitOfWorkFactory.GetDefaultFactory,
                        commonServices
                        )
                {
                    SelectionMode = JournalSelectionMode.Single
                };
                return(incomeCategoryJournalViewModel);
            });


            var expenseCategoryAutocompleteSelectorFactory =
                new SimpleEntitySelectorFactory <ExpenseCategory, ExpenseCategoryViewModel>(
                    () =>
            {
                var expenseCategoryJournalViewModel =
                    new SimpleEntityJournalViewModel <ExpenseCategory, ExpenseCategoryViewModel>(
                        x => x.Name,
                        () => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForCreate(),
                            UnitOfWorkFactory.GetDefaultFactory,
                            ServicesConfig.CommonServices,
                            chooserExpenseProvider,
                            expenseCategoryFilter,
                            employeeJournalFactory,
                            subdivisionJournalFactory
                            ),
                        node => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForOpen(node.Id),
                            UnitOfWorkFactory.GetDefaultFactory,
                            ServicesConfig.CommonServices,
                            chooserExpenseProvider,
                            expenseCategoryFilter,
                            employeeJournalFactory,
                            subdivisionJournalFactory
                            ),
                        UnitOfWorkFactory.GetDefaultFactory,
                        ServicesConfig.CommonServices
                        )
                {
                    SelectionMode = JournalSelectionMode.Single
                };
                expenseCategoryJournalViewModel.SetFilter(expenseCategoryFilter,
                                                          filter => Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray())));

                return(expenseCategoryJournalViewModel);
            });

            entityVMEntryCashIncomeCategory.SetEntityAutocompleteSelectorFactory(incomeCategoryAutocompleteSelectorFactory);
            entityVMEntryCashExpenseCategory.SetEntityAutocompleteSelectorFactory(expenseCategoryAutocompleteSelectorFactory);
        }
Beispiel #15
0
        public CashRequestViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IFileChooserProvider fileChooserProvider,
            IEmployeeRepository employeeRepository,
            ICashRepository cashRepository,
            IEmployeeJournalFactory employeeJournalFactory,
            ISubdivisionJournalFactory subdivisionJournalFactory
            ) : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            this.uowBuilder           = uowBuilder ?? throw new ArgumentNullException(nameof(uowBuilder));
            _cashRepository           = cashRepository ?? throw new ArgumentNullException(nameof(cashRepository));
            EmployeeJournalFactory    = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
            SubdivisionJournalFactory = subdivisionJournalFactory ?? throw new ArgumentNullException(nameof(subdivisionJournalFactory));
            var filterViewModel = new ExpenseCategoryJournalFilterViewModel {
                ExcludedIds    = new CategoryRepository(new ParametersProvider()).ExpenseSelfDeliveryCategories(UoW).Select(x => x.Id),
                HidenByDefault = true
            };

            ExpenseCategoryAutocompleteSelectorFactory =
                new SimpleEntitySelectorFactory <ExpenseCategory, ExpenseCategoryViewModel>(
                    () =>
            {
                var expenseCategoryJournalViewModel =
                    new SimpleEntityJournalViewModel <ExpenseCategory, ExpenseCategoryViewModel>(
                        x => x.Name,
                        () => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForCreate(),
                            unitOfWorkFactory,
                            ServicesConfig.CommonServices,
                            fileChooserProvider,
                            filterViewModel,
                            EmployeeJournalFactory,
                            SubdivisionJournalFactory
                            ),
                        node => new ExpenseCategoryViewModel(
                            EntityUoWBuilder.ForOpen(node.Id),
                            unitOfWorkFactory,
                            ServicesConfig.CommonServices,
                            fileChooserProvider,
                            filterViewModel,
                            EmployeeJournalFactory,
                            SubdivisionJournalFactory
                            ),
                        unitOfWorkFactory,
                        ServicesConfig.CommonServices
                        )
                {
                    SelectionMode = JournalSelectionMode.Single
                };
                expenseCategoryJournalViewModel.SetFilter(filterViewModel,
                                                          filter => Restrictions.Not(Restrictions.In("Id", filter.ExcludedIds.ToArray())));

                return(expenseCategoryJournalViewModel);
            });

            var expenseCategorySelectorFactory =
                CurrentEmployee = employeeRepository.GetEmployeeForCurrentUser(UoW);

            if (uowBuilder.IsNewEntity)
            {
                TabName = "Создание новой заявки на выдачу ДС";
            }
            else
            {
                TabName = $"{Entity.Title}";
            }

            int userId = ServicesConfig.CommonServices.UserService.CurrentUserId;

            UserRoles = getUserRoles(userId);
            IsRoleChooserSensitive = UserRoles.Count() > 1;
            UserRole = UserRoles.First();

            IsNewEntity = uowBuilder.IsNewEntity;
            ConfigureEntityChangingRelations();
        }