コード例 #1
0
        public async Task <IActionResult> Index(ComuneElencoInputModel input)
        {
            ViewBag.Titolo = "Kampus Studio - Elenco comuni";
            ListViewModel <ComuneViewModel> comuni = await comuneService.GetComuniAsync(input);

            ComuneListViewModel viewModel = new ComuneListViewModel
            {
                Comuni = comuni,
                Input  = input
            };

            return(View(viewModel));
        }
コード例 #2
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            //Recuperiamo i valori grazie ai value provider
            string search     = bindingContext.ValueProvider.GetValue("Search").FirstValue;
            string searchType = bindingContext.ValueProvider.GetValue("SearchType").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);
            string cap      = bindingContext.ValueProvider.GetValue("Cap").FirstValue;
            string prefisso = bindingContext.ValueProvider.GetValue("Prefisso").FirstValue;
            string belfiore = bindingContext.ValueProvider.GetValue("Belfiore").FirstValue;

            //Creiamo l'istanza del ComuneElencoInputModel
            var inputModel = new ComuneElencoInputModel(search, searchType, page, orderBy, ascending, cap, prefisso, belfiore);

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

            //Restituiamo un task completato
            return(Task.CompletedTask);
        }
コード例 #3
0
        public async Task <ListViewModel <ComuneViewModel> > GetComuniAsync(ComuneElencoInputModel model)
        {
            string            direction = model.Ascending ? "ASC" : "DESC";
            FormattableString query     = $"";

            if (model.SearchType == "Nome comune")
            {
                query = $@"SELECT * FROM comuni WHERE nomeComune LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"}  AND codiceCatastale LIKE {"%" + model.Belfiore + "%"} ORDER BY {(Sql) model.OrderBy} {(Sql) direction} LIMIT {model.Limit} OFFSET {model.Offset}; 
                SELECT COUNT(*) FROM comuni WHERE nomeComune LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"} AND codiceCatastale LIKE {"%" + model.Belfiore + "%"}";
            }

            if (model.SearchType == "CAP")
            {
                query = $@"SELECT * FROM comuni WHERE cap LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"}  AND codiceCatastale LIKE {"%" + model.Belfiore + "%"} ORDER BY {(Sql) model.OrderBy} {(Sql) direction} LIMIT {model.Limit} OFFSET {model.Offset}; 
                SELECT COUNT(*) FROM comuni WHERE cap LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"} AND codiceCatastale LIKE {"%" + model.Belfiore + "%"}";
            }

            if (model.SearchType == "Prefisso")
            {
                query = $@"SELECT * FROM comuni WHERE prefisso LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"}  AND codiceCatastale LIKE {"%" + model.Belfiore + "%"} ORDER BY {(Sql) model.OrderBy} {(Sql) direction} LIMIT {model.Limit} OFFSET {model.Offset}; 
                SELECT COUNT(*) FROM comuni WHERE prefisso LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"} AND codiceCatastale LIKE {"%" + model.Belfiore + "%"}";
            }

            if (model.SearchType == "Belfiore")
            {
                query = $@"SELECT * FROM comuni WHERE codiceCatastale LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"}  AND codiceCatastale LIKE {"%" + model.Belfiore + "%"} ORDER BY {(Sql) model.OrderBy} {(Sql) direction} LIMIT {model.Limit} OFFSET {model.Offset}; 
                SELECT COUNT(*) FROM comuni WHERE prefisso LIKE {"%" + model.Search + "%"} AND cap LIKE {"%" + model.Cap + "%"} AND prefisso LIKE {"%" + model.Prefisso + "%"} AND codiceCatastale LIKE {"%" + model.Belfiore + "%"}";
            }

            DataSet dataSet = await db.QueryAsync(query);

            var dataTable  = dataSet.Tables[0];
            var comuneList = new List <ComuneViewModel>();

            foreach (DataRow comuneRow in dataTable.Rows)
            {
                ComuneViewModel comune = ComuneViewModel.FromDataRow(comuneRow);
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- INIZIO
                FormattableString queryReg   = $"SELECT * FROM regioni WHERE codiceRegione={comuneRow["codiceRegione"]}";
                DataSet           dataSetReg = await db.QueryAsync(queryReg);

                var regioneTable = dataSetReg.Tables[0];
                if (regioneTable.Rows.Count != 1)
                {
                    throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {comuneRow["regione"]}");
                }
                var regioneRow = regioneTable.Rows[0];
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- FINE
                var regioneViewModel = RegioneViewModel.FromDataRow(regioneRow);
                comune.regione = (RegioneViewModel)regioneViewModel;

                // Questo codice dovrebbe essere interamente sostituito con la funzione GetProvinciaAsync -- INIZIO
                FormattableString queryPro   = $"SELECT * FROM province WHERE codiceProvincia={comuneRow["codiceProvincia"]}";
                DataSet           dataSetPro = await db.QueryAsync(queryPro);

                var provinciaTable = dataSetPro.Tables[0];
                if (provinciaTable.Rows.Count != 1)
                {
                    throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {comuneRow["provincia"]}");
                }
                var provinciaRow = provinciaTable.Rows[0];
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetProvinciaAsync -- FINE
                var provinciaViewModel = ProvinciaViewModel.FromDataRow(provinciaRow);
                comune.provincia = (ProvinciaViewModel)provinciaViewModel;

                comuneList.Add(comune);
            }
            ListViewModel <ComuneViewModel> result = new ListViewModel <ComuneViewModel>
            {
                Results    = comuneList,
                TotalCount = Convert.ToInt32(dataSet.Tables[1].Rows[0][0])
            };

            return(result);
        }