private Expression <Func <Repair, bool> > CreatePredicate(GetRepairsRequest request) { Expression <Func <Repair, bool> > predicate = x => (!request.Id.HasValue || x.Id.Equals(request.Id)) && (!request.CustomerId.HasValue || x.CustomerId.Equals(request.CustomerId)) && (string.IsNullOrEmpty(request.CustomerFirstName) || x.Customer.FirstName.Contains(request.CustomerFirstName)) && (string.IsNullOrEmpty(request.CustomerLastName) || x.Customer.LastName.Contains(request.CustomerLastName)) && (string.IsNullOrEmpty(request.CustomerEmail) || x.Customer.Email.Contains(request.CustomerEmail)) && (string.IsNullOrEmpty(request.CustomerPhoneNumber) || x.Customer.PhoneNumber.Contains(request.CustomerPhoneNumber)); return(predicate); }
public async Task <List <GetRepairsResponse> > GetRepairsAsync(GetRepairsRequest request, CancellationToken cancellationToken) { var predicate = CreatePredicate(request); var result = await _repairRepository.GetAsync(predicate, cancellationToken, include : x => x .Include(x => x.Customer) .Include(x => x.EmployeeRepairs) .ThenInclude(x => x.User), orderBy : x => x.OrderBy(x => x.Status)); if (result == null) { throw new ServiceException(ErrorCodes.RepairWithGivenIdNotFound, $"Repair with provided id doesn't exist"); } return(_mapper.Map <List <GetRepairsResponse> >(result)); }
public async Task <IActionResult> GetRepairs([FromQuery] GetRepairsRequest request, CancellationToken cancellationToken) { var result = await _repairService.GetRepairsAsync(request, cancellationToken); return(Ok(result)); }