public CashBookReport(ISubdivisionRepository subdivisionRepository, ICommonServices commonServices) { this.Build(); this.subdivisionRepository = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository)); this.commonServices = commonServices ?? throw new ArgumentNullException(nameof(commonServices)); UoW = UnitOfWorkFactory.CreateWithoutRoot(); UserSubdivisions = GetSubdivisionsForUser(); dateperiodpicker.StartDate = DateTime.Now.Date; dateperiodpicker.EndDate = DateTime.Now.Date; #region Выбор кассы var subdivisions = subdivisionRepository.GetSubdivisionsForDocumentTypes(UoW, new Type[] { typeof(Income), typeof(Income) }); var itemsList = subdivisions.ToList(); { IEnumerable <int> fromTypes = itemsList.Select(x => x.Id); IEnumerable <int> fromUser = UserSubdivisions.Select(x => x.Id); if (!new HashSet <int>(fromTypes).IsSupersetOf(fromUser)) { subdivisions = itemsList.Concat(UserSubdivisions); } } itemsList.Add(new Subdivision { Name = "Все" }); yspeccomboboxCashSubdivision.SetRenderTextFunc <Subdivision>(s => s.Name); yspeccomboboxCashSubdivision.ItemsList = itemsList; yspeccomboboxCashSubdivision.SelectedItem = UserSubdivisions.Count != 0 ? UserSubdivisions?.First() : itemsList.First(); #endregion hboxOrganisations.Visible = false; Organizations = UoW.GetAll <Organization>(); specialListCmbOrganisations.SetRenderTextFunc <Organization>(s => s.Name); specialListCmbOrganisations.ItemsList = Organizations; int currentUserId = commonServices.UserService.CurrentUserId; bool canCreateCashReportsForOrganisations = commonServices.PermissionService.ValidateUserPresetPermission("can_create_cash_reports_for_organisations", currentUserId); ycheckOrganisations.Visible = canCreateCashReportsForOrganisations; ycheckOrganisations.Toggled += CheckOrganisationsToggled; buttonCreateRepot.Clicked += OnButtonCreateRepotClicked; }
private bool ConfigSubdivisionCombo() { var subdivisions = _subdivisionRepository.GetSubdivisionsForDocumentTypes(UoW, new Type[] { typeof(Income) }).ToList(); if (!subdivisions.Any()) { MessageDialogHelper.RunErrorDialog( "Неправильно сконфигурированы подразделения кассы, невозможно будет указать подразделение в которое будут сдаваться маршрутные листы"); FailInitialize = true; return(false); } yspeccomboboxCashSubdivision.ShowSpecialStateNot = true; yspeccomboboxCashSubdivision.ItemsList = subdivisions; yspeccomboboxCashSubdivision.SelectedItem = SpecialComboState.Not; yspeccomboboxCashSubdivision.ItemSelected += OnYSpecCmbCashSubdivisionItemSelected; if (Entity.ClosingSubdivision != null && subdivisions.Any(x => x.Id == Entity.ClosingSubdivision.Id)) { yspeccomboboxCashSubdivision.SelectedItem = Entity.ClosingSubdivision; } return(true); }
public static IEnumerable <IEntitySubdivisionForUserPermissionValidationResult> Validate(IUnitOfWork uow, int userId, Type[] entityTypes) { var result = new List <EntitySubdivisionForUserPermissionValidationResult>(); string[] entityNames = entityTypes.Select(x => x.Name).ToArray(); var employee = _employeeRepository.GetEmployeesForUser(uow, userId).FirstOrDefault(); Subdivision mainSubdivision = employee?.Subdivision; if (mainSubdivision != null) { var mainTypesName = mainSubdivision.DocumentTypes.Select(x => x.Type); var mainAvailableTypes = entityTypes.Where(x => mainTypesName.Contains(x.Name)); if (mainAvailableTypes.Any()) { EntitySubdivisionForUserPermissionValidationResult mainResultItem = new EntitySubdivisionForUserPermissionValidationResult(mainSubdivision, true); foreach (var mainAvailableType in mainAvailableTypes) { var mainPermission = ServicesConfig.CommonServices.PermissionService.ValidateUserPermission(mainAvailableType, userId); mainResultItem.AddPermission( mainAvailableType, new EntityPermission( mainPermission.CanCreate, mainPermission.CanRead, mainPermission.CanUpdate, mainPermission.CanDelete ) ); } result.Add(mainResultItem); } } var subdivisionsForEntities = _subdivisionRepository.GetSubdivisionsForDocumentTypes(uow, entityTypes); var specialPermissions = _permissionRepository.GetAllSubdivisionForUserEntityPermissionForSomeEntities(uow, userId, entityNames) .Where(x => subdivisionsForEntities.Contains(x.Subdivision) || Subdivision.ReferenceEquals(x.Subdivision, mainSubdivision)); foreach (var entityType in entityTypes) { var mainPermission = ServicesConfig.CommonServices.PermissionService.ValidateUserPermission(entityType, userId); foreach (var permissionitem in specialPermissions.Where(x => x.TypeOfEntity.Type == entityType.Name)) { EntitySubdivisionForUserPermissionValidationResult resultItem = result.FirstOrDefault(x => x.Subdivision == permissionitem.Subdivision); if (resultItem == null) { var isMainSubdivision = permissionitem.Subdivision != null && mainSubdivision != null && permissionitem.Subdivision.Id == mainSubdivision.Id; resultItem = new EntitySubdivisionForUserPermissionValidationResult(permissionitem.Subdivision, isMainSubdivision); result.Add(resultItem); } resultItem.AddPermission( entityType, new EntityPermission( mainPermission.CanCreate && permissionitem.CanCreate, mainPermission.CanRead && permissionitem.CanRead, mainPermission.CanUpdate && permissionitem.CanUpdate, mainPermission.CanDelete && permissionitem.CanDelete ) ); } } return(result); }