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