Ejemplo n.º 1
0
        public IQueryable <RequestGetModel> GetAllFilteredQuery(FilteredStoreLoadParams <RequestListFilters> loadParams)
        {
            var baseQuery = _dataStore.GetAll <Request>();

            if (loadParams.Filter != null)
            {
                baseQuery = baseQuery
                            //костыль. так ка кзаказчик хочет фильтровать по типу "малые" и "большие", поэтому эти критерии заведены как отрицательные значения
                            .WhereIf(loadParams.Filter.ContainerTypeId.HasValue && loadParams.Filter.ContainerTypeId > 0,
                                     x => x.Container.ContainerType.Id == loadParams.Filter.ContainerTypeId.Value)
                            //Малые (6,8)
                            .WhereIf(loadParams.Filter.ContainerTypeId.HasValue && loadParams.Filter.ContainerTypeId == -1,
                                     x => x.Container.ContainerType.Capacity <= 8)
                            //Большие (более 8)
                            .WhereIf(loadParams.Filter.ContainerTypeId.HasValue && loadParams.Filter.ContainerTypeId == -2,
                                     x => x.Container.ContainerType.Capacity > 8)
                            .WhereIf(loadParams.Filter.CarId.HasValue,
                                     x => x.Car.Id == loadParams.Filter.CarId.Value)
                            .WhereIf(loadParams.Filter.DriverId.HasValue,
                                     x => x.Driver.Id == loadParams.Filter.DriverId.Value)
                            .WhereIf(loadParams.Filter.DateStart.HasValue,
                                     x => x.PlannedDateTime > loadParams.Filter.DateStart.Value)
                            .WhereIf(loadParams.Filter.DateEnd.HasValue,
                                     x => x.PlannedDateTime < loadParams.Filter.DateEnd.Value)
                            .WhereIf(!string.IsNullOrEmpty(loadParams.Filter.CustomerFilter),
                                     x => x.Customer.Name.ToLower().Contains(loadParams.Filter.CustomerFilter.ToLower()))
                            .WhereIf(!string.IsNullOrEmpty(loadParams.Filter.AddressFilter),
                                     x => x.Address.ToLower().Contains(loadParams.Filter.AddressFilter.ToLower()))
                            .WhereIf(!string.IsNullOrEmpty(loadParams.Filter.ContactPersonPhoneFilter),
                                     x => x.ContactPersonPhone.ToLower()
                                     .Contains(loadParams.Filter.ContactPersonPhoneFilter.ToLower()))
                            .WhereIf(loadParams.Filter.IsPaids.HasValue,
                                     x => x.IsPaid == loadParams.Filter.IsPaids)
                            .WhereIf(loadParams.Filter.RequestId.HasValue,
                                     x => x.Id == loadParams.Filter.RequestId)

                            //тип заявки
                            .WhereIf(
                    loadParams.Filter.RequestType.HasValue &&
                    loadParams.Filter.RequestType.Value == RequestType.Install,

                    x => x.Type == RequestType.Install
                    )
                            .WhereIf(
                    loadParams.Filter.RequestType.HasValue &&
                    loadParams.Filter.RequestType.Value == RequestType.Uninstall,

                    x => x.Type == RequestType.Uninstall
                    )


                            //статус заявки
                            .WhereIf(
                    loadParams.Filter.RequestStatus.HasValue &&
                    loadParams.Filter.RequestStatus.Value == RequestStatus.New,

                    x => x.Status == RequestStatus.New
                    )
                            .WhereIf(
                    loadParams.Filter.RequestStatus.HasValue &&
                    loadParams.Filter.RequestStatus.Value == RequestStatus.InWork,

                    x => x.Status == RequestStatus.InWork
                    )
                            .WhereIf(
                    loadParams.Filter.RequestStatus.HasValue &&
                    loadParams.Filter.RequestStatus.Value == RequestStatus.Done,

                    x => x.Status == RequestStatus.Done
                    )
                            .WhereIf(
                    loadParams.Filter.RequestStatus.HasValue &&
                    loadParams.Filter.RequestStatus.Value == RequestStatus.Rejected,

                    x => x.Status == RequestStatus.Rejected
                    );
            }

            var query = baseQuery
                        .Select(RequestGetModel.ProjectionExpression)
                        .OrderByDescending(x => x.PlannedDateTime);

            return(query);
        }
        public HttpResponseMessage GetList([FromUri] FilteredStoreLoadParams <RequestListFilters> loadParams)
        {
            var query = requestService.GetAllFilteredQuery(loadParams);

            return(SuccessListFrom(query, loadParams));
        }