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();
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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;
        }