public void ConfigureDlg(IUnitOfWork uow, UserBase user) { var employee = _employeeRepository.GetEmployeesForUser(uow, user.Id).FirstOrDefault(); if (employee == null) { MessageDialogHelper.RunWarningDialog($"К пользователю \"{user.Name}\" не привязан сотрудник, невозможно будет установить права на подразделение для документов."); return; } if (employee.Subdivision == null) { MessageDialogHelper.RunWarningDialog($"Сотрудник \"{employee.ShortName}\" не привязан к подразделению, невозможно будет установить права на подразделение для документов."); return; } UoW = uow; employeeSubdivision = employee.Subdivision; this.user = user; model = new EntitySubdivisionForUserPermissionModel(UoW, employeeSubdivision, user); var subdivisionsVM = new SubdivisionsVM(UoW); treeviewSubdivisions.RepresentationModel = subdivisionsVM; treeviewSubdivisions.YTreeModel = new RecursiveTreeModel <SubdivisionVMNode>(subdivisionsVM.Result, x => x.Parent, x => x.Children); ytreeviewPermissions.ColumnsConfig = ColumnsConfigFactory.Create <EntitySubdivisionForUserPermission>() .AddColumn("Подразделение").AddTextRenderer(x => x.Subdivision.Name) .AddColumn("Документ").AddTextRenderer(x => x.TypeOfEntity.CustomName) .AddColumn("Просмотр").AddToggleRenderer(x => x.CanRead).Editing() .AddColumn("Создание").AddToggleRenderer(x => x.CanCreate).Editing() .AddColumn("Редактирование").AddToggleRenderer(x => x.CanUpdate).Editing() .AddColumn("Удаление").AddToggleRenderer(x => x.CanDelete).Editing() .Finish(); ytreeviewPermissions.ItemsDataSource = model.ObservablePermissionsList; ytreeviewEntities.ColumnsConfig = ColumnsConfigFactory.Create <TypeOfEntity>() .AddColumn("Документ").AddTextRenderer(x => x.CustomName) .Finish(); ytreeviewEntities.ItemsDataSource = model.ObservableTypeOfEntitiesList; searchSubdivisions.TextChanged += SearchSubdivisionsOnTextChanged; searchTypesOfEntities.TextChanged += SearchPermissionsOnTextChanged; treeviewSubdivisions.ExpandAll(); Sensitive = true; }
private void SearchSubdivisionsOnTextChanged(object sender, EventArgs e) { treeviewSubdivisions.CollapseAll(); //возвращаем начальное состояние var subdivisionsVM = new SubdivisionsVM(UoW); subdivisionsVM.UpdateNodes(); treeviewSubdivisions.RepresentationModel.ItemsList.Clear(); foreach (var item in subdivisionsVM.ItemsList) { treeviewSubdivisions.RepresentationModel.ItemsList.Add(item); } if (!searchSubdivisions.Text.IsEmpty()) { model.SearchSubdivisions(searchSubdivisions.Text, treeviewSubdivisions); } treeviewSubdivisions.ExpandAll(); }
private void ConfigureDlg() { subdivisionentitypermissionwidget.ConfigureDlg(ViewModel.UoW, ViewModel.Entity); subdivisionentitypermissionwidget.Sensitive = ViewModel.CanEdit; yentryName.Binding.AddBinding(ViewModel.Entity, e => e.Name, w => w.Text).InitializeFromSource(); yentryName.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryShortName.Binding.AddBinding(ViewModel.Entity, e => e.ShortName, w => w.Text).InitializeFromSource(); yentryShortName.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); yentryrefParentSubdivision.SubjectType = typeof(Subdivision); yentryrefParentSubdivision.Binding.AddBinding(ViewModel.Entity, e => e.ParentSubdivision, w => w.Subject).InitializeFromSource(); yentryrefParentSubdivision.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); entryChief.SetEntityAutocompleteSelectorFactory(ViewModel.EmployeeSelectorFactory); entryChief.Binding.AddBinding(ViewModel.Entity, e => e.Chief, w => w.Subject).InitializeFromSource(); entryChief.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); var subdivisionsVM = new SubdivisionsVM(ViewModel.UoW, ViewModel.Entity); repTreeChildSubdivisions.RepresentationModel = subdivisionsVM; repTreeChildSubdivisions.YTreeModel = new RecursiveTreeModel <SubdivisionVMNode>(subdivisionsVM.Result, x => x.Parent, x => x.Children); repTreeChildSubdivisions.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); ySpecCmbGeographicGroup.ItemsList = ViewModel.UoW.Session.QueryOver <GeographicGroup>().List(); ySpecCmbGeographicGroup.Binding.AddBinding(ViewModel, e => e.GeographicGroup, w => w.SelectedItem).InitializeFromSource(); ySpecCmbGeographicGroup.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); ySpecCmbGeographicGroup.Binding.AddBinding(ViewModel, vm => vm.GeographicGroupVisible, w => w.Visible).InitializeFromSource(); lblGeographicGroup.Binding.AddBinding(ViewModel, vm => vm.GeographicGroupVisible, w => w.Visible).InitializeFromSource(); yenumcomboType.ItemsEnum = typeof(SubdivisionType); yenumcomboType.Binding.AddBinding(ViewModel.Entity, e => e.SubdivisionType, w => w.SelectedItem).InitializeFromSource(); yenumcomboType.Sensitive = false; ytreeviewDocuments.ColumnsConfig = ColumnsConfigFactory.Create <TypeOfEntity>() .AddColumn("Документ").AddTextRenderer(x => x.CustomName) .Finish(); ytreeviewDocuments.Binding.AddBinding(ViewModel.Entity, e => e.ObservableDocumentTypes, w => w.ItemsDataSource).InitializeFromSource(); lblWarehouses.LineWrapMode = Pango.WrapMode.Word; if (ViewModel.Entity.Id > 0) { lblWarehouses.Text = ViewModel.Entity.GetWarehousesNames(ViewModel.UoW, ViewModel.SubdivisionRepository); } else { frmWarehoses.Visible = false; } vboxDocuments.Visible = ViewModel.CurrentUser.IsAdmin; widgetcontainerview2.Visible = ViewModel.CurrentUser.IsAdmin; buttonAddDocument.Clicked += ButtonAddDocument_Clicked; buttonAddDocument.Binding.AddBinding(ViewModel, vm => vm.CanEdit, w => w.Sensitive).InitializeFromSource(); buttonDeleteDocument.Clicked += (sender, e) => ViewModel.DeleteDocumentCommand.Execute(ytreeviewDocuments.GetSelectedObject() as TypeOfEntity); ytreeviewDocuments.Selection.Changed += (sender, e) => buttonDeleteDocument.Sensitive = ViewModel.DeleteDocumentCommand.CanExecute(ytreeviewDocuments.GetSelectedObject() as TypeOfEntity); buttonSave.Clicked += (sender, e) => { ViewModel.SaveAndClose(); }; buttonCancel.Clicked += (sender, e) => { ViewModel.Close(true, QS.Navigation.CloseSource.Cancel); }; ViewModel.OnSavedEntity += () => subdivisionentitypermissionwidget.ViewModel.SavePermissions(subdivisionentitypermissionwidget.UoW); widgetcontainerview2.Binding.AddBinding(ViewModel, vm => vm.PresetSubdivisionPermissionVM, w => w.WidgetViewModel).InitializeFromSource(); entryDefaultSalesPlan.SetEntityAutocompleteSelectorFactory(ViewModel.SalesPlanSelectorFactory); entryDefaultSalesPlan.Binding.AddBinding(ViewModel.Entity, e => e.DefaultSalesPlan, w => w.Subject).InitializeFromSource(); entryDefaultSalesPlan.CanEditReference = false; }
private void ConfigureDlg() { subdivisionentitypermissionwidget.ConfigureDlg(UoW, Entity); yentryName.Binding.AddBinding(Entity, e => e.Name, w => w.Text).InitializeFromSource(); yentryShortName.Binding.AddBinding(Entity, e => e.ShortName, w => w.Text).InitializeFromSource(); yentryrefParentSubdivision.SubjectType = typeof(Subdivision); yentryrefParentSubdivision.Binding.AddBinding(Entity, e => e.ParentSubdivision, w => w.Subject).InitializeFromSource(); yentryreferenceChief.RepresentationModel = new EmployeesVM(); yentryreferenceChief.Binding.AddBinding(Entity, e => e.Chief, w => w.Subject).InitializeFromSource(); yenumcomboType.ItemsEnum = typeof(SubdivisionType); yenumcomboType.Binding.AddBinding(Entity, e => e.SubdivisionType, w => w.SelectedItem).InitializeFromSource(); yenumcomboType.Sensitive = false; subdivisionsVM = new SubdivisionsVM(UoW, Entity); repTreeChildSubdivisions.RepresentationModel = subdivisionsVM; repTreeChildSubdivisions.YTreeModel = new RecursiveTreeModel <SubdivisionVMNode>(subdivisionsVM.Result, x => x.Parent, x => x.Children); ySpecCmbGeographicGroup.ItemsList = UoW.Session.QueryOver <GeographicGroup>().List(); ySpecCmbGeographicGroup.Binding.AddBinding(Entity, e => e.GeographicGroup, w => w.SelectedItem).InitializeFromSource(); ySpecCmbGeographicGroup.ItemSelected += YSpecCmbGeographicGroup_ItemSelected; SetControlsAccessibility(); ytreeviewDocuments.ColumnsConfig = ColumnsConfigFactory.Create <TypeOfEntity>() .AddColumn("Документ").AddTextRenderer(x => x.CustomName) .Finish(); ytreeviewDocuments.ItemsDataSource = Entity.ObservableDocumentTypes; lblWarehouses.LineWrapMode = Pango.WrapMode.Word; if (Entity.Id > 0) { lblWarehouses.Text = Entity.GetWarehousesNames(UoW, _subdivisionRepository); } else { frmWarehoses.Visible = false; } vboxDocuments.Visible = QSMain.User.Admin; presetPermissionVM = new PresetSubdivisionPermissionsViewModel(UoW, new PermissionRepository(), Entity); vboxPresetPermissions.Add(new PresetPermissionsView(presetPermissionVM)); vboxPresetPermissions.ShowAll(); vboxPresetPermissions.Visible = QSMain.User.Admin; presetPermissionVM.ObservablePermissionsList.ListContentChanged += (sender, e) => HasChanges = true; Entity.ObservableDocumentTypes.ListContentChanged += (sender, e) => HasChanges = true; subdivisionentitypermissionwidget.ViewModel.ObservableTypeOfEntitiesList.ListContentChanged += (sender, e) => HasChanges = true; entryDefaultSalesPlan.SetEntityAutocompleteSelectorFactory( new EntityAutocompleteSelectorFactory <SalesPlanJournalViewModel>(typeof(SalesPlan), () => new SalesPlanJournalViewModel( UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices, new NomenclatureSelectorFactory()) { SelectionMode = JournalSelectionMode.Single } )); entryDefaultSalesPlan.Binding.AddBinding(Entity, s => s.DefaultSalesPlan, w => w.Subject).InitializeFromSource(); entryDefaultSalesPlan.CanEditReference = false; }