/// <summary>
        /// Prende dal database tutti i veicoli appartenenti alle tabella "Moto" e gli restituisce in una lista.
        /// </summary>
        /// <param name="list">Lista passata per referenza nella quale sono contenuti i veicoli.</param>
        public void GetVeicolListMoto(ref SerialBindList <Veicolo> list)
        {
            if (connStr != null)
            {
                OleDbConnection con = new OleDbConnection(connStr);
                using (con)
                {
                    try
                    {
                        con.Open();

                        OleDbCommand    cmd    = new OleDbCommand("SELECT * FROM Moto;", con);
                        OleDbDataReader reader = cmd.ExecuteReader();
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                float f;
                                float.TryParse(reader[9].ToString(), out f);
                                list.Add(new Moto(reader[0].ToString(), reader[1].ToString(), reader[2].ToString(), reader[3].ToString(), Convert.ToDouble(reader[4].ToString()), Convert.ToDouble(reader[5].ToString()), Convert.ToDateTime(reader[6].ToString()), Convert.ToBoolean(reader[7].ToString()), Convert.ToBoolean(reader[8].ToString()), f, reader[10].ToString(), Convert.ToDouble(reader[11].ToString()), reader[12].ToString()));
                            }
                            reader.Close();
                        }
                    }
                    catch (OleDbException exc)
                    {
                        Error(exc);
                        return;
                    }
                }
            }
        }
        /// <summary>
        /// Controlla che si sia un file con i dati dei veicoli. In caso non ci sia può creare un file con dati di test, annullare e quindi chiudere l'applicazione o
        /// caricare il progetto senza dati.
        /// </summary>
        /// <param name="listaVeicoli">Contiene/Conterrà i dati presenti nel file Veicoli.json</param>
        public static void loadData(SerialBindList <Veicolo> listaVeicoli)
        {
            if (File.Exists(jsonSave))
            {
                DialogResult result = MessageBox.Show("Nessun dato all'interno del database. Caricare salvataggio di backup?", "Autosalone Nico", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                switch (result)
                {
                case DialogResult.Yes:
                    apriSalvataggi(listaVeicoli, jsonSave);
                    break;

                default:
                    break;
                }
            }

            /*
             * else
             * {
             *  DialogResult result = MessageBox.Show("Carcare dati di test?", "Autosalone Nico", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
             *  switch (result)
             *  {
             *      case DialogResult.Cancel:
             *          Application.Exit();
             *          break;
             *      case DialogResult.Yes:
             *          caricaDatiDiTest(listaVeicoli);
             *          break;
             *      default:
             *          break;
             *  }
             * }
             */
        }
        /// <summary>
        /// Tramite una regular expression controlla la targa
        /// </summary>
        /// <returns>True se la targa va bene, false se la targa non è accettabile.</returns>
        public static bool checkTarga(ref string targa, SerialBindList <Veicolo> listaVeicoli)
        {
            Regex rgx = new Regex(@"[A - Za - z]{ 2}[0-9]{3}[A-Za-z]{2}");

            if (targa == "")
            {
                targa = makeTarga(listaVeicoli);
                return(true);
            }
            else if (rgx.IsMatch(targa))
            {
                foreach (Veicolo v in listaVeicoli)
                {
                    if (v.Targa == targa.ToUpper())
                    {
                        return(false);
                    }
                }
                return(true);
            }
            else
            {
                return(false);
            }
        }
 /// <summary>
 /// Crea un riferimento alla lista con tutti i veicoli,
 /// imposta a none il valore del bordo della textbox di pre-view a none in maniera
 /// da renderla presente ma non visibile fino a quando non si sceglie un colore,
 /// autoseleziona come veicolo una moto.
 /// </summary>
 /// <param name="listaVeicoli">Riferimento alla lista contenente tutti i dati ed i veicoli</param>
 public AddNewVeicolo(SerialBindList <Veicolo> listaVeicoli)
 {
     InitializeComponent();
     this.listaVeicoli            = listaVeicoli;
     provaBackground.BorderStyle  = BorderStyle.None;
     cmbTipoVeicolo.SelectedIndex = 0;
 }
        private static string noImgPath           = Path.Combine(imgDirectoryPath, Properties.Resources.NO_Img);                                                     //Percorso del file contenente il database.

        #endregion pathVariables

        #region salvataggi

        /// <summary>
        /// Crea dei dati statici per effettuare un test delle funzionalità.
        /// Aggiornato: 14/12/2019.
        /// </summary>
        /// <where>Main riga:35</where>
        public static void caricaDatiDiTest(SerialBindList <Veicolo> listaVeicoli)
        {
            Moto m = new Moto("exp0", "Honda", "Tsunami", "Rosso", 1000, 120, DateTime.Now, false, false, 0, "Quintino", 1035);

            listaVeicoli.Add(m);
            Automobili a = new Automobili("exp1", "Jeep", "Compass", "Blue", 1600, 90, DateTime.Now, false, false, 0, 8, 1235);

            listaVeicoli.Add(a);
        }
        /// <summary>
        /// Cerca il veicolo con la targa corrispondente.
        /// </summary>
        /// <param name="list">Lista dei veicoli.</param>
        /// <param name="targa">Targa da controllare.</param>
        /// <param name="ve">Parametro referenziale dove vado a inserire il veicolo al quale corrisponde la targa.</param>
        /// <returns>True se esiste un veicolo con quella targa, false se non esiste.</returns>
        private static bool existTarga(SerialBindList <Veicolo> list, string targa, ref Veicolo ve)
        {
            bool exist = false;

            foreach (Veicolo v in list)
            {
                if (v.Targa == targa)
                {
                    exist = true;
                    ve    = v;
                }
            }
            return(!exist);
        }
        /// <summary>
        /// Crea una targa che possa funzionare da id e non vada in errore
        /// </summary>
        /// <param name="listaVeicoli">Per selezionare l'ultima targa "non immatricolata"</param>
        /// <returns></returns>
        public static string makeTarga(SerialBindList <Veicolo> listaVeicoli)
        {
            int numTarga = 0;

            foreach (Veicolo item in listaVeicoli)
            {
                if (item.Targa.Contains("EXP"))
                {
                    int aus = Convert.ToInt32(item.Targa.Substring(3));
                    if (aus > numTarga)
                    {
                        numTarga = aus;
                    }
                }
            }
            return($"EXP{numTarga + 1}");
        }
        /// <summary>
        /// Da un file orignie ".json", carico la lista con i dati presenti nel file.
        /// </summary>
        /// <param name="listaVeicoli">Lista di destinazione degi oggetti del file ".json".</param>
        /// <param name="path">Path di provenienza del file ".json".</param>
        public static void apriSalvataggi(SerialBindList <Veicolo> listaVeicoli, string path)
        {
            string json = File.ReadAllText(path);

            object[] veicoli = JsonConvert.DeserializeObject <object[]>(json);
            for (int i = 0; i < veicoli.Length; i++)
            {
                Moto       moto    = new Moto();
                Automobili auto    = new Automobili();
                string     veicolo = veicoli[i].ToString();
                if (veicolo.Contains("MarcaSella"))
                {
                    JsonConvert.PopulateObject(veicolo, moto);
                    listaVeicoli.Add(moto);
                }
                else
                {
                    JsonConvert.PopulateObject(veicolo, auto);
                    listaVeicoli.Add(auto);
                }
            }
        }
 /// <summary>
 /// Richiamato tutte le volte che devo cambiare i veicoli all'interno della dgv.
 /// </summary>
 /// <param name="dgv">Elemento della form dove carico i dati.</param>
 /// <param name="listaVeicoli">Lista che contiene i veicoli.</param>
 /// <param name="visual">Campo che mi indica quale tipo di veicolo devo inserire nella form.</param>
 public static void visualNew(DataGridView dgv, SerialBindList <Veicolo> listaVeicoli, int visual)
 {
     settaDgv(dgv, visual);
     foreach (Veicolo item in listaVeicoli)
     {
         if (visual == 0)
         {
             if ((item.GetType().ToString()).Contains("Automobili"))
             {
                 dgv.Rows.Add(item.ToString().Split('£'));
             }
         }
         else
         {
             if ((item.GetType().ToString()).Contains("Moto"))
             {
                 dgv.Rows.Add(item.ToString().Split('£'));
             }
         }
     }
     dgv.ClearSelection();
 }
Exemple #10
0
 /// <summary>
 /// Evento generato automaticamente sul cambio della proprietà SelectedIndex della combobox cmbVisual.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmbVisual_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (cmbVisual.SelectedIndex != 2)
     {
         rtbReport.Visible = false;
         dgvVisual.Visible = true;
         Utils.visualNew(dgvVisual, listaVeicoli, cmbVisual.SelectedIndex);
     }
     else
     {
         SerialBindList <Veicolo> listReport = new SerialBindList <Veicolo>();
         try
         {
             dbManagement.GetVeicolListReport(ref listReport);
             if (listReport.Count > 0)
             {
                 rtbReport.Visible = true;
                 dgvVisual.Visible = false;
                 foreach (Veicolo item in listReport)
                 {
                     rtbReport.Text = $"{(item is Moto ? "Moto" : "Automobile")}: {item.ToString().Replace("£", " ")}";
                 }
             }
             else
             {
                 MessageBox.Show("Non ci sono report da visualizzare.", "Autosalone Nico");
                 cmbVisual.SelectedIndex = 0;
             }
         }
         catch (Exception)
         {
             MessageBox.Show("Impossibile accedere ai report delle vendite. Contattare l'amministratore del database.", "Autosalone Nico");
             cmbVisual.SelectedIndex = 0;
         }
     }
 }
