Beispiel #1
0
        /// <summary>
        /// Получить список накладных возврата товара от клиента, дата принятия которых находится в диапазоне дат, по подзапросу сделок и списку команд
        /// </summary>
        /// <param name="allDealSubQuery">Подкритерий, ограничивающий множество сделок (без учета видимости)</param>
        /// <param name="teamDealSubQuery">Подкритерий, ограничивающий множество сделок (командная видимость)</param>
        /// <param name="personalDealSubQuery">Подкритерий, ограничивающий множество сделок (персональная видимость)</param>
        /// <param name="teamIdList">Список кодов команд. Null - все команды</param>
        /// <param name="startDate">Начальная дата</param>
        /// <param name="endDate">Конечная дата</param>
        /// <param name="user">Пользователь</param>
        private IDictionary <Guid, ReturnFromClientWaybill> GetReceiptedListInDateRangeByDealSubQuery(ISubQuery allDealSubQuery, ISubQuery teamDealSubQuery, ISubQuery personalDealSubQuery,
                                                                                                      IEnumerable <short> teamIdList, DateTime startDate, DateTime endDate, User user)
        {
            var dealSubQuery = dealIndicatorService.GetDealSubQueryByPermissionDistribution(allDealSubQuery, teamDealSubQuery, personalDealSubQuery,
                                                                                            Permission.ReturnFromClientWaybill_List_Details, user);

            ISubCriteria <Team> teamSubQuery = null;

            switch (user.GetPermissionDistributionType(Permission.Team_List_Details))
            {
            case PermissionDistributionType.All:
                teamSubQuery = teamRepository.GetTeamSubQueryByAllPermission();
                break;

            case PermissionDistributionType.Teams:
            case PermissionDistributionType.Personal:
                teamSubQuery = teamRepository.GetTeamSubQueryByTeamPermission(user.Id);
                break;

            case PermissionDistributionType.None:
                teamSubQuery = teamRepository.GetTeamSubQueryByNonePermission();
                break;
            }

            return(dealSubQuery != null?returnFromClientWaybillRepository.GetReceiptedListInDateRangeByDealSubQuery(startDate, endDate, dealSubQuery, teamIdList, teamSubQuery) :
                       new Dictionary <Guid, ReturnFromClientWaybill>());
        }