Пример #1
0
        public async Task <RegioneViewModel> GetRegioneAsync(int id)
        {
            FormattableString query   = $"SELECT * FROM regioni WHERE codiceRegione={id}";
            DataSet           dataSet = await db.QueryAsync(query);

            var regioneTable = dataSet.Tables[0];

            if (regioneTable.Rows.Count != 1)
            {
                throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {id}");
            }
            var regioneRow       = regioneTable.Rows[0];
            var regioneViewModel = RegioneViewModel.FromDataRow(regioneRow);

            // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- INIZIO
            FormattableString queryCom   = $"SELECT * FROM comuni WHERE codiceCatastale={regioneRow["codiceCapoluogo"]}";
            DataSet           dataSetCom = await db.QueryAsync(queryCom);

            var comuneTable = dataSetCom.Tables[0];

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

            regioneViewModel.codiceCapoluogo = (ComuneViewModel)comuneViewModel;

            return(regioneViewModel);
        }
Пример #2
0
        public async Task <ComuneViewModel> GetComuneAsync(string id)
        {
            FormattableString query   = $"SELECT * FROM comuni WHERE codiceCatastale={id}";
            DataSet           dataSet = await db.QueryAsync(query);

            var comuneTable = dataSet.Tables[0];

            if (comuneTable.Rows.Count != 1)
            {
                throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {id}");
            }
            var comuneRow       = comuneTable.Rows[0];
            var comuneViewModel = ComuneViewModel.FromDataRow(comuneRow);

            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];
            var regioneViewModel = RegioneViewModel.FromDataRow(regioneRow);

            comuneViewModel.regione = (RegioneViewModel)regioneViewModel;


            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];
            var provinciaViewModel = ProvinciaViewModel.FromDataRow(provinciaRow);

            comuneViewModel.provincia = (ProvinciaViewModel)provinciaViewModel;

            return(comuneViewModel);
        }
Пример #3
0
        public async Task <List <RegioneViewModel> > GetRegioniAsync()
        {
            // seleziona tutte le regioni in ordine alfabetico
            FormattableString query   = $"SELECT * FROM regioni ORDER BY nomeRegione;";
            DataSet           dataSet = await db.QueryAsync(query);

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

            foreach (DataRow regioneRow in dataTable.Rows)
            {
                RegioneViewModel regione = RegioneViewModel.FromDataRow(regioneRow);
                // Per ogni regione seleziona il suo capoluogo
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- INIZIO
                FormattableString queryCom   = $"SELECT * FROM comuni WHERE codiceCatastale={regioneRow["codiceCapoluogo"]}";
                DataSet           dataSetCom = await db.QueryAsync(queryCom);

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



                // Per ogni regione conta il numero dei suoi comuni
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- INIZIO
                FormattableString queryCom2   = $"SELECT COUNT(*) FROM comuni WHERE codiceRegione={regioneRow["codiceRegione"]}";
                DataSet           dataSetCom2 = await db.QueryAsync(queryCom2);

                var comuneTable2 = dataSetCom2.Tables[0];
                if (comuneTable2.Rows.Count != 1)
                {
                    throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {regioneRow["codiceCapoluogo"]}");
                }
                regione.numComuni = (int)(long)comuneTable2.Rows[0][0];
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- FINE



                // Per ogni regione conta il numero dei suoi abitanti totali
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- INIZIO
                FormattableString queryCom3   = $"SELECT SUM(abitanti) FROM comuni WHERE codiceRegione={regioneRow["codiceRegione"]}";
                DataSet           dataSetCom3 = await db.QueryAsync(queryCom3);

                var comuneTable3 = dataSetCom3.Tables[0];
                if (comuneTable3.Rows.Count != 1)
                {
                    throw new InvalidOperationException($"Mi aspettavo che venisse restituita solo una riga della tabella {regioneRow["codiceCapoluogo"]}");
                }
                regione.abitanti = (int)(decimal)comuneTable3.Rows[0][0];
                // Questo codice dovrebbe essere interamente sostituito con la funzione GetRegioneAsync -- FINE



                regioneList.Add(regione);
            }
            return(regioneList);
        }
Пример #4
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);
        }