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)); }
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) { }
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; }
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)); }
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}"; } }
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(); }
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); }
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(); }