/// <summary>
        /// Проверка на возможность удаления
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        private void CheckPossibilityToDelete(AccountOrganization organizationToDelete, User user)
        {
            userService.CheckPermission(user, Permission.AccountOrganization_Delete);

            var receiptWaybillList = receiptWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(receiptWaybillList, 3, "приходной накладной", "и еще в {0} приходных накладных");

            var movementWaybillList = movementWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(movementWaybillList, 3, "накладной перемещения", "и еще в {0} накладных перемещения");

            var changeOwnerWaybillList = changeOwnerWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(changeOwnerWaybillList, 3, "накладной смены собственника", "и еще в {0} накладных смены собственника");

            var writeoffWaybillList = writeoffWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(writeoffWaybillList, 3, "накладной списания", "и еще в {0} накладных списания");

            var expenditureWaybillList = expenditureWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(expenditureWaybillList, 3, "накладной реализации", "и еще в {0} накладных реализации");

            var returnFromClientWaybillList = returnFromClientWaybillRepository.GetList(organizationToDelete);

            GetExceptionString(returnFromClientWaybillList, 3, "накладной возврата от клиента", "и еще в {0} накладных возврата от клиента");

            // Проверяем наличие договоров с участием организации
            ValidationUtils.Assert(!contractRepository.AnyContracts(organizationToDelete), "Невозможно удалить организацию, так как она используется в договорах.");
        }
Example #2
0
        /// <summary>
        /// Получение списка накладных
        /// </summary>
        /// <param name="logicState">Статус накладной</param>
        /// <param name="storageIdList">Список кодов мест хранения</param>
        /// <param name="storagePermission">Право, которым определяются доступные места хранения</param>
        /// <param name="curatorIdList">Список кодов кураторов</param>
        /// <param name="curatorPermission">Право, которым определяются доступные пользователи</param>
        /// <param name="startDate">Начальная дата</param>
        /// <param name="endDate">Конечная дата</param>
        /// <param name="pageNumber">Номер страницы, первая 1.</param>
        /// <param name="dateType">Тип даты</param>
        /// <param name="priorToDate">Параметр "До даты"</param>
        /// <param name="user">Пользователь</param>
        /// <returns>Список накладных</returns>
        public IEnumerable <MovementWaybill> GetList(MovementWaybillLogicState logicState, IEnumerable <short> storageIdList, Permission storagePermission,
                                                     IEnumerable <int> curatorIdList, Permission curatorPermission, DateTime startDate, DateTime endDate, int pageNumber,
                                                     WaybillDateType dateType, DateTime?priorToDate, User user)
        {
            ISubCriteria <Storage>         storageSubQuery         = null;
            ISubCriteria <User>            curatorSubQuery         = null;
            ISubCriteria <MovementWaybill> movementWaybillSubQuery = null;

            switch (user.GetPermissionDistributionType(storagePermission))
            {
            case PermissionDistributionType.All:
                storageSubQuery = storageRepository.GetStorageSubQueryByAllPermission();
                break;

            case PermissionDistributionType.Teams:
                storageSubQuery = storageRepository.GetStorageSubQueryByTeamPermission(user.Id);
                break;

            case PermissionDistributionType.None:
                return(new List <MovementWaybill>());
            }

            switch (user.GetPermissionDistributionType(curatorPermission))
            {
            case PermissionDistributionType.All:
                curatorSubQuery = userRepository.GetUserSubQueryByAllPermission();
                break;

            case PermissionDistributionType.Teams:
                curatorSubQuery = userRepository.GetUserSubQueryByTeamPermission(user.Id);
                break;

            case PermissionDistributionType.None:
                return(new List <MovementWaybill>());
            }

            switch (user.GetPermissionDistributionType(Permission.MovementWaybill_List_Details))
            {
            case PermissionDistributionType.All:
                movementWaybillSubQuery = movementWaybillRepository.GetMovementWaybillSubQueryByAllPermission();
                break;

            case PermissionDistributionType.Teams:
                movementWaybillSubQuery = movementWaybillRepository.GetMovementWaybillSubQueryByTeamPermission(user.Id);
                break;

            case PermissionDistributionType.Personal:
                movementWaybillSubQuery = movementWaybillRepository.GetMovementWaybillSubQueryByPersonalPermission(user.Id);
                break;

            case PermissionDistributionType.None:
                return(new List <MovementWaybill>());
            }

            return(movementWaybillRepository.GetList(logicState, movementWaybillSubQuery, storageIdList, storageSubQuery,
                                                     curatorIdList, curatorSubQuery, startDate, endDate, pageNumber, dateType, priorToDate));
        }