public async Task <IActionResult> GetPersons([FromQuery] PersonParams personParams) { var persons = await _repository.GetPersons(personParams); var personsToReturn = _mapper.Map <IEnumerable <PersonForListDto> >(persons); Response.AddPagination(persons.CurrentPage, persons.PageSize, persons.TotalCount, persons.TotalPages); return(Ok(personsToReturn)); }
public async Task <PagedList <Person> > GetPersons(PersonParams personParams) { var persons = _context.People.Where(p => p.CustomerId != null).AsQueryable(); if (!string.IsNullOrEmpty(personParams.Column)) { if (personParams.Column == "firstName" && !string.IsNullOrEmpty(personParams.Sorting)) { if (personParams.Sorting == "ascending") { persons = persons.OrderBy(p => p.FirstName); } else { persons = persons.OrderByDescending(p => p.FirstName); } } if (personParams.Column == "lastName" && !string.IsNullOrEmpty(personParams.Sorting)) { if (personParams.Sorting == "ascending") { persons = persons.OrderBy(p => p.LastName); } else { persons = persons.OrderByDescending(p => p.LastName); } } if (personParams.Column == "email" && !string.IsNullOrEmpty(personParams.Sorting)) { if (personParams.Sorting == "ascending") { persons = persons.OrderBy(p => p.Email); } else { persons = persons.OrderByDescending(p => p.Email); } } } return(await PagedList <Person> .CreateAsync(persons, personParams.PageNumber, personParams.PageSize)); }