Esempio n. 1
0
        public IActionResult Comune_Delete(int id)
        {
            Comune comune = _context.Comuni.Where(x => x.idComune == id).FirstOrDefault();

            @ViewBag.province = _context.Province.ToList();
            return(View(comune));
        }
        static void Main(string[] args)
        {
            Console.WriteLine("SaveRecord - 2021 - di Mattia Bertozzi 4H");

            //1)
            //Leggere un file CSV con i comuni e trasformarlo in una List<Comune>

            Comuni c = new Comuni("Comuni.csv");

            Console.WriteLine($"Ho letto {c.Count} righe dal file csv");

            //2)
            //Scrivere la List<Comune> in un file binario
            c.Save();

            //3)
            //Rileggere il file binario in una List<Comune>
            c.Load();
            Console.WriteLine($"Ho letto {c.Count} righe dal file binario.");

            Console.WriteLine($"Inserire un numero: ");
            string strNumero = Console.ReadLine();
            Comune comune    = c.RicercaComune(Convert.ToInt32(strNumero));

            Console.WriteLine(comune);
        }
Esempio n. 3
0
        public static List <string> FindDifferences(Comune a, Comune b)
        {
//            var nuoviErrori = (
//                from property in a.GetType().GetProperties()
//                where property.GetValue(a) != property.GetValue(b) &&
//                      property.Name != "Id"
//                select $"{property.Name} diversa"
//            ).ToList();
            var nuoviErrori = new List <string>();

            if (a.Code != b.Code)
            {
                nuoviErrori.Add("Code diverso");
            }
            if (a.Description != b.Description)
            {
                nuoviErrori.Add("Description diverso");
            }
            if (a.NotActive != b.NotActive)
            {
                nuoviErrori.Add("NotActive diverso");
            }
            if (a.Order != b.Order)
            {
                nuoviErrori.Add("Code diverso");
            }

            return(nuoviErrori);
        }
Esempio n. 4
0
        private void button1_Click(object sender, EventArgs e)
        {
            // Lettura comuni dal file csv
            using (var reader = new StreamReader("CodiciComuni.csv"))
            {
                while (!reader.EndOfStream)
                {
                    Comune C      = new Comune();
                    var    line   = reader.ReadLine();
                    var    values = line.Split(',');

                    C._nomec  = values[1];
                    C._codice = values[0];

                    // Aggiunta del comune alla DataGridView
                    lista.Rows.Add(C._codice, C._nomec);

                    // Aggiunta del comune nella lista di oggetti Comune Comuni
                    Comuni.Add(C);
                }
            }

            // Chiama metodo ScriviBinario per scrivere il contenuto del file csv nel file binario
            ScriviBinario(Comuni);
        }
Esempio n. 5
0
        public Comune GetComuneById(int id)
        {
            Comune com = null;

            OleDbConnection c = new OleDbConnection(_connString);

            c.Open();

            OleDbCommand    cmd = new OleDbCommand("select * from TB_COMUNI where ID = " + id.ToString(), c);
            OleDbDataReader r   = cmd.ExecuteReader();

            while (r.Read())
            {
                int id1 = r.IsDBNull(0) ? -1 : (int)r.GetValue(0);
                Key k   = new Key(id1);

                string descrizione   = r.IsDBNull(1) ? null : (string)r.GetValue(1);
                int    idProvincia   = r.IsDBNull(2) ? -1 : (int)r.GetValue(2);
                int    idRegione     = r.IsDBNull(3) ? -1 : (int)r.GetValue(3);
                string cap           = r.IsDBNull(4) ? null : (string)r.GetValue(4);
                string codiceFiscale = r.IsDBNull(5) ? null : (string)r.GetValue(5);
                string codiceIstat   = r.IsDBNull(6) ? null : (string)r.GetValue(6);

                com = new Comune(k, descrizione, idProvincia, idRegione, cap, codiceFiscale, codiceIstat);
            }
            r.Close();
            c.Close();

            return(com);

            //return  _ps.GetObject("Comune", id) as Comune;
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            const int NUMERO_RECORD = 5;

            Console.WriteLine("Programma SaveRecord di Lorenzo Curzi 4H, 28/04/2021");

            // 1) Leggere un file CSV con i comuni e trasformarlo in una lista di Comune
            Comuni c = new Comuni("Comuni.csv");

            Console.WriteLine($"Ho letto {c.Count} righe");
            Console.WriteLine($"\nLe informazioni della riga {NUMERO_RECORD}: {c[NUMERO_RECORD]}");

            // 2) Scrivere la List<Comune> in un file binario
            Console.WriteLine(c.Save());

            // 3) Rileggere file binario in una List<Comune>
            Console.WriteLine(c.Load());
            Console.WriteLine($"\nHo letto {c.Count} dal file binario");
            Console.WriteLine($"\nLe informazioni della riga {NUMERO_RECORD}: {c[NUMERO_RECORD]}");

            Console.WriteLine("\nInserire un numero: ");
            string strNumero = Console.ReadLine();
            Comune cercato   = c.RicercaComune(Convert.ToInt32(strNumero));

            Console.WriteLine(cercato.NomeComune);
        }