Exemple #11
0
 /// <summary>
 /// Mi salvo i riferimenti al veicolo e alla lista dove, nel caso di modifica, vado a modificare anche lì il veicolo o nel caso di vendita di esso vado a rimuoverlo.
 /// </summary>
 /// <param name="v"></param>
 /// <param name="l"></param>
 public VisualizzaModifica(Veicolo v, ref SerialBindList <Veicolo> l)
 {
     InitializeComponent();
     veicolo     = v;
     listVeicoli = l;
 }
        /// <summary>
        /// Chidede se si vuole modificare ogni parametro e, in caso di assenso, lo accoda alla query.
        /// </summary>
        /// <param name="list">Lista dei veicoli compresi in 'Moto' e 'Automobili'</param>
        /// <returns>Stringa contenente la query di update o, nel caso di voler uscire la x che indica l'uscita dal sottoprogramma</returns>
        private static string makequery(SerialBindList <Veicolo> list)
        {
            string  query = "", targa1;
            Veicolo v = new Automobili();

            Console.Clear();
            do
            {
                Console.Write("Inserisci la targa del veicolo da modificare(x per uscire): ");
                targa1 = Console.ReadLine().ToUpper();
            } while (existTarga(list, targa1, ref v) && targa1 != "X");
            if (targa1 != "X")
            {
                try
                {
                    string aus = $"UPDATE {(v is Moto ? "Moto" : "Automobili")} SET ";
                    string ins = "";
                    Console.Write("Inserisci la nuova targa (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        if (Utils.checkTarga(ref ins, list))
                        {
                            aus += $"Targa = '{ins}',";
                        }
                    }

                    Console.Write("Inserisci la nuova marca (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Marca = '{ins}',";
                    }

                    Console.Write("Inserisci il nuovo modello (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Modello = '{ins}',";
                    }

                    Console.Write("Inserisci la nuova colore (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Colore = '{ins}',";
                    }

                    Console.Write("Inserisci la nuova cilindrata (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Cilindrata = {Convert.ToDouble(ins)},";
                    }

                    Console.Write("Inserisci la nuova potenza (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Potenza = {Convert.ToDouble(ins)},";
                    }

                    Console.Write("Inserisci la nuova data di immatricolazione(formato aaaa/mm/gg) (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Immatricolazione = #{Convert.ToDateTime(ins)}#,";
                    }

                    Console.Write("Inserisci la nuova definizione di usato(true o false) (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"Usato = {Convert.ToBoolean(ins)}, ";
                        if (ins == "true")
                        {
                            Console.Write("Inserisci la nuova definizione di km0(true o false) (invio per non modificare): ");
                            ins = Console.ReadLine();
                            if (ins != "")
                            {
                                aus += $"Km0 = {Convert.ToBoolean(ins)}, ";
                                if (ins == "false")
                                {
                                    Console.Write("Inserisci i nuovi kmPercorsi (invio per non modificare): ");
                                    ins = Console.ReadLine();
                                    if (ins != "")
                                    {
                                        aus += $"KmPercorsi = {Convert.ToDouble(ins)},";
                                    }
                                }
                            }
                        }
                    }

                    if (v is Moto)
                    {
                        Console.Write("Inserisci la nuova marcaSella (invio per non modificare): ");
                        ins = Console.ReadLine();
                        if (ins != "")
                        {
                            aus += $"Marcasella = '{ins}',";
                        }
                        doneMoto = false;
                    }
                    else
                    {
                        Console.Write("Inserisci il nuovo numero di airbag (invio per non modificare): ");
                        ins = Console.ReadLine();
                        if (ins != "")
                        {
                            aus += $"NumAirbag = {Convert.ToInt32(ins)},";
                        }
                        doneAuto = false;
                    }

                    Console.Write("Inserisci il nuovo percorso dell'immagine (invio per non modificare): ");
                    ins = Console.ReadLine();
                    if (ins != "")
                    {
                        aus += $"imgPath = '{ins}',";
                    }

                    if (aus.Length > 22)
                    {
                        int i = aus.LastIndexOf(',');
                        query  = aus.Substring(0, i);
                        query += $" WHERE Targa = '{targa1}';";
                    }
                    else
                    {
                        Console.WriteLine("Parametri insufficenti.");
                        query = "";
                        System.Threading.Thread.Sleep(1500);
                    }
                    return(query);
                }
                catch (Exception exc)
                {
                    Console.WriteLine($"\n{exc.Message}\nPremere un tasto qualsiasi per continuare.");
                    Console.ReadKey();
                }
            }
            return("x");
        }