/// <summary> /// Konstruktören för FormBoka-formen, här börjar koden från FormBoka. /// Här initalieras alla komponenter och kund objektet sparas som global variabel för formen. /// /// Här tas även bilarna fram och sparas i Listan kundbilar. /// </summary> /// <param name="anvandare">Kund objektet för den som bokar</param> public FormBoka(kund anvandare) { InitializeComponent(); SqlCeDatabase db = new SqlCeDatabase(); bil_objekt bil = new bil_objekt(); this.anvandare = anvandare; List<string> kundBilar = new List<string>(); // Kolla efter bilar registrerade till kunden / användaren. if (bil.kollaKundsBilar(anvandare,"reg") == 2) { if (DEBUG) richTextBoxBokningMeny.Text = "Något är fel med kollaKundsBilar-funktionen i bil_objekt.cs"; } else if (bil.kollaKundsBilar(anvandare) == 0) { kundBilar.AddRange(bil.GetTmpMsgs()); this.kundHarReggadBil = true; } // Lägg till en rad "Ny bil..." och lägg till bilarna till regnr-comboboxens datasource kundBilar.Add("Ny bil..."); comboBoxReg.DataSource = kundBilar; // Fixar så man bara kan välja ett datum i monthCalendar1. monthCalendar1.MaxSelectionCount = 1; panelTider.Hide(); buttonBoka.Hide(); richTextBoxBokningMeny.Text = "Tryck på Ny bokning för att göra en ny bokning.\nTryck på Mina Bokningar för att se vad du har bokat och när."; if (DEBUG) { richTextBoxBokningMeny.Text += "\nNamn: " + anvandare.GetNamn(); richTextBoxBokningMeny.Text += "\nEmail: " + anvandare.GetEmail(); richTextBoxBokningMeny.Text += "\nPersonnummer: " + anvandare.GetPersonnummer(); } }
/// <summary> /// Skriver ut i en tabellayout med all iformation som är nödvändig för kunden /// </summary> /// <param name="typ">Vilken typ kunden vill ha</param> /// <param name="startdag">Startdagen för hyrningen</param> /// <param name="slutdag">Slutdagen för hyrningen</param> private void HyrablaFordon(string typ, string startdag, string slutdag) { bil_objekt hyrabel = new bil_objekt(); int hyrabelStatus = hyrabel.kollaLedigaHyrFordon(typ, startdag, slutdag); if (hyrabelStatus == 10) { this.tableLayoutPanelTyp.Hide(); this.labelFordonsTypMeddelande.Text = "Det finns inga lediga fordon utav denna typ under din önskade tid"; this.labelFordonsTypMeddelande.Show(); } else if (hyrabelStatus == 0) { tableLayoutPanelTyp.Visible = true; panelTyp.Show(); string[] ledigaFordon = hyrabel.GetTmpMsgs(); SortedList<string, string>[] hyrabelInformation = hyrabel.hamtaValtHyrfordon(ledigaFordon); int length = ledigaFordon.Length; for (int i = 0; i < length; i++) { Label labelLedigaFordonMarke = new Label(), labelLedigaFordonModell = new Label(), labelLedigaFordonArsmodell = new Label(), labelLedigaFordonReg = new Label(), labelLedigaFordonHyr = new Label(); Label[] labelFordon = { labelLedigaFordonReg, labelLedigaFordonMarke, labelLedigaFordonModell, labelLedigaFordonArsmodell, labelLedigaFordonHyr }; for (int o = 0; o < 5; o++) { switch (o) { case 0: labelFordon[o].Text = hyrabelInformation[i]["regnr"]; break; case 1: labelFordon[o].Text = hyrabelInformation[i]["marke"]; break; case 2: labelFordon[o].Text = hyrabelInformation[i]["modell"]; break; case 3: labelFordon[o].Text = hyrabelInformation[i]["arsmodell"]; break; case 4: labelFordon[o].Text = "Hyr"; labelFordon[o].Name = "Hyr_" + hyrabelInformation[i]["regnr"]; labelFordon[o].Cursor = Cursors.Hand; labelFordon[o].Click += new System.EventHandler(this.Hyr); break; } this.tableLayoutPanelTyp.Controls.Add(labelFordon[o]); } } } }
/// <summary> /// Funktion som hyr det valda fordonet /// </summary> /// <param name="sender">label</param> /// <param name="e"></param> private void Hyr(object sender, EventArgs e) { hyrnings_objekt hyrning = new hyrnings_objekt(new SqlCeDatabase(), this.anvandare); bil_objekt hyrabel = new bil_objekt(); Label hyr = sender as Label; string reg = hyr.Name.Substring(4); if (hyrning.hyra(this.anvandare, startdag.ToShortDateString(), slutdag.ToShortDateString(), reg)) { DoljHyr(); richTextBoxMeddelandenHyra.Text = "Bokningen genomfördes utan problem."; richTextBoxMeddelandenHyra.Text += "\n\nDu har nu hyrt en;\n" + fordon as string + "\nRegnummer: " + reg + "\nStartdagen: " + startdag.ToShortDateString() + "\nSlutdagen: " + slutdag.ToShortDateString(); } else { richTextBoxMeddelandenHyra.Text = "Det blev något fel med hyrningen"; string[] felmeddelande = hyrning.GetTmpMsgs(); if (DEBUG) { richTextBoxMeddelandenHyra.ScrollBars = RichTextBoxScrollBars.ForcedBoth; richTextBoxMeddelandenHyra.Text += "\n**** FELMEDDELANDE ****"; foreach (string fel in felmeddelande) richTextBoxMeddelandenHyra.Text += "\n" + fel + "\n"; } } }
/// <summary> /// Bokar en tid för ett fordon för en kund som är oregistread /// </summary> /// <param name="fnamn">Förnamnet på kunden</param> /// <param name="enamn">Efternamnet på kunden</param> /// <param name="regnr">Fordonets registreringsnummer</param> /// <param name="datum">Bokningens datum</param> /// <param name="marke">Fordonets marke</param> /// <param name="modell">Fordonets modell</param> /// <param name="arsmodell">Fordonets årsmodell</param> /// <returns></returns> public bool boka(string fnamn, string enamn, string tfn, string regnr, string datum, string marke, string modell, string arsmodell, string agare, string spec) { List<string> errorMsgs = new List<string>(); SqlCeDatabase db = new SqlCeDatabase(); bil_objekt bil = new bil_objekt(); string tid = datum.Substring(11); datum = datum.Substring(0, 10); int kod = bil.insertFordon(regnr, modell, arsmodell, marke, agare); if (kod == 0) { string query = "INSERT INTO Bokning " + "(datum, fnamn, enamn, bil, tfn, tid, spec) " + "VALUES ('?x?','?x?','?x?', '?x?', '?x?', '?x?', '?x?')"; string[] args = { datum, fnamn, enamn, regnr, tfn, tid, spec }; if (db.query(query, args) == 0) { int opResultat = db.operation(); if (opResultat == 0) return true; else { errorMsgs.Add("Det blev något fel när din bokning skulle processeras. Kontakta systemansvarig"); if (DEBUG) errorMsgs.AddRange(db.GetTmpMsgs()); } } else { errorMsgs.Add("Det blev ett fel vid skapandet av frågan. Kontakta ansvarig för programmet."); if (DEBUG) errorMsgs.AddRange(db.GetTmpMsgs()); } } else { if (DEBUG) errorMsgs.AddRange(bil.GetTmpMsgs()); else errorMsgs.Add("Det blev något fel när ditt fordon skulle registreras"); } if (errorMsgs.Count > 0) { this.tmpMsgs = errorMsgs.ToArray(); } return false; }
/// <summary> /// Funktion som använder sig av hamtaValtFordon för att hämta information och sen skriver den fordonets information i richTextBoxInfoBil /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void fordonsInfo(object sender, EventArgs e) { bil_objekt fordon = new bil_objekt(); Label labelSender = sender as Label; string reg = labelSender.Text; SortedList<string, string> fetch = fordon.hamtaValtFordon(reg); string[] lines = { "Regnummer: " + fetch["reg"], "Märke: " + fetch["marke"], "Modell: " + fetch["modell"], "Årsmodell: " + fetch["arsmodell"], "Ägare: " + fetch["agare"] }; richTextBoxInfoBil.Lines = lines; richTextBoxInfoBil.Show(); }
/// <summary> /// Lägger till hyrfordon /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonLäggTillFordon_Click(object sender, EventArgs e) { bil_objekt fordon = new bil_objekt(); string reg, marke, modell, arsmodell, typ; reg = TextBoxReg.Text; marke = TextBoxMarke.Text; modell = TextBoxModell.Text; arsmodell = TextBoxArsmodell.Text; typ = checkedListBoxFordonsTyp.CheckedItems[0].ToString(); int insertStatus = fordon.insertHyrFordon(reg, modell, arsmodell, marke, typ); if (insertStatus == 0) richTextBoxFormAdminMsgs.Text = "Fordonet lades till"; else { string msgs = "Det blev ett fel när fordonet lades till"; if (!DEBUG) richTextBoxFormAdminMsgs.Text = msgs; else { List<string> debugMsgs = new List<string>(); debugMsgs.Add(msgs); debugMsgs.AddRange(fordon.GetTmpMsgs()); richTextBoxFormAdminMsgs.Lines = debugMsgs.ToArray(); } richTextBoxFormAdminMsgs.Show(); } }
/// <summary> /// Funktin som fyller bokningarna och kundens fordon /// </summary> private void fyllBokningar_bilar() { boknings_objekt bokningar = new boknings_objekt(new SqlCeDatabase(), anvandare); bil_objekt fordon = new bil_objekt(); SortedList<string, string>[] bokningsResultat = bokningar.hamtaMinaBokningar(); int bilResultat = fordon.kollaKundsBilar(anvandare); if (bilResultat != 0) { this.tableLayoutPanelBilar.Hide(); this.labelBilarMeddelande.Text = "Det finns inga bilar registrerade i systemet tryck på registrera för att registrera en bil"; this.labelBilarMeddelande.Show(); } if (bokningsResultat.Length == 0) { this.tableLayoutPanelBokningar.Hide(); this.labelBokningarMeddelande.Text = "Du har inga bokade tider"; this.labelBokningarMeddelande.Show(); } if (this.tableLayoutPanelBilar.Visible) { SortedList<string, string>[] fordonLista = fordon.GetTmpMsgs(true); int length = fordonLista.Length; for (int i = 0; i < length; i++) { SortedList<string, string> fordonsfält = fordonLista[i] as SortedList<string, string>; Label labelBilarReg = new Label(), labelBilarMarke = new Label(), labelBilarModell = new Label(), labelBilarArsmodell = new Label(); Label[] labelBilar = { labelBilarReg, labelBilarMarke, labelBilarModell, labelBilarArsmodell }; for (int o = 0; o < 4; o++) { labelBilar[o].Text = fordonsfält[fordonsfält.Keys[o]]; this.tableLayoutPanelBilar.Controls.Add(labelBilar[o]); } } } int lengthRes = bokningsResultat.Length; for (int i = 0; i < lengthRes; i++) { SortedList<string, string> bokningsString = bokningsResultat[i] as SortedList<string, string>; Label labelBokningDatum = new Label(), labelBokningBil = new Label(), labelBokningId = new Label(); Label[] labelBokning = { labelBokningDatum, labelBokningBil, labelBokningId }; for (int o = 0; o < 3; o++) { switch (o) { case 0: labelBokning[o].Text = bokningsString["datum"]; break; case 1: labelBokning[o].Text = bokningsString["bil"]; break; case 2: labelBokning[o].Text = "Ta bort"; labelBokning[o].Name = "Tabort_" + bokningsString["id"]; labelBokning[o].Cursor = System.Windows.Forms.Cursors.Hand; labelBokning[o].Click += new System.EventHandler(this.TaBort); break; } this.tableLayoutPanelBokningar.Controls.Add(labelBokning[o]); } this.tableLayoutPanelBokningar.Show(); } }