public EntitySubdivisionPermissionModel(IUnitOfWork uow, Subdivision subdivision, PermissionListViewModel permissionListViewModel, IPermissionRepository permissionRepository) { PermissionListViewModel = permissionListViewModel ?? throw new NullReferenceException(nameof(permissionListViewModel)); this.subdivision = subdivision; this.uow = uow; ExtensionStore = PermissionListViewModel.PermissionExtensionStore; var permissionList = permissionRepository.GetAllSubdivisionEntityPermissions(uow, subdivision.Id, ExtensionStore); originalPermissionList = permissionList.ToList(); PermissionListViewModel.PermissionsList = new GenericObservableList <IPermissionNode>(permissionList.OfType <IPermissionNode>().ToList()); PermissionListViewModel.PermissionsList.ElementRemoved += (aList, aIdx, aObject) => DeletePermission(aObject as SubdivisionPermissionNode); originalTypeOfEntityList = TypeOfEntityRepository.GetAllSavedTypeOfEntity(uow).ToList(); //убираем типы уже загруженные в права foreach (var item in originalPermissionList) { if (originalTypeOfEntityList.Contains(item.TypeOfEntity)) { originalTypeOfEntityList.Remove(item.TypeOfEntity); } } SortTypeOfEntityList(); ObservableTypeOfEntitiesList = new GenericObservableList <TypeOfEntity>(originalTypeOfEntityList); }
public void SearchTypes(string searchString) { originalTypeOfEntityList = TypeOfEntityRepository.GetAllSavedTypeOfEntity(uow).ToList(); //убираем типы уже загруженные в права foreach (var item in permissionList) { if (originalTypeOfEntityList.Contains(item.TypeOfEntity)) { originalTypeOfEntityList.Remove(item.TypeOfEntity); } } SortTypeOfEntityList(); ObservableTypeOfEntitiesList = null; ObservableTypeOfEntitiesList = new GenericObservableList <TypeOfEntity>(originalTypeOfEntityList); if (searchString != "") { for (int i = 0; i < ObservableTypeOfEntitiesList.Count; i++) { if (ObservableTypeOfEntitiesList[i].Name.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) == -1) { ObservableTypeOfEntitiesList.Remove(ObservableTypeOfEntitiesList[i]); i -= 1; } } } }
void YSpecCmbEntityType_ItemSelected(object sender, Gamma.Widgets.ItemSelectedEventArgs e) { if (e.SelectedItem is Type) { Entity.CustomName = TypeOfEntityRepository.GetRealName(e.SelectedItem as Type).StringToTitleCase(); Entity.Type = (e.SelectedItem as Type).Name; } }
public EntitySubdivisionForUserPermissionModel(IUnitOfWork uow, Subdivision subdivision, UserBase user) { this.subdivision = subdivision; this.uow = uow; this.user = user; originalPermissionList = _permissionRepository.GetAllSubdivisionForUserEntityPermissions(uow, user.Id); ObservablePermissionsList = new GenericObservableList <EntitySubdivisionForUserPermission>(originalPermissionList.ToList()); originalTypeOfEntityList = TypeOfEntityRepository.GetAllSavedTypeOfEntity(uow); ObservableTypeOfEntitiesList = new GenericObservableList <TypeOfEntity>(originalTypeOfEntityList); }
public void SearchPermissions(string searchString) { //Каждый раз перезаписываем список originalTypeOfEntityList = TypeOfEntityRepository.GetAllSavedTypeOfEntity(uow); ObservableTypeOfEntitiesList = new GenericObservableList <TypeOfEntity>(originalTypeOfEntityList); if (searchString != "") { for (int i = 0; i < ObservableTypeOfEntitiesList.Count; i++) { //Поиск и удаление не подходящих элементов списка (без учета регистра) if (ObservableTypeOfEntitiesList[i].CustomName.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) == -1) { ObservableTypeOfEntitiesList.Remove(ObservableTypeOfEntitiesList[i]); i--; } } } }
void ConfigureDlg() { IList <Type> items = TypeOfEntityRepository.GetEntityTypesMarkedByEntityPermissionAttribute(Entity.Id == 0); //Добавить сущность, если атрибут убран, но право осталось if (!Entity.IsActive) { var t = TypeOfEntityRepository.GetEntityType(Entity.Type); //не добавлять, если удалили сам тип if (t != null) { items.Add(t); } } yentryName.Binding.AddBinding(Entity, e => e.CustomName, w => w.Text).InitializeFromSource(); ylistcomboboxEntityType.SetRenderTextFunc <Type>(TypeOfEntityRepository.GetRealName); ylistcomboboxEntityType.ItemsList = items.OrderBy(TypeOfEntityRepository.GetRealName); ylistcomboboxEntityType.SelectedItem = items.FirstOrDefault(i => i?.Name == Entity.Type); ylistcomboboxEntityType.ItemSelected += YSpecCmbEntityType_ItemSelected; SetControlsAcessibility(); }
public EntityUserPermissionModel(IUnitOfWork uow, UserBase user, PermissionListViewModel permissionListViewModel) { this.user = user; this.uow = uow; this.PermissionListViewModel = permissionListViewModel ?? throw new NullReferenceException(nameof(permissionListViewModel)); permissionList = UserPermissionRepository.GetUserAllEntityPermissions(uow, user.Id, permissionListViewModel.PermissionExtensionStore); PermissionListViewModel.PermissionsList = new GenericObservableList <IPermissionNode>(permissionList.OfType <IPermissionNode>().ToList()); PermissionListViewModel.PermissionsList.ElementRemoved += (aList, aIdx, aObject) => DeletePermission(aObject as UserPermissionNode); originalTypeOfEntityList = TypeOfEntityRepository.GetAllSavedTypeOfEntity(uow).ToList(); //убираем типы уже загруженные в права foreach (var item in permissionList) { if (originalTypeOfEntityList.Contains(item.TypeOfEntity)) { originalTypeOfEntityList.Remove(item.TypeOfEntity); } } SortTypeOfEntityList(); ObservableTypeOfEntitiesList = new GenericObservableList <TypeOfEntity>(originalTypeOfEntityList); }
public void CreateApplicationConfig() { logger.Debug("Конфигурация маппингов диалогов, HistoryTrace, принтеров и ParentReference..."); #region Dialogs mapping OrmMain.ClassMappingList = new List <IOrmObjectMapping> { //Простые справочники OrmObjectMapping <CullingCategory> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Nationality> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Citizenship> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Manufacturer> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <EquipmentColors> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <User> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <UserSettings> .Create().Dialog <UserSettingsView>(), OrmObjectMapping <FuelType> .Create().Dialog <FuelTypeViewModel>().DefaultTableView() .SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <MovementWagon> .Create().Dialog <MovementWagonViewModel>().DefaultTableView() .SearchColumn("Название", x => x.Name).End(), //Остальные справочники OrmObjectMapping <CarProxyDocument> .Create().Dialog <CarProxyDlg>(), OrmObjectMapping <M2ProxyDocument> .Create().Dialog <M2ProxyDlg>(), OrmObjectMapping <ProductGroup> .Create().Dialog <ProductGroupDlg>(), OrmObjectMapping <CommentTemplate> .Create().Dialog <CommentTemplateDlg>().DefaultTableView() .SearchColumn("Шаблон комментария", x => x.Comment).End(), OrmObjectMapping <FineTemplate> .Create().Dialog <FineTemplateDlg>().DefaultTableView() .SearchColumn("Шаблон комментария", x => x.Reason).End(), OrmObjectMapping <MeasurementUnits> .Create().Dialog <MeasurementUnitsDlg>().DefaultTableView() .SearchColumn("ОКЕИ", x => x.OKEI).SearchColumn("Название", x => x.Name).Column("Точность", x => x.Digits.ToString()) .End(), OrmObjectMapping <Contact> .Create().Dialog <ContactDlg>() .DefaultTableView().SearchColumn("Фамилия", x => x.Surname).SearchColumn("Имя", x => x.Name) .SearchColumn("Отчество", x => x.Patronymic).End(), OrmObjectMapping <Order> .Create().Dialog <OrderDlg>().PopupMenu(OrderPopupMenu.GetPopupMenu), OrmObjectMapping <UndeliveredOrder> .Create().Dialog <UndeliveredOrderDlg>(), OrmObjectMapping <Organization> .Create().Dialog <OrganizationDlg>().DefaultTableView().Column("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <DeliverySchedule> .Create().Dialog <DeliveryScheduleDlg>().DefaultTableView() .SearchColumn("Название", x => x.Name) .SearchColumn("Время доставки", x => x.DeliveryTime) .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty) .OrderAsc(x => x.IsArchive).OrderAsc(x => x.From).OrderAsc(x => x.To) .End(), OrmObjectMapping <ProductSpecification> .Create().Dialog <ProductSpecificationDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <EquipmentKind> .Create().Dialog <EquipmentKindDlg>().DefaultTableView() .Column("Название", equipmentKind => equipmentKind.Name).End(), //Связанное с клиентом OrmObjectMapping <Proxy> .Create().Dialog <ProxyDlg>() .DefaultTableView().SearchColumn("Номер", x => x.Number).SearchColumn("С", x => x.StartDate.ToShortDateString()) .SearchColumn("По", x => x.ExpirationDate.ToShortDateString()).End(), OrmObjectMapping <PaidRentPackage> .Create().Dialog <PaidRentPackageDlg>() .DefaultTableView().SearchColumn("Название", x => x.Name).Column("Вид оборудования", x => x.EquipmentKind.Name) .SearchColumn("Цена в сутки", x => CurrencyWorks.GetShortCurrencyString(x.PriceDaily)) .SearchColumn("Цена в месяц", x => CurrencyWorks.GetShortCurrencyString(x.PriceMonthly)).End(), OrmObjectMapping <FreeRentPackage> .Create().Dialog <FreeRentPackageDlg>().DefaultTableView() .SearchColumn("Название", x => x.Name).Column("Вид оборудования", x => x.EquipmentKind.Name).OrderAsc(x => x.Name) .End(), OrmObjectMapping <Counterparty> .Create().Dialog <CounterpartyDlg>().DefaultTableView() .SearchColumn("Название", x => x.FullName).End(), OrmObjectMapping <Tag> .Create().Dialog <TagDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <CounterpartyContract> .Create().Dialog <CounterpartyContractDlg>(), OrmObjectMapping <DocTemplate> .Create().Dialog <DocTemplateDlg>().DefaultTableView().SearchColumn("Название", x => x.Name) .Column("Тип", x => x.TemplateType.GetEnumTitle()).End(), OrmObjectMapping <TransferOperationDocument> .Create().Dialog <TransferOperationDocumentDlg>(), //Справочники с фильтрами OrmObjectMapping <Equipment> .Create().Dialog <EquipmentDlg>().JournalFilter <EquipmentFilter>() .DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Номенклатура", x => x.NomenclatureName) .Column("Тип", x => x.Nomenclature.Kind.Name).SearchColumn("Серийный номер", x => x.Serial) .Column("Дата последней обработки", x => x.LastServiceDate.ToShortDateString()).End(), //Логисткика OrmObjectMapping <RouteList> .Create().Dialog <RouteListCreateDlg>() .DefaultTableView().SearchColumn("Номер", x => x.Id.ToString()).Column("Дата", x => x.Date.ToShortDateString()) .Column("Статус", x => x.Status.GetEnumTitle()) .SearchColumn("Водитель", x => String.Format("{0} - {1}", x.Driver.FullName, x.Car.Title)).End(), OrmObjectMapping <RouteColumn> .Create().DefaultTableView().Column("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <DeliveryShift> .Create().Dialog <DeliveryShiftDlg>().DefaultTableView().SearchColumn("Название", x => x.Name) .SearchColumn("Диапазон времени", x => x.DeliveryTime).End(), OrmObjectMapping <DeliveryDaySchedule> .Create().Dialog <DeliveryDayScheduleDlg>().DefaultTableView() .SearchColumn("Название", x => x.Name).End(), //Сервис OrmObjectMapping <ServiceClaim> .Create().Dialog <ServiceClaimDlg>().DefaultTableView().Column("Номер", x => x.Id.ToString()) .Column("Тип", x => x.ServiceClaimType.GetEnumTitle()).Column("Оборудование", x => x.Equipment.Title) .Column("Подмена", x => x.ReplacementEquipment != null ? "Да" : "Нет") .Column("Точка доставки", x => x.DeliveryPoint.Title).End(), //Касса OrmObjectMapping <Income> .Create().Dialog <CashIncomeDlg>(), OrmObjectMapping <ExpenseCategory> .Create().Dialog <ExpenseCategoryViewModel>().DefaultTableView() .Column("Код", x => x.Id.ToString()).SearchColumn("Название", e => e.Name) .Column("Тип документа", e => e.ExpenseDocumentType.GetEnumTitle()) .TreeConfig(new RecursiveTreeConfig <ExpenseCategory>(x => x.Parent, x => x.Childs)).End(), OrmObjectMapping <Expense> .Create().Dialog <CashExpenseDlg>(), OrmObjectMapping <AdvanceReport> .Create().Dialog <AdvanceReportDlg>(), OrmObjectMapping <Fine> .Create().Dialog <FineDlg>(), OrmObjectMapping <IncomeCashTransferDocument> .Create().Dialog <IncomeCashTransferDlg>(), OrmObjectMapping <CommonCashTransferDocument> .Create().Dialog <CommonCashTransferDlg>(), //Банкинг OrmObjectMapping <AccountIncome> .Create(), OrmObjectMapping <AccountExpense> .Create(), //Склад OrmObjectMapping <Warehouse> .Create().Dialog <WarehouseDlg>().DefaultTableView().Column("Название", w => w.Name) .Column("В архиве", w => w.IsArchive ? "Да" : "").End(), OrmObjectMapping <RegradingOfGoodsTemplate> .Create().Dialog <RegradingOfGoodsTemplateDlg>().DefaultTableView() .Column("Название", w => w.Name).End(), OrmObjectMapping <CarEventType> .Create().Dialog <CarEventTypeViewModel>() }; #region Складские документы OrmMain.AddObjectDescription <IncomingWater>().Dialog <IncomingWaterDlg>(); OrmMain.AddObjectDescription <WriteoffDocument>().Dialog <WriteoffDocumentDlg>(); OrmMain.AddObjectDescription <InventoryDocument>().Dialog <InventoryDocumentDlg>(); OrmMain.AddObjectDescription <ShiftChangeWarehouseDocument>().Dialog <ShiftChangeWarehouseDocumentDlg>(); OrmMain.AddObjectDescription <RegradingOfGoodsDocument>().Dialog <RegradingOfGoodsDocumentDlg>(); OrmMain.AddObjectDescription <SelfDeliveryDocument>().Dialog <SelfDeliveryDocumentDlg>(); OrmMain.AddObjectDescription <CarLoadDocument>().Dialog <CarLoadDocumentDlg>(); OrmMain.AddObjectDescription <CarUnloadDocument>().Dialog <CarUnloadDocumentDlg>(); #endregion #region Goods OrmMain.AddObjectDescription <Nomenclature>().Dialog <NomenclatureDlg>().JournalFilter <NomenclatureFilter>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .Column("Тип", x => x.CategoryString) .SearchColumn("Номер в ИМ", x => x.OnlineStoreExternalId) .End(); OrmMain.AddObjectDescription <Folder1c>().Dialog <Folder1cDlg>() .DefaultTableView() .SearchColumn("Код 1С", x => x.Code1c) .SearchColumn("Название", x => x.Name) .TreeConfig(new RecursiveTreeConfig <Folder1c>(x => x.Parent, x => x.Childs)).End(); #endregion #region Простые справочники OrmMain.AddObjectDescription <GeographicGroup>() .Dialog <GeographicGroupDlg>() .DefaultTableView() .SearchColumn("Название", x => x.Name) .Column("Код", x => x.Id.ToString()) .End(); OrmMain.AddObjectDescription <NonReturnReason>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <PaymentFrom>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <Post>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <SalesChannel>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); #endregion #region неПростые справочники OrmMain.AddObjectDescription <Subdivision>().Dialog <SubdivisionDlg>().DefaultTableView().SearchColumn("Название", x => x.Name) .Column("Руководитель", x => x.Chief == null ? "" : x.Chief.ShortName).SearchColumn("Номер", x => x.Id.ToString()) .TreeConfig(new RecursiveTreeConfig <Subdivision>(x => x.ParentSubdivision, x => x.ChildSubdivisions)).End(); OrmMain.AddObjectDescription <TypeOfEntity>() .Dialog <TypeOfEntityDlg>() .DefaultTableView() .SearchColumn("Тип документа", x => TypeOfEntityRepository.GetEntityNameByString(x.Type)) .SearchColumn("Название документа", x => x.CustomName) .SearchColumn("Код", x => x.Id.ToString()) .Column("Активно", x => !x.IsActive ? "нет" : String.Empty) .SearchColumn("Имя класса", x => x.Type) .OrderAsc(x => x.CustomName) .End(); OrmMain.AddObjectDescription <Trainee>().Dialog <TraineeDlg>().DefaultTableView() .Column("Код", x => x.Id.ToString()) .SearchColumn("Ф.И.О.", x => x.FullName) .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic) .End(); OrmMain.AddObjectDescription <DeliveryPriceRule>().Dialog <DeliveryPriceRuleDlg>().DefaultTableView() .Column("< 19л б.", x => x.Water19LCount.ToString()) .Column("< 6л б.", x => x.Water6LCount) .Column("< 1,5л б.", x => x.Water1500mlCount) .Column("< 0,6л б.", x => x.Water600mlCount) .Column("< 0,5л б.", x => x.Water500mlCount) .Column("Минимальная сумма заказа", x => x.OrderMinSumEShopGoods.ToString()) .SearchColumn("Описание правила", x => x.Title) .End(); OrmMain.AddObjectDescription <Certificate>().Dialog <CertificateDlg>().DefaultTableView() .SearchColumn("Имя", x => x.Name) .Column("Тип", x => x.TypeOfCertificate.GetEnumTitle()) .SearchColumn("Номер", x => x.Id.ToString()) .SearchColumn("Начало срока", x => x.StartDate.HasValue ? x.StartDate.Value.ToString("dd.MM.yyyy") : "Ошибка!") .SearchColumn("Окончание срока", x => x.ExpirationDate.HasValue ? x.ExpirationDate.Value.ToString("dd.MM.yyyy") : "Бессрочно") .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty) .OrderAsc(x => x.IsArchive) .OrderAsc(x => x.Id) .End(); OrmMain.AddObjectDescription <StoredResource>().Dialog <ImageLoaderDlg>().DefaultTableView() .SearchColumn("Номер", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <DeliveryPointCategory>().Dialog <DeliveryPointCategoryDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .Column("В архиве?", x => x.IsArchive ? "Да" : "Нет") .OrderAsc(x => x.Name) .End(); OrmMain.AddObjectDescription <CounterpartyActivityKind>().Dialog <CounterpartyActivityKindDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); #endregion OrmMain.ClassMappingList.AddRange(QSBanks.QSBanksMain.GetModuleMaping()); #endregion HistoryMain.Enable(); TemplatePrinter.InitPrinter(); ImagePrinter.InitPrinter(); logger.Debug("OK"); }
static void CreateBaseConfig() { logger.Info("Настройка параметров базы..."); //Увеличиваем таймоут QSMain.ConnectionString += ";ConnectionTimeout=120"; var db_config = FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard .Dialect <MySQL57SpatialExtendedDialect>() .ConnectionString(QSMain.ConnectionString) .AdoNetBatchSize(100) .Driver <LoggedMySqlClientDriver>(); // Настройка ORM OrmConfig.ConfigureOrm( db_config, new System.Reflection.Assembly[] { System.Reflection.Assembly.GetAssembly(typeof(QS.Project.HibernateMapping.UserBaseMap)), System.Reflection.Assembly.GetAssembly(typeof(HibernateMapping.OrganizationMap)), System.Reflection.Assembly.GetAssembly(typeof(Bank)), System.Reflection.Assembly.GetAssembly(typeof(HistoryMain)), }, (cnf) => { cnf.DataBaseIntegration( dbi => { dbi.BatchSize = 100; dbi.Batcher <MySqlClientBatchingBatcherFactory>(); } ); } ); #region Dialogs mapping OrmMain.ClassMappingList = new List <IOrmObjectMapping> { //Простые справочники OrmObjectMapping <CullingCategory> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Nationality> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Citizenship> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <Manufacturer> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <EquipmentColors> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <User> .Create().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <UserSettings> .Create().Dialog <UserSettingsView>(), OrmObjectMapping <FuelType> .Create().Dialog <FuelTypeDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Стоимость", x => x.Cost.ToString()).End(), OrmObjectMapping <MovementWagon> .Create().Dialog <MovementWagonViewModel>().DefaultTableView().SearchColumn("Название", x => x.Name).End(), //Остальные справочники OrmObjectMapping <CarProxyDocument> .Create().Dialog <CarProxyDlg>(), OrmObjectMapping <M2ProxyDocument> .Create().Dialog <M2ProxyDlg>(), OrmObjectMapping <ProductGroup> .Create().Dialog <ProductGroupDlg>(), OrmObjectMapping <CommentTemplate> .Create().Dialog <CommentTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Comment).End(), OrmObjectMapping <FineTemplate> .Create().Dialog <FineTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Reason).End(), OrmObjectMapping <PremiumTemplate> .Create().Dialog <PremiumTemplateDlg>().DefaultTableView().SearchColumn("Шаблон комментария", x => x.Reason).End(), OrmObjectMapping <MeasurementUnits> .Create().Dialog <MeasurementUnitsDlg>().DefaultTableView().SearchColumn("ОКЕИ", x => x.OKEI).SearchColumn("Название", x => x.Name).Column("Точность", x => x.Digits.ToString()).End(), OrmObjectMapping <Contact> .Create().Dialog <ContactDlg>() .DefaultTableView().SearchColumn("Фамилия", x => x.Surname).SearchColumn("Имя", x => x.Name).SearchColumn("Отчество", x => x.Patronymic).End(), OrmObjectMapping <Order> .Create().Dialog <OrderDlg>().PopupMenu(OrderPopupMenu.GetPopupMenu), OrmObjectMapping <UndeliveredOrder> .Create().Dialog <UndeliveredOrderDlg>(), OrmObjectMapping <Organization> .Create().Dialog <OrganizationDlg>().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <DeliverySchedule> .Create().Dialog <DeliveryScheduleDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Время доставки", x => x.DeliveryTime).End(), OrmObjectMapping <ProductSpecification> .Create().Dialog <ProductSpecificationDlg>().DefaultTableView().SearchColumn("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <EquipmentType> .Create().Dialog <EquipmentTypeDlg>().DefaultTableView().Column("Название", equipmentType => equipmentType.Name).End(), //Связанное с клиентом OrmObjectMapping <Proxy> .Create().Dialog <ProxyDlg>() .DefaultTableView().SearchColumn("Номер", x => x.Number).SearchColumn("С", x => x.StartDate.ToShortDateString()).SearchColumn("По", x => x.ExpirationDate.ToShortDateString()).End(), OrmObjectMapping <DeliveryPoint> .Create().Dialog <DeliveryPointDlg>().DefaultTableView().SearchColumn("ID", x => x.Id.ToString()).Column("Адрес", x => x.Title).End(), OrmObjectMapping <PaidRentPackage> .Create().Dialog <PaidRentPackageDlg>() .DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип оборудования", x => x.EquipmentType.Name).SearchColumn("Цена в сутки", x => CurrencyWorks.GetShortCurrencyString(x.PriceDaily)).SearchColumn("Цена в месяц", x => CurrencyWorks.GetShortCurrencyString(x.PriceMonthly)).End(), OrmObjectMapping <FreeRentPackage> .Create().Dialog <FreeRentPackageDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип оборудования", x => x.EquipmentType.Name).OrderAsc(x => x.Name).End(), OrmObjectMapping <Counterparty> .Create().Dialog <CounterpartyDlg>().DefaultTableView().SearchColumn("Название", x => x.FullName).End(), OrmObjectMapping <Tag> .Create().Dialog <TagDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <CounterpartyContract> .Create().Dialog <CounterpartyContractDlg>(), OrmObjectMapping <DocTemplate> .Create().Dialog <DocTemplateDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Тип", x => x.TemplateType.GetEnumTitle()).End(), OrmObjectMapping <TransferOperationDocument> .Create().Dialog <TransferOperationDocumentDlg>(), //Справочники с фильтрами OrmObjectMapping <Equipment> .Create().Dialog <EquipmentDlg>().JournalFilter <EquipmentFilter>() .DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Номенклатура", x => x.NomenclatureName).Column("Тип", x => x.Nomenclature.Type.Name).SearchColumn("Серийный номер", x => x.Serial).Column("Дата последней обработки", x => x.LastServiceDate.ToShortDateString()).End(), //Логисткика OrmObjectMapping <RouteList> .Create().Dialog <RouteListCreateDlg>() .DefaultTableView().SearchColumn("Номер", x => x.Id.ToString()).Column("Дата", x => x.Date.ToShortDateString()).Column("Статус", x => x.Status.GetEnumTitle()).SearchColumn("Водитель", x => String.Format("{0} - {1}", x.Driver.FullName, x.Car.Title)).End(), OrmObjectMapping <RouteColumn> .Create().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", x => x.Name).End(), OrmObjectMapping <DeliveryShift> .Create().Dialog <DeliveryShiftDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).SearchColumn("Диапазон времени", x => x.DeliveryTime).End(), OrmObjectMapping <DeliveryDaySchedule> .Create().Dialog <DeliveryDayScheduleDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).End(), //Сервис OrmObjectMapping <ServiceClaim> .Create().Dialog <ServiceClaimDlg>().DefaultTableView().Column("Номер", x => x.Id.ToString()).Column("Тип", x => x.ServiceClaimType.GetEnumTitle()).Column("Оборудование", x => x.Equipment.Title).Column("Подмена", x => x.ReplacementEquipment != null ? "Да" : "Нет").Column("Точка доставки", x => x.DeliveryPoint.Title).End(), //Касса OrmObjectMapping <Income> .Create().Dialog <CashIncomeDlg> (), OrmObjectMapping <ExpenseCategory> .Create().Dialog <ExpenseCategoryViewModel>().DefaultTableView().Column("Код", x => x.Id.ToString()).SearchColumn("Название", e => e.Name).Column("Тип документа", e => e.ExpenseDocumentType.GetEnumTitle()).TreeConfig(new RecursiveTreeConfig <ExpenseCategory>(x => x.Parent, x => x.Childs)).End(), OrmObjectMapping <Expense> .Create().Dialog <CashExpenseDlg> (), OrmObjectMapping <AdvanceReport> .Create().Dialog <AdvanceReportDlg> (), OrmObjectMapping <Fine> .Create().Dialog <FineDlg> (), OrmObjectMapping <Premium> .Create().Dialog <PremiumDlg> (), OrmObjectMapping <IncomeCashTransferDocument> .Create().Dialog <IncomeCashTransferDlg>(), OrmObjectMapping <CommonCashTransferDocument> .Create().Dialog <CommonCashTransferDlg>(), //Банкинг OrmObjectMapping <AccountIncome> .Create(), OrmObjectMapping <AccountExpense> .Create(), //Склад OrmObjectMapping <Warehouse> .Create().Dialog <WarehouseDlg>().DefaultTableView().Column("Название", w => w.Name).Column("В архиве", w => w.IsArchive ? "Да":"").End(), OrmObjectMapping <RegradingOfGoodsTemplate> .Create().Dialog <RegradingOfGoodsTemplateDlg>().DefaultTableView().Column("Название", w => w.Name).End() }; #region Складские документы OrmMain.AddObjectDescription <IncomingWater>().Dialog <IncomingWaterDlg>(); OrmMain.AddObjectDescription <WriteoffDocument>().Dialog <WriteoffDocumentDlg>(); OrmMain.AddObjectDescription <InventoryDocument>().Dialog <InventoryDocumentDlg>(); OrmMain.AddObjectDescription <ShiftChangeWarehouseDocument>().Dialog <ShiftChangeWarehouseDocumentDlg>(); OrmMain.AddObjectDescription <RegradingOfGoodsDocument>().Dialog <RegradingOfGoodsDocumentDlg>(); OrmMain.AddObjectDescription <SelfDeliveryDocument>().Dialog <SelfDeliveryDocumentDlg>(); OrmMain.AddObjectDescription <CarLoadDocument>().Dialog <CarLoadDocumentDlg>(); OrmMain.AddObjectDescription <CarUnloadDocument>().Dialog <CarUnloadDocumentDlg>(); #endregion #region Goods OrmMain.AddObjectDescription <Nomenclature>().Dialog <NomenclatureDlg>().JournalFilter <NomenclatureFilter>(). DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .Column("Тип", x => x.CategoryString) .SearchColumn("Номер в ИМ", x => x.OnlineStoreExternalId) .End(); OrmMain.AddObjectDescription <Folder1c>().Dialog <Folder1cDlg>() .DefaultTableView() .SearchColumn("Код 1С", x => x.Code1c) .SearchColumn("Название", x => x.Name) .TreeConfig(new RecursiveTreeConfig <Folder1c>(x => x.Parent, x => x.Childs)).End(); #endregion #region Простые справочники OrmMain.AddObjectDescription <DiscountReason>() .DefaultTableView() .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <GeographicGroup>() .Dialog <GeographicGroupDlg>() .DefaultTableView() .SearchColumn("Название", x => x.Name) .Column("Код", x => x.Id.ToString()) .End(); OrmMain.AddObjectDescription <TariffZone>() .DefaultTableView() .SearchColumn("Номер", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <NonReturnReason>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <PaymentFrom>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <Post>() .DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); #endregion #region неПростые справочники OrmMain.AddObjectDescription <Subdivision>().Dialog <SubdivisionDlg>().DefaultTableView().SearchColumn("Название", x => x.Name).Column("Руководитель", x => x.Chief == null ? "" : x.Chief.ShortName).SearchColumn("Номер", x => x.Id.ToString()).TreeConfig(new RecursiveTreeConfig <Subdivision>(x => x.ParentSubdivision, x => x.ChildSubdivisions)).End(); OrmMain.AddObjectDescription <TypeOfEntity>() .Dialog <TypeOfEntityDlg>() .DefaultTableView() .SearchColumn("Тип документа", x => TypeOfEntityRepository.GetEntityNameByString(x.Type)) .SearchColumn("Название документа", x => x.CustomName) .SearchColumn("Код", x => x.Id.ToString()) .Column("Активно", x => !x.IsActive ? "нет" : String.Empty) .SearchColumn("Имя класса", x => x.Type) .OrderAsc(x => x.CustomName) .End(); OrmMain.AddObjectDescription <Employee>().Dialog <EmployeeDlg>().DefaultTableView() .Column("Код", x => x.Id.ToString()) .SearchColumn("Ф.И.О.", x => x.FullName) .Column("Категория", x => x.Category.GetEnumTitle()) .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic) .End(); OrmMain.AddObjectDescription <Trainee>().Dialog <TraineeDlg>().DefaultTableView() .Column("Код", x => x.Id.ToString()) .SearchColumn("Ф.И.О.", x => x.FullName) .OrderAsc(x => x.LastName).OrderAsc(x => x.Name).OrderAsc(x => x.Patronymic) .End(); OrmMain.AddObjectDescription <DeliveryPriceRule>().Dialog <DeliveryPriceRuleDlg>().DefaultTableView() .Column("< 19л б.", x => x.Water19LCount.ToString()) .Column("< 6л б.", x => x.Water6LCount) .Column("< 1,5л б.", x => x.Water1500mlCount) .Column("< 0,6л б.", x => x.Water600mlCount) .Column("Минимальная сумма заказа", x => x.OrderMinSumEShopGoods.ToString()) .SearchColumn("Описание правила", x => x.Title) .End(); OrmMain.AddObjectDescription <Car>().Dialog <CarsDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Модель а/м", x => x.Model) .SearchColumn("Гос. номер", x => x.RegistrationNumber) .SearchColumn("Водитель", x => x.Driver != null ? x.Driver.FullName : string.Empty) .End(); OrmMain.AddObjectDescription <Certificate>().Dialog <CertificateDlg>().DefaultTableView() .SearchColumn("Имя", x => x.Name) .Column("Тип", x => x.TypeOfCertificate.GetEnumTitle()) .SearchColumn("Номер", x => x.Id.ToString()) .SearchColumn("Начало срока", x => x.StartDate.HasValue ? x.StartDate.Value.ToString("dd.MM.yyyy") : "Ошибка!") .SearchColumn("Окончание срока", x => x.ExpirationDate.HasValue ? x.ExpirationDate.Value.ToString("dd.MM.yyyy") : "Бессрочно") .Column("Архивный?", x => x.IsArchive ? "Да" : string.Empty) .OrderAsc(x => x.IsArchive) .OrderAsc(x => x.Id) .End(); OrmMain.AddObjectDescription <StoredImageResource>().Dialog <ImageLoaderDlg>().DefaultTableView() .SearchColumn("Номер", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); OrmMain.AddObjectDescription <DeliveryPointCategory>().Dialog <DeliveryPointCategoryDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .Column("В архиве?", x => x.IsArchive ? "Да" : "Нет") .OrderAsc(x => x.Name) .End(); OrmMain.AddObjectDescription <CounterpartyActivityKind>().Dialog <CounterpartyActivityKindDlg>().DefaultTableView() .SearchColumn("Код", x => x.Id.ToString()) .SearchColumn("Название", x => x.Name) .End(); #endregion OrmMain.ClassMappingList.AddRange(QSBanks.QSBanksMain.GetModuleMaping()); #endregion HistoryMain.Enable(); TemplatePrinter.InitPrinter(); ImagePrinter.InitPrinter(); //Настройка ParentReference ParentReferenceConfig.AddActions(new ParentReferenceActions <Organization, Account> { AddNewChild = (o, a) => o.AddAccount(a) }); ParentReferenceConfig.AddActions(new ParentReferenceActions <Counterparty, Account> { AddNewChild = (c, a) => c.AddAccount(a) }); ParentReferenceConfig.AddActions(new ParentReferenceActions <Employee, Account> { AddNewChild = (c, a) => c.AddAccount(a) }); ParentReferenceConfig.AddActions(new ParentReferenceActions <Trainee, Account> { AddNewChild = (c, a) => c.AddAccount(a) }); }
private void DrawNewRow(IPermissionNode node) { if (hBoxList?.FirstOrDefault() == null) { hBoxList = new List <HBox>(); } HBox hBox = new HBox(); hBox.Spacing = hboxHeader.Spacing; yButton deleteButton = new yButton(); Image image = new Image(); image.Pixbuf = Stetic.IconLoader.LoadIcon(this, "gtk-delete", IconSize.Menu); deleteButton.Image = image; deleteButton.Clicked += (sender, e) => viewModel.DeleteItemCommand.Execute(((yButton)sender).Parent.Data["permission"] as IPermissionNode); deleteButton.Binding.AddFuncBinding(viewModel, e => !e.ReadOnly, w => w.Sensitive).InitializeFromSource(); deleteButton.WidthRequest = 40; hBox.Add(deleteButton); hBox.SetChildPacking(deleteButton, false, true, 0, PackType.Start); var documentLabel = new yLabel(); documentLabel.Wrap = true; documentLabel.LineWrap = true; documentLabel.LineWrapMode = Pango.WrapMode.WordChar; documentLabel.WidthRequest = ylabelDocument.WidthRequest - deleteButton.WidthRequest; documentLabel.Binding.AddBinding(node.TypeOfEntity, e => e.CustomName, w => w.Text).InitializeFromSource(); hBox.Add(documentLabel); hBox.SetChildPacking(documentLabel, false, true, 0, PackType.Start); var readPermCheckButton = new yCheckButton(); readPermCheckButton.WidthRequest = ylabelPermView.WidthRequest; readPermCheckButton.Binding.AddBinding(node.EntityPermission, e => e.CanRead, w => w.Active).InitializeFromSource(); hBox.Add(readPermCheckButton); hBox.SetChildPacking(readPermCheckButton, false, true, 0, PackType.Start); var createPermCheckButton = new yCheckButton(); createPermCheckButton.WidthRequest = ylabelPermCreate.WidthRequest; createPermCheckButton.Binding.AddBinding(node.EntityPermission, e => e.CanCreate, w => w.Active).InitializeFromSource(); hBox.Add(createPermCheckButton); hBox.SetChildPacking(createPermCheckButton, false, true, 0, PackType.Start); var editPermCheckButton = new yCheckButton(); editPermCheckButton.WidthRequest = ylabelPermEdit.WidthRequest; editPermCheckButton.Binding.AddBinding(node.EntityPermission, e => e.CanUpdate, w => w.Active).InitializeFromSource(); hBox.Add(editPermCheckButton); hBox.SetChildPacking(editPermCheckButton, false, true, 0, PackType.Start); var deletePermCheckButton = new yCheckButton(); deletePermCheckButton.WidthRequest = ylabelPermDelete.WidthRequest; deletePermCheckButton.Binding.AddBinding(node.EntityPermission, e => e.CanDelete, w => w.Active).InitializeFromSource(); hBox.Add(deletePermCheckButton); hBox.SetChildPacking(deletePermCheckButton, false, true, 0, PackType.Start); foreach (var header in hboxExtension.Children.OfType <yLabel>()) { var item = node.EntityPermissionExtended.FirstOrDefault(x => x.PermissionId == (header.Data["permission_id"] as string)); Widget widget; var permission = ViewModel.PermissionExtensionStore.PermissionExtensions.FirstOrDefault(x => x.PermissionId == item.PermissionId); if (permission.IsValidType(TypeOfEntityRepository.GetEntityType(node.TypeOfEntity.Type))) { widget = new NullableCheckButton(); widget.WidthRequest = header.WidthRequest; (widget as NullableCheckButton)?.Binding.AddBinding(item, e => e.IsPermissionAvailable, w => w.Active).InitializeFromSource(); } else { widget = new Label(); widget.WidthRequest = header.WidthRequest; widget.Sensitive = false; widget.Visible = false; } hBox.Add(widget); hBox.SetChildPacking(widget, false, true, 0, PackType.Start); } hBox.Data.Add("permission", node); //Для свзяки виджета и права hBox.ShowAll(); vboxPermissions.Add(hBox); hBoxList.Add(hBox); }