Example #1
0
        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);
        }
Example #3
0
        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);
        }