コード例 #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="clientIdList">Список кодов клиентов</param>
        /// <param name="clientPermission">Право, которым определяются доступные клиенты</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 <ReturnFromClientWaybill> GetList(ReturnFromClientWaybillLogicState logicState, IEnumerable <short> storageIdList, Permission storagePermission,
                                                             IEnumerable <int> curatorIdList, Permission curatorPermission, IEnumerable <int> clientIdList, Permission clientPermission, DateTime startDate,
                                                             DateTime endDate, int pageNumber, WaybillDateType dateType, DateTime?priorToDate, User user)
        {
            ISubCriteria <Storage> storageSubQuery = null;
            ISubCriteria <User>    curatorSubQuery = null;
            ISubCriteria <ReturnFromClientWaybill> returnFromClientWaybillSubQuery = 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 <ReturnFromClientWaybill>());
            }

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

            switch (user.GetPermissionDistributionType(Permission.ReturnFromClientWaybill_List_Details))
            {
            case PermissionDistributionType.All:
                returnFromClientWaybillSubQuery = returnFromClientWaybillRepository.GetReturnFromClientWaybillSubQueryByAllPermission();
                break;

            case PermissionDistributionType.Teams:
                returnFromClientWaybillSubQuery = returnFromClientWaybillRepository.GetReturnFromClientWaybillSubQueryByTeamPermission(user.Id);
                break;

            case PermissionDistributionType.Personal:
                returnFromClientWaybillSubQuery = returnFromClientWaybillRepository.GetReturnFromClientWaybillSubQueryByPersonalPermission(user.Id);
                break;

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

            switch (user.GetPermissionDistributionType(clientPermission))
            {
            case PermissionDistributionType.None:
                return(new List <ReturnFromClientWaybill>());

            case PermissionDistributionType.All:
                break;
            }

            return(returnFromClientWaybillRepository.GetList(logicState, returnFromClientWaybillSubQuery, storageIdList, storageSubQuery,
                                                             curatorIdList, curatorSubQuery, clientIdList, startDate, endDate, pageNumber, dateType, priorToDate));
        }