/// <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(); }
/// <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; } } }
/// <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"); }