Example #1
0
        public async Task <IActionResult> Index(BeneficiarioListInputModel model)
        {
            ViewData["Title"] = "Lista Beneficiari".ToUpper();
            ListViewModel <BeneficiarioViewModel> viewModel = new();

            viewModel = await service.GetBeneficiariAsync(model);

            BeneficiarioListViewModel view = new BeneficiarioListViewModel {
                Beneficiari = viewModel,
                Input       = model
            };

            return(View(view));
        }
Example #2
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            //Recuperiamo i valori grazie ai value provider
            string search  = bindingContext.ValueProvider.GetValue("Search").FirstValue;
            string orderBy = bindingContext.ValueProvider.GetValue("OrderBy").FirstValue;

            int.TryParse(bindingContext.ValueProvider.GetValue("Page").FirstValue, out int page);
            bool.TryParse(bindingContext.ValueProvider.GetValue("Ascending").FirstValue, out bool ascending);

            //Creiamo l'istanza del CourseListInputModel
            BeneficiariOptions options = coursesOptions.CurrentValue;
            var inputModel             = new BeneficiarioListInputModel(search, page, orderBy, ascending, options.PerPage, options.Order);

            //Impostiamo il risultato per notificare che la creazione รจ avvenuta con successo
            bindingContext.Result = ModelBindingResult.Success(inputModel);

            //Restituiamo un task completato
            return(Task.CompletedTask);
        }
Example #3
0
        public async Task <ListViewModel <BeneficiarioViewModel> > GetBeneficiariAsync(BeneficiarioListInputModel model)
        {
            IQueryable <Beneficiario> baseQuery = dbContext.Beneficiari;

            switch (model.OrderBy)
            {
            case "Beneficiario":
                if (model.Ascending)
                {
                    baseQuery = baseQuery.OrderBy(z => z.Sbeneficiario);
                }
                else
                {
                    baseQuery = baseQuery.OrderByDescending(z => z.Sbeneficiario);
                }
                break;

            case "Descrizione":
                if (model.Ascending)
                {
                    baseQuery = baseQuery.OrderBy(z => z.Descrizione);
                }
                else
                {
                    baseQuery = baseQuery.OrderByDescending(z => z.Descrizione);
                }
                break;
            }
            IQueryable <BeneficiarioViewModel> queryLinq = baseQuery
                                                           .AsNoTracking()
                                                           .Where(beneficiari => beneficiari.Sbeneficiario.Contains(model.Search))
                                                           .Select(beneficiari => BeneficiarioViewModel.FromEntity(beneficiari)); //Usando metodi statici come FromEntity, la query potrebbe essere inefficiente. Mantenere il mapping nella lambda oppure usare un extension method personalizzato
            List <BeneficiarioViewModel> beneficiari = await queryLinq
                                                       .Skip(model.Offset)
                                                       .Take(model.Limit)
                                                       .ToListAsync(); //La query al database viene inviata qui, quando manifestiamo l'intenzione di voler leggere i risultati

            int totalCount = await queryLinq.CountAsync();

            ListViewModel <BeneficiarioViewModel> results = new ListViewModel <BeneficiarioViewModel>
            {
                Results    = beneficiari,
                TotalCount = totalCount
            };

            return(results);
        }
 public Task <ListViewModel <BeneficiarioViewModel> > GetBeneficiariAsync(BeneficiarioListInputModel model)
 {
     return(beneficiarioService.GetBeneficiariAsync(model));
 }