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