Esempio n. 7
0
 public IActionResult Comune_Delete(Comune comune)
 {
     if (comune != null)
     {
         return(View("ConfirmDelete_Comune", comune));
     }
     return(View("Comune"));
 }
Esempio n. 8
0
        public async void PrintRaggiComuni()
        {
            ObservableCollection <ComuneSettings> settingsComuni = new ObservableCollection <ComuneSettings>(Settings.Comuni);

            _map.Pins.Clear();
            _map.Circles.Clear();

            List <Comune> comuni = await DatabaseHelper.GetComuni();

            foreach (ComuneSettings settings in settingsComuni)
            {
                Comune comune = comuni.FirstOrDefault(_comune => _comune.Name == settings.Name);
                if (comune != null)
                {
                    /*
                     * aggiungi i pin
                     */
                    Position comunePosition = new Position(comune.lat, comune.lng);
                    var      pin            = new Pin()
                    {
                        Type      = PinType.Place,
                        Label     = comune.Name,
                        Address   = settings.Range.ToString(),
                        Position  = comunePosition,
                        Rotation  = 0.0f,
                        Tag       = "id_" + comune.Name,
                        ZIndex    = 10,
                        IsVisible = true
                    };
                    _map.Pins.Add(pin);

                    /*
                     * aggiungi i raggi
                     */
                    if (settings.ShowRange) //check showRange
                    {
                        double range  = settings.Range * 1000;
                        Circle circle = new Circle()
                        {
                            IsClickable = true,
                            Center      = comunePosition,
                            Radius      = Distance.FromMeters(range),
                            StrokeColor = Color.FromHex("ff007267"),
                            StrokeWidth = 3f,
                            FillColor   = Color.FromRgba(0, 0, 255, 32),
                            Tag         = "CIRCLE",                     // Can set any object
                            ZIndex      = 10,
                        };



                        circle.Clicked += (sender, e) => Debug.WriteLine("Clicked");

                        _map.Circles.Add(circle);
                    }
                }
            }
        }
Esempio n. 9
0
        private void txtCap_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            Comune c = cboCom.SelectedItem as Comune;

            if (c != null)
            {
                txtCap.EditValue = c.CAP;
            }
        }
Esempio n. 10
0
 public IActionResult Comune_ConfirmDelete(Comune comune)
 {
     if (comune != null)
     {
         _context.Comuni.Remove(comune);
         _context.SaveChanges();
         return(RedirectToAction("Comune"));
     }
     return(View("Comune"));
 }
Esempio n. 11
0
        internal static async Task <string> ValoriDaCF(string CF)
        {
            var vRealmDb = await GetRealm(true);

            bool Corretto = CDQ.Utils.CodiceFiscale.ControlloFormaleOK(CF);

            if (Corretto)
            {
                //dato un codice fiscale restituisce la data di nascita, il comune e la provincia
                string Istat = CF.Substring(11, 4);
                string Comune;
                string Provincia;
                string DataNascita;
                string Anno;
                string Mese;
                string Giorno;
                string Months = "ABCDEHLMPRST";
                string Sesso  = "M";

                ComuniItaliani comita = vRealmDb.All <ComuniItaliani>().Where(a => a.CodiceIstat == Istat).First();

                Comune    = comita.Comune;
                Provincia = comita.SiglaProvincia;
                Anno      = CF.Substring(6, 2);
                Mese      = (Months.IndexOf(CF.Substring(8, 1)) + 1).ToString();
                Giorno    = CF.Substring(9, 2);
                if (Int32.Parse(Anno) > 30)
                {
                    Anno = (Int32.Parse(Anno) + 1900).ToString();
                }
                else
                {
                    Anno = (Int32.Parse(Anno) + 2000).ToString();
                }

                if (Int32.Parse(Mese) < 10)
                {
                    Mese = "0" + Mese;
                }

                if (Int32.Parse(CF.Substring(9, 2)) > 40)
                {
                    Giorno = (Int32.Parse(Giorno) - 40).ToString();
                    Sesso  = "F";
                }

                DataNascita = Anno + "-" + Mese + "-" + Giorno;

                return(Comune.ToUpper() + ";" + Provincia + ";" + DataNascita + ";" + Sesso);
            }
            else
            {
                return(";;;");
            }
        }
