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);
        }
Example #2
0
        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));
        }