public async Task <ListViewModel <ClienteViewModel> > GetClientiAsync(ClienteListInputModel model) { IQueryable <Cliente> baseQuery = dbContext.Clienti; baseQuery = (model.OrderBy, model.Ascending) switch { ("RagioneSociale", true) => baseQuery.OrderBy(Cliente => Cliente.RagioneSociale), ("RagioneSociale", false) => baseQuery.OrderByDescending(Cliente => Cliente.RagioneSociale), ("Id", true) => baseQuery.OrderBy(costoservizio => costoservizio.Id), ("Id", false) => baseQuery.OrderByDescending(costoservizio => costoservizio.Id), _ => baseQuery }; IQueryable <Cliente> queryLinq = baseQuery .Where(cliente => cliente.RagioneSociale.Contains(model.Search)) .AsNoTracking(); List <ClienteViewModel> cliente = await queryLinq .Skip(model.Offset) .Take(model.Limit) .Select(cliente => cliente.ToClienteViewModel()) .ToListAsync(); int totalCount = await queryLinq.CountAsync(); ListViewModel <ClienteViewModel> result = new() { Results = cliente, TotalCount = totalCount }; return(result); }
public async Task <IActionResult> Index(ClienteListInputModel input) { ViewData["Title"] = applicationPersister.GetTitoloApp(); ListViewModel <ClienteViewModel> cliente = await clienti.GetClientiAsync(input); ClienteListViewModel viewModel = new() { Cliente = cliente, Input = input }; return(View(viewModel)); }