Esempio n. 12
0
        public Comune GetComuneByName(string name)
        {
            if (_hashComuni.Contains(name))
            {
                return(_hashComuni[name] as Comune);
            }
            else
            {
                Comune com = null;

                OleDbConnection c = new OleDbConnection(_connString);
                c.Open();
                string          s   = name.Replace("'", "''");
                OleDbCommand    cmd = new OleDbCommand("select * from TB_COMUNI where DESCRIZIONE = '" + s + "'", c);
                OleDbDataReader r   = cmd.ExecuteReader();

                while (r.Read())
                {
                    int id = r.IsDBNull(0) ? -1 : (int)r.GetValue(0);
                    Key k  = new Key(id);

                    string descrizione   = r.IsDBNull(1) ? null : (string)r.GetValue(1);
                    int    idProvincia   = r.IsDBNull(2) ? -1 : (int)r.GetValue(2);
                    int    idRegione     = r.IsDBNull(3) ? -1 : (int)r.GetValue(3);
                    string cap           = r.IsDBNull(4) ? null : (string)r.GetValue(4);
                    string codiceFiscale = r.IsDBNull(5) ? null : (string)r.GetValue(5);
                    string codiceIstat   = r.IsDBNull(6) ? null : (string)r.GetValue(6);

                    com = new Comune(k, descrizione, idProvincia, idRegione, cap, codiceFiscale, codiceIstat);

                    _hashComuni.Add(name, com);
                }
                r.Close();
                c.Close();



                return(com);
            }
            //Query query = _ps.CreateNewQuery("MapperComune");
            //query.SetTable("TB_COMUNI");
            //string s = name.Replace ("'","''");
            //AbstractBoolCriteria crit  = Criteria.Equal("Descrizione", "'" + s + "'");
            //query.AddWhereClause(crit);
            //IList l = query.Execute(_ps);
            //  //'questa impostazione è necessaria per quei comuni
            ////'che sono passati da una provincia all'altra
            //if (l.Count > 0)
            //{
            //    return l[l.Count - 1] as Comune;
            //}
            //return null;
        }
Esempio n. 13
0
        private ArrayList GetElementList()
        {
            GeoHandlerClass cl = new GeoHandlerClass();



            string query = "";

            if (_mode == SearchCityType.Regioni)
            {
                query = "Select * from TB_COMUNI where ID_TB_REGIONI = " + _id.ToString();
            }
            else
            {
                query = "Select * from TB_COMUNI where ID_TB_PROVINCIE = " + _id.ToString();
            }



            ArrayList       l = new ArrayList();
            OleDbConnection c = new OleDbConnection(cl.ConnectionString);

            c.Open();

            OleDbCommand    cmd = new OleDbCommand(query, c);
            OleDbDataReader r   = cmd.ExecuteReader();

            while (r.Read())
            {
                int id = r.IsDBNull(0) ? -1 : (int)r.GetValue(0);
                Key k  = new Key(id);

                string descrizione   = r.IsDBNull(1) ? null : (string)r.GetValue(1);
                int    idProvincia   = r.IsDBNull(2) ? -1 : (int)r.GetValue(2);
                int    idRegione     = r.IsDBNull(3) ? -1 : (int)r.GetValue(3);
                string cap           = r.IsDBNull(4) ? null : (string)r.GetValue(4);
                string codiceFiscale = r.IsDBNull(5) ? null : (string)r.GetValue(5);
                string codiceIstat   = r.IsDBNull(6) ? null : (string)r.GetValue(6);

                Comune com = new Comune(k, descrizione, idProvincia, idRegione, cap, codiceFiscale, codiceIstat);

                l.Add(com);
            }
            r.Close();
            c.Close();

            return(l);
        }
Esempio n. 14
0
 public IActionResult  Comune_Edit(Comune comune)
 {
     ModelState.Remove("Provincia.NomeProvincia");
     if (ModelState.IsValid)
     {
         comune.Provincia = _context.Province.Where(x => x.idProvincia == comune.Provincia.idProvincia).FirstOrDefault();
         _context.Comuni.Update(comune);
         _context.SaveChanges();
         return(RedirectToAction("Comune"));
     }
     else
     {
         @ViewBag.province = _context.Province.ToList();
         return(View(comune));
     }
 }
Esempio n. 15
0
        private static void TestInsert(ComuneService comuneService)
        {
            var comuneDaInserire = new Comune
            {
                Code        = "Bolo",
                Description = "ByNight",
                Order       = 1,
                NotActive   = "true"
            };

            var idNuovoComune  = comuneService.Save(comuneDaInserire);
            var comuneInserito = comuneService.Load(idNuovoComune);

            if (comuneInserito == null)
            {
                Log("TestInsert", "Comune non inserito");
                return;
            }
            var errori = new List <string>();

            if (idNuovoComune != comuneInserito.Id)
            {
                errori.Add("Errore nella generazione dell'Id");
            }

            errori.AddRange(FindDifferences(comuneInserito, comuneDaInserire));

            if (!CheckOrdinamentoSet(comuneService.Load().ToList()))
            {
                errori.Add("Set non ordinato");
            }

            Log("TestInsert", errori.Any()
                ? $"Errori: {string.Join("; ", errori)}"
                : "Comune inserito correttamente");
        }
Esempio n. 16
0
        public System.Collections.IList GetComuneByFiscalCode(string code)
        {
            if (_hashComuniFiscal.Contains(code))
            {
                _comuni = new ArrayList();
                Comune c = _hashComuniFiscal[code] as Comune;
                _comuni.Add(c);
                return(_comuni);
            }
            else
            {
                //if (_comuni.Count == 0)
                //{
                _comuni = new ArrayList();

                OleDbConnection c = new OleDbConnection(_connString);
                c.Open();
                string          s   = code.Replace("'", "''");
                OleDbCommand    cmd = new OleDbCommand("select * from TB_COMUNI where CODICE_FISCALE = '" + s + "'", c);
                OleDbDataReader r   = cmd.ExecuteReader();

                while (r.Read())
                {
                    int id = r.IsDBNull(0) ? -1 : (int)r.GetValue(0);
                    Key k  = new Key(id);

                    string descrizione   = r.IsDBNull(1) ? null : (string)r.GetValue(1);
                    int    idProvincia   = r.IsDBNull(2) ? -1 : (int)r.GetValue(2);
                    int    idRegione     = r.IsDBNull(3) ? -1 : (int)r.GetValue(3);
                    string cap           = r.IsDBNull(4) ? null : (string)r.GetValue(4);
                    string codiceFiscale = r.IsDBNull(5) ? null : (string)r.GetValue(5);
                    string codiceIstat   = r.IsDBNull(6) ? null : (string)r.GetValue(6);

                    Comune com = new Comune(k, descrizione, idProvincia, idRegione, cap, codiceFiscale, codiceIstat);

                    _comuni.Add(com);
                }
                r.Close();
                c.Close();

                if (_comuni.Count > 0)
                {
                    _hashComuniFiscal.Add(code, _comuni[_comuni.Count - 1] as Comune);
                }
                return(_comuni);
            }
            //}
            //else
            //{

            //}



            //Query query = _ps.CreateNewQuery("MapperComune");
            //query.SetTable("TB_COMUNI");
            //AbstractBoolCriteria crit  = Criteria.Equal("CODICE_FISCALE", "'" + code.Replace ( "'", "''") + "'");
            //query.AddWhereClause(crit);
            //IList l   = query.Execute(_ps);
            //return l;
            //return null;
        }
