コード例 #1
0
        public async Task <HttpResponseMessage> GetServiceBy5Filter(_5FilterServiceList _5Filter, int?pageSize, int?pageNumber)
        {
            var messageData = CreateMessageData($"service/GetServiceBy5Filter");

            var services = await _serviceService.GetServiceBy5Filter(_5Filter);

            if (!services.IsSuccess)
            {
                return(CreateSystemErrorResponse(messageData));
            }

            var numOfRecords = services.Result.Count();

            if (pageSize.HasValue && pageNumber.HasValue)
            {
                if (numOfRecords <= ((pageSize - 1) * (pageNumber - 1)))
                {
                    return(CreateBadRequestErrorResponse(messageData, Validation.InvalidPageIndex));
                }

                var listService = services.Result.Skip((pageNumber.Value - 1) * pageSize.Value).Take(pageSize.Value);

                return(CreateOkResponse(messageData, listService, pageNumber, pageSize, services.Result.Count()));
            }

            return(CreateOkResponse(messageData, services.Result));
        }
コード例 #2
0
        public async Task <LogicResult <IEnumerable <ServiceDetail> > > GetServiceBy5Filter(_5FilterServiceList _5Filter)
        {
            int    outletID    = _5Filter.outletID;
            string serviceName = _5Filter.serivceName;

            // First Filter: OutletID
            var result1 = await this.GetServiceByOutlet(outletID);

            // Second Filter: serviceName
            var result2 = result1.Result.AsEnumerable();

            if (serviceName != null)
            {
                result2 = result1.Result.Where(x => x.Name.ToLower().Contains(serviceName.ToLower()));
            }

            // Third Filter: serviceType
            if (_5Filter.serviceType.HasValue)
            {
                result2 = result2.Where(x => x.serviceType.Equals(_5Filter.serviceType.Value));
            }

            // Fourth Filter: servicePrice
            if (_5Filter.servicePrice.HasValue)
            {
                switch (_5Filter.servicePrice.Value)
                {
                case 1:
                    result2 = result2.Where(x => x.Price <= (double)Price.money1);
                    break;

                case 2:
                    result2 = result2.Where(x => x.Price <= (double)Price.money2 &&
                                            x.Price > (double)Price.money1);
                    break;

                case 3:
                    result2 = result2.Where(x => x.Price <= (double)Price.money3 &&
                                            x.Price > (double)Price.money2);
                    break;

                case 4:
                    result2 = result2.Where(x => x.Price > (double)Price.money3);
                    break;
                }
            }

            // Fifth Filter: orderBy
            if (_5Filter.orderBy.HasValue)
            {
                switch (_5Filter.orderBy.Value)
                {
                case (int)OrderBy.moneyDecrease:
                    result2.OrderByDescending(x => x.Price);
                    break;

                case (int)OrderBy.moneyIncrese:
                    result2.OrderBy(x => x.Price);
                    break;
                }
            }

            return(new LogicResult <IEnumerable <ServiceDetail> >()
            {
                IsSuccess = true,
                Result = result2
            });
        }