public static IEnumerable <IEntitySubdivisionForUserPermissionValidationResult> Validate(IUnitOfWork uow, int userId, Type entityType)
        {
            var         result          = new List <EntitySubdivisionForUserPermissionValidationResult>();
            var         employee        = EmployeeRepository.GetEmployeesForUser(uow, userId).FirstOrDefault();
            var         mainPermission  = ServicesConfig.CommonServices.PermissionService.ValidateUserPermission(entityType, userId);
            Subdivision mainSubdivision = employee == null ? null : employee.Subdivision;

            if (mainSubdivision != null)
            {
                var mainTypesName = mainSubdivision.DocumentTypes.Select(x => x.Type);
                if (mainTypesName.Contains(entityType.Name))
                {
                    EntitySubdivisionForUserPermissionValidationResult mainResultItem = new EntitySubdivisionForUserPermissionValidationResult(mainSubdivision, true);
                    mainResultItem.AddPermission(
                        entityType,
                        new EntityPermission(
                            mainPermission.CanCreate,
                            mainPermission.CanRead,
                            mainPermission.CanUpdate,
                            mainPermission.CanDelete
                            )
                        );
                    result.Add(mainResultItem);
                }
            }


            var subdivisionsForEntities = SubdivisionsRepository.GetSubdivisionsForDocumentTypes(uow, new Type[] { entityType });
            var specialPermissions      = PermissionRepository.GetAllSubdivisionForUserEntityPermissionForOneEntity(uow, userId, entityType.Name)
                                          .Where(x => subdivisionsForEntities.Contains(x.Subdivision) || Subdivision.ReferenceEquals(x.Subdivision, mainSubdivision));

            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);
        }