Esempio n. 17
0
 /// <summary>
 /// Calcola il codice fiscale a partire dai parametri inseriti
 /// </summary>
 /// <param name="nome"></param>
 /// <param name="cognome"></param>
 /// <param name="data"></param>
 /// <param name="sesso"></param>
 /// <param name="comune"></param>
 /// <returns>Restituisce la stringa del Codice fiscale calcolato sulla base dei parametri inseriti</returns>
 public static string calcola(string nome, string cognome, DateTime data, SessoCF sesso, Comune comune)
 {
     return(new String('X', 16));
 }
Esempio n. 18
0
        /// <summary>
        /// Acquisisce dal database di lavoro tutti i Dipendenti presenti e ne anonimizza (mediante selezione RND da elenchi generici) Cognome, Nome, Luogo di Nascita, Codice Fiscale
        /// </summary>
        public static void anonimizzaAnagraficheDipendenti()
        {
            const string ANONIM          = "ZX";
            const string DB_COGNOMI_NOMI = "cognominomi";

            Hashtable connectionStringElement;
            DataTable tables;
            Dictionary <int, string> cognomi;
            Dictionary <int, string> nomi;
            Dictionary <int, string> sesso;
            ArrayList unique;

            IList comuni;
            IList dipendenti;

            Random _random = new Random();

            int nRand = 0;
            int nCognome;
            int nNome;
            int nComune;

            try
            {
                cognomi = new Dictionary <int, string>();
                nomi    = new Dictionary <int, string>();
                sesso   = new Dictionary <int, string>();
                unique  = new ArrayList();

                connectionStringElement             = new Hashtable();
                connectionStringElement["Database"] = DB_COGNOMI_NOMI;

                //Vengono eseguite query RAW per non dover sviluppare tutto il sistema NHibernate anche sul db di servizio e solo per queste due SELECT
                //In considerazione del tipo di query, non vi è alcun rischio di SQL Injection o problematiche affini
                tables = DbRawManager.eseguiRawQuery("SELECT id, cognome FROM cognomi ORDER BY cognome", connectionStringElement);
                foreach (DataRow r in tables.Rows)
                {
                    cognomi[(int)r[0]] = (string)r[1];
                }

                tables = DbRawManager.eseguiRawQuery("SELECT id, nome, sesso FROM nomi ORDER BY nome", connectionStringElement);
                foreach (DataRow r in tables.Rows)
                {
                    nomi[(int)r[0]]  = (string)r[1];
                    sesso[(int)r[0]] = (string)r[2];    //M / F
                }

                comuni     = Comune.recuperaListaComuni();
                dipendenti = Dipendente.recuperaListaDipendenti();

                if (dipendenti.Count > cognomi.Count * nomi.Count)
                {
                    throw new Exception("Il numero di Dipendenti supera il totale delle anagrafiche univoche generabili");
                }

                Comune comuneDefaultIstat = new Comune();
                comuneDefaultIstat.denominazione = "placeholder";
                comuneDefaultIstat.codiceIstat   = "X001";

                using (PersistenceManager i_persistence = new PersistenceManager())
                {
                    while (nRand < dipendenti.Count)
                    {
                        Dipendente d = (Dipendente)dipendenti[nRand];
                        if (d.comuneNascita != null && d.comuneNascita.EndsWith(ANONIM))
                        {
                            nRand++;
                            continue;
                        }

                        nCognome = _random.Next(1, cognomi.Keys.Max() + 1);
                        nNome    = _random.Next(1, nomi.Keys.Max() + 1);
                        nComune  = _random.Next(1, comuni.Count);

                        if (!unique.Contains(nCognome + "|" + nNome))
                        {
                            d.cognome       = cognomi[nCognome];
                            d.nome          = nomi[nNome];
                            d.comuneNascita = ((Comune)comuni[nComune]).denominazione + ANONIM;
                            d.codiceFiscale = CodiceFiscale.calcola(d.nome, d.cognome, (d.dataNascita != null ? (DateTime)d.dataNascita : new DateTime(2021, 01, 01)), (sesso[nNome].CompareTo("M") == 0 ? CodiceFiscale.SessoCF.Maschio : CodiceFiscale.SessoCF.Femmina), comuneDefaultIstat);
                            i_persistence.modifica(d);
                            unique.Add(nCognome + "|" + nNome);
                            nRand++;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                //LOG
                throw e;
            }
        }
Esempio n. 19
0
        public static async Task SeedAsync(this ApplicationDbContext db, UserManager <Utente> userManager, RoleManager <IdentityRole> roleManager)
        {
            #region Seed comuni italiani

            if (!db.Regioni.Any() && !db.Province.Any() && !db.Comuni.Any())
            {
                var regioni  = new List <Regione>();
                var province = new List <Provincia>();
                var comuni   = new List <Comune>();

                var assembly     = typeof(DatabaseSeeder).GetTypeInfo().Assembly;
                var resourceName = $"{nameof(DataStorm)}.{nameof(Web)}.Resources.Elenco-codici-statistici-e-denominazioni-al-01_07_2016.csv";

                var primaLineaPassata = false;

                using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        while (!reader.EndOfStream)
                        {
                            var linea = reader.ReadLine();

                            if (!primaLineaPassata)
                            {
                                primaLineaPassata = true;
                                continue;
                            }

                            var celle = linea.Split(';');

                            int codiceRegione;
                            if (int.TryParse(celle[0], out codiceRegione))
                            {
                                var nomeCittà      = celle[5];
                                var nomeRegione    = celle[9];
                                var nomeProvincia  = string.Equals(celle[11], "-") ? celle[10] : celle[11];
                                var siglaProvincia = celle[13];

                                var regione = regioni.SingleOrDefault(r => r.Nome == nomeRegione);
                                if (regione == null)
                                {
                                    regione = new Regione {
                                        ID = codiceRegione, Nome = nomeRegione
                                    };
                                    regioni.Add(regione);
                                }

                                var provincia = province.SingleOrDefault(p => p.Sigla == siglaProvincia);
                                if (provincia == null)
                                {
                                    provincia = new Provincia {
                                        Sigla = siglaProvincia, Denominazione = nomeProvincia, RegioneID = regione.ID, Regione = regione
                                    };
                                    province.Add(provincia);
                                }

                                var comune = new Comune {
                                    Denominazione = nomeCittà, SiglaProvincia = siglaProvincia, Provincia = provincia
                                };
                                comuni.Add(comune);
                                db.Comuni.Add(comune);
                            }
                        }
                    }

                await db.SaveChangesAsync();
            }

            #endregion

            #region Seed Ruoli utente
            {
                var ruoli = Enum.GetValues(typeof(Ruolo)).Cast <Ruolo>();
                foreach (var ruolo in ruoli)
                {
                    var ruoloString  = Enum.GetName(typeof(Ruolo), ruolo);
                    var identityRole = await roleManager.FindByNameAsync(ruoloString);

                    if (identityRole == null)
                    {
                        identityRole = new IdentityRole {
                            Name = ruoloString
                        };
                        await roleManager.CreateAsync(identityRole);
                    }
                }
            }
            #endregion

            #region Seed Utenti
            {
                var utentiAggiunti = new List <string>();

                var ruoli = await roleManager.Roles.ToListAsync();

                foreach (var ruolo in ruoli)
                {
                    for (var i = 1; i <= 5; i++)
                    {
                        var email = $"{ruolo.Name}{i}@test.it";
                        await userManager.CreaUtente(db, email, ruolo.Name);

                        utentiAggiunti.Add(email);
                    }
                }

                var utentiDaEliminare = await userManager.Users.Where(u => !utentiAggiunti.Contains(u.Email)).ToListAsync();

                foreach (var utente in utentiDaEliminare)
                {
                    var segnalazioniDaEliminare = await db.Segnalazioni.Where(s => s.UtenteSegnalazione == utente).ToListAsync();

                    foreach (var segnalazione in segnalazioniDaEliminare)
                    {
                        db.Segnalazioni.Remove(segnalazione);
                    }

                    var immobiliDaEliminare = await db.Immobili.Where(i => i.UtenteAppartenenza == utente).ToListAsync();

                    foreach (var immobile in immobiliDaEliminare)
                    {
                        db.Immobili.Remove(immobile);
                    }

                    var eliminazioneUtente = await userManager.DeleteAsync(utente);

                    if (!eliminazioneUtente.Succeeded)
                    {
                        throw new Exception($"SEED: si sono verificati i seguenti errori durante l\'eliminazione dell\'utente {utente.Email}: {string.Join("; ", eliminazioneUtente.Errors.Select(e => e.Description))}");
                    }
                }
            }
            #endregion

            #region Seed Tipologie lavoro
            {
                foreach (var tipologiaLavoro in TipologieLavoroDefault)
                {
                    var tipologiaLavoroEsistente = await db.TipologieLavoro.FirstOrDefaultAsync(t => t.Codice == tipologiaLavoro.Codice);

                    if (tipologiaLavoroEsistente == null)
                    {
                        db.TipologieLavoro.Add(tipologiaLavoro);
                    }
                }

                await db.SaveChangesAsync();
            }
            #endregion

            #region Seed Aziende
            {
                if (!await db.Aziende.AnyAsync())
                {
                    var tipologieLavoro = await db.TipologieLavoro.ToListAsync();

                    for (var i = 1; i <= 20; i++)
                    {
                        var azienda = new Azienda
                        {
                            RagioneSociale    = $"Azienda {i} S.p.A.",
                            PartitaIva        = (123456789 + i).ToString(),
                            Citta             = "Ancona",
                            Indirizzo         = $"via Verdi {i}",
                            Posizione         = await GetRandomPuntoRegioneMarche(),
                            AziendaTipoLavoro = new List <AziendeTipoLavoro>
                            {
                                new AziendeTipoLavoro
                                {
                                    TipoLavoro = tipologieLavoro.ElementAt(Random.Next(0, tipologieLavoro.Count))
                                }
                            }
                        };

                        db.Aziende.Add(azienda);
                    }

                    await db.SaveChangesAsync();
                }
            }
            #endregion

            #region Seed Topics
            {
                foreach (var topic in TopicsEsempio)
                {
                    if (!await db.Topics.AnyAsync(t => t.Codice == topic))
                    {
                        db.Topics.Add(new Topic {
                            Codice = topic
                        });
                    }
                }

                await db.SaveChangesAsync();
            }
            #endregion

            #region Seed Avvisi
            {
                var topics = await db.Topics.ToListAsync();

                foreach (var topic in topics)
                {
                    for (var i = 1; i <= 100; i++)
                    {
                        var avviso = new Avviso
                        {
                            Titolo         = $"Avviso {topic.Codice} {i}",
                            Descrizione    = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum congue luctus dapibus. Integer ac porta lacus, ultricies aliquet purus. Etiam in ex mi. Duis commodo sit amet metus id consectetur. Aliquam mollis convallis vehicula. Morbi ultricies, dolor at condimentum mattis, arcu leo malesuada est, quis molestie ex mi id purus. Etiam auctor posuere auctor.",
                            Links          = await GetLinkEsempio(),
                            ImmaginiAvviso = await GetImmaginiEsempio(),
                            AreeMappe      = new List <AreaMappa>
                            {
                                new AreaMappa
                                {
                                    TipoMappa  = TipoAreaMappa.Punto,
                                    PuntiMappa = new List <PuntoMappa> {
                                        await GetRandomPuntoRegioneMarche()
                                    }
                                }
                            }
                        };

                        avviso.AvvisiTopics = new List <AvvisoTopic> {
                            new AvvisoTopic {
                                AvvisoRiferimento = avviso, TopicRiferimento = topic
                            }
                        };

                        if (!await db.Avvisi.AnyAsync(a => a.Titolo == avviso.Titolo))
                        {
                            db.Avvisi.Add(avviso);
                        }
                    }
                }

                await db.SaveChangesAsync();
            }
            #endregion

            #region Seed Segnalazioni
            {
                if (!await db.Segnalazioni.AnyAsync())
                {
                    var tipologieSegnalazioni = Enum.GetValues(typeof(TipologiaSegnalazione)).Cast <TipologiaSegnalazione>().ToArray();

                    var utenti = await userManager.Users.ToListAsync();

                    foreach (var utente in utenti)
                    {
                        if (await userManager.IsInRoleAsync(utente, nameof(Ruolo.Cittadino)))
                        {
                            for (var i = 1; i <= 10; i++)
                            {
                                var segnalazione = new Segnalazione
                                {
                                    Descrizione        = $"Segnalazione {i}",
                                    Localizzazione     = await GetRandomPuntoRegioneMarche(),
                                    TipoSegnalazione   = tipologieSegnalazioni[Random.Next(tipologieSegnalazioni.Length)],
                                    UtenteSegnalazione = utente
                                };

                                db.Segnalazioni.Add(segnalazione);
                            }

                            await db.SaveChangesAsync();
                        }
                    }
                }
            }
            #endregion
        }