/// <summary> /// Konstruktören för klassen kund. /// Använder sig av databasen med tabellen kunder och hämtar fältvärden som email, förnamn, enamn, telefonnummer /// och kollar om det är en administratör. /// </summary> /// <param name="email">Email-adressen som ska användas</param> /// <param name="losen">Lösenordet, som en säkerhetsåtgärd</param> public kund(string email, string losen) { this.db = new SqlCeDatabase(); List<string> errorMsg = new List<string>(); string query = "Select email, fnamn, enamn, losen, tfn, adress from Kunder where email='?x?' and losen='?x?'"; string[] args = { email, losen }; if (db.query(query, args) != 0) errorMsg.AddRange(db.GetTmpMsgs()); else { string[] resultat = db.fetch(); string[] properties = { this.email, this.fnamn, this.enamn, this.losenord, this.tfn, this.adress }; if (resultat.Length == 0) throw new Exception("Lösenordet och e-postadressen stämde inte överens med någon kund i registret"); if (resultat[0] != string.Empty) this.email = resultat[0]; else errorMsg.Add("Fältet för email-adressen är tomt"); if (resultat[1] != string.Empty) this.fnamn = resultat[1]; else errorMsg.Add("Fältet för förnamnet är tomt"); if (resultat[2] != string.Empty) this.enamn = resultat[2]; else errorMsg.Add("Fältet för efternamnet är tomt"); if (resultat[3] != string.Empty) this.losenord = resultat[3]; else errorMsg.Add("Fältet för lösenordet är tomt"); if (resultat[4] != string.Empty) this.tfn = resultat[4]; else errorMsg.Add("Fältet för telefonnummret är tomt"); if (resultat[5] != string.Empty) this.adress = resultat[5]; else errorMsg.Add("Fältet för adressen är tomt"); this.readOnly = false; } this.tmpMsgs = errorMsg.ToArray(); }
/// <summary> /// Hämtar alla hyrfordon av en typ och sparar dem i tmpMsgs-arrayen; /// </summary> /// <param name="typ">Fordonstypen</param> /// <returns>Statuskoden för funktionen /// 0 - funktionen utfördes utan problem /// 10 - inga fordon hittades /// 20 - kommunikation/frågefel</returns> public int hamtaAllaHyrFordon(string typ) { SqlCeDatabase db = new SqlCeDatabase(); string hyrQuery = "SELECT regnr FROM HyrFordon WHERE typ='?x?'"; string[] args = { typ }; int queryRes = db.query(hyrQuery, args); if (queryRes != 0) { this.tmpMsgs = db.GetTmpMsgs(); return 20; } string[] allaFordon = db.fetch(); if (allaFordon.Length < 1) { this.tmpMsgs = db.GetTmpMsgs(); return 10; } this.tmpMsgs = allaFordon; return 0; }
public bool loggaIn(string email, string Pw) { SqlCeDatabase db = new SqlCeDatabase(); List<string> errorMsgs = new List<string>(); if (!this.kollaEmail(email)) { errorMsgs.Add("Din email är inte en korrekt formatterad email"); this.tmpMsgs = errorMsgs.ToArray(); return false; } string queryLogin = "******"; string[] arg = { email }; if (db.query(queryLogin, arg) == 0) { string[] sokResultat = db.fetch(); if (sokResultat.Length < 1) { if (db.GetTmpMsgs().Contains("inga värden")) errorMsgs.Add("Din emailadress finns inte i vår databas, är du säker på att du har skapat en användare?\n" + "Om inte, klicka på Skapa användare för att göra just det."); else errorMsgs.AddRange(db.GetTmpMsgs()); this.tmpMsgs = errorMsgs.ToArray(); return false; } if (sokResultat[1] != Pw) { errorMsgs.Add("Det blev fel med kombinationen med lösenord och emailadressen"); this.tmpMsgs = errorMsgs.ToArray(); return false; } return true; } errorMsgs.AddRange(db.GetTmpMsgs()); this.tmpMsgs = errorMsgs.ToArray(); return false; }
/// <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> /// Hämtar alla fordon som är hyrda inom ett visst tidsintervall och av en specificerad typ /// och sparar dem i tmpMsgs-arrayen /// </summary> /// <param name="typ">Fordonets typ</param> /// <param name="starttid">Hyrningens startdatum</param> /// <param name="sluttid">Hyrningens slutdatum</param> /// <returns>Statuskod för funktionen /// 0 - funktionen utfördes utan problem /// 10 - inga fordon matchade parametrarna /// 20 - kommunikations/frågefel mo databasen</returns> public int hamtaHyrdaFordon(string typ, string starttid, string sluttid) { SqlCeDatabase db = new SqlCeDatabase(); string checkHyrdaQuery = "SELECT H.Fordon " + "FROM Hyrning AS H INNER JOIN HyrFordon AS F ON H.Fordon = F.regnr " + "WHERE (H.Startdag < '?x?') AND (H.Slutdag > '?x?') AND (F.typ='?x?')"; string[] hyrdaArgs = { starttid, sluttid, typ }; int queryRes = db.query(checkHyrdaQuery, hyrdaArgs); if (queryRes != 0) { this.tmpMsgs = db.GetTmpMsgs(); return 20; } string[] hyrdaFordon = db.fetch(); if (hyrdaFordon.Length < 1) { this.tmpMsgs = db.GetTmpMsgs(); return 10; } this.tmpMsgs = hyrdaFordon; return 0; }
/// <summary> /// Funktion som ska kunna söka efter lediga fordon i specificerad typ under visst tidsinterval /// </summary> /// <param name="typ">Typ av fordon</param> /// <param name="starttid">Starttiden för hyrningen då fordonet måste vara ledig</param> /// <param name="sluttid">Sluttuden för hyrningen då fordonet kommer lämnas tillbaka, måste också vara ledig</param> /// <returns>Returnerar en int /// 0 - Om det finns lediga fordon /// 10 - Om det inte finns några lediga fordon /// 20 - Vid kommunikationsfel med databasen</returns> public int kollaLedigaHyrFordon(string typ, string starttid, string sluttid) { SqlCeDatabase db = new SqlCeDatabase(); string[] allaFordon; string[] hyrdaFordon; int hyrFordonStatus; int allaFordonStatus; /* Hämtar alla hyrfordon och skapar Exceptions om det inte finns fordon */ allaFordonStatus = hamtaAllaHyrFordon(typ); if (allaFordonStatus == 0) allaFordon = GetTmpMsgs(); else if (allaFordonStatus == 10) return 10; else throw new Exception(db.GetTmpMsgs()[0]); /* Hämtar alla hyrfordon som är hyrda under den angivna tidsperioden * och skapar ett Exception om det blev något fel med själva förfrågningen till databasen */ hyrFordonStatus = hamtaHyrdaFordon(typ, starttid, sluttid); if (hyrFordonStatus == 0) hyrdaFordon = GetTmpMsgs(); else if (hyrFordonStatus == 10) { this.tmpMsgs = allaFordon; return 0; } else throw new Exception(db.GetTmpMsgs()[0]); List<string> ledigaFordon = new List<string>(); /* Går igenom alla hyrfordon och kollar om tabellen med hyrda fordon innehåller det registreringsnumret * i så fall händer inget, annars läggs fordonet till i ledigaFordon-listan */ foreach (string fordon in allaFordon) { if (!hyrdaFordon.Contains(fordon)) ledigaFordon.Add(fordon); } /* Returnerar 10 om det inte fanns några lediga fordon */ if (ledigaFordon.Count == 0) return 10; else { this.tmpMsgs = ledigaFordon.ToArray(); return 0; } }
/// <summary> /// KollaKundsBilar: Kollar efter kunders bilar och returnerar bara regnumret /// </summary> /// <param name="anvandare">Kundens kundobjekt</param> /// <param name="what">Vad som ska frågas efter i Select-satsen</param> /// <returns>Returnerar ett intvärde /// 0 - om funktion slutfördes utan problem /// 1 - Inga bilar fanns /// 2 - Fel vid frågeformuleringen</returns> public int kollaKundsBilar(kund anvandare, string what) { SqlCeDatabase db = new SqlCeDatabase(); string regQuery = "SELECT ?x? FROM fordon WHERE agare='?x?'"; string[] args = { what, anvandare.GetEmail() }; int queryResultat = db.query(regQuery, args); if (queryResultat == 0) { string[] fetchResultat = db.fetch(); if (fetchResultat.Length < 1) { this.tmpMsgs = db.GetTmpMsgs(); return 1; } else { this.tmpMsgs = fetchResultat; return 0; } } this.tmpMsgs = db.GetTmpMsgs(); return 2; }
/// <summary> /// Hämtar alla bilar som är registrerade på kundens email och sparar dem i tmpMsgs. /// För att hämta arrayen med bilar kör getTmpMgsg. /// </summary> /// <param name="anvandare">Kunden som bilarna är registrerade på</param> /// <returns>Returnerar en returnkod som int-värde. /// 0 - Inga fel uppstod /// 1 - Inga bilar funna /// 2 - Fel vid frågeformuleringen</returns> public int kollaKundsBilar(kund anvandare) { SqlCeDatabase db = new SqlCeDatabase(); string regQuery = "SELECT reg, marke, modell, arsmodell FROM fordon WHERE agare='?x?'"; string[] args = { anvandare.GetEmail() }; int queryResultat = db.query(regQuery, args); if (queryResultat == 0) { SortedList<string,string>[] fetchResultat = db.fetchAllList(); if (fetchResultat.Length < 1) { this.tmpMsgs = db.GetTmpMsgs(); return 1; } else { this.tmpMsgsArray = fetchResultat; return 0; } } this.tmpMsgs = db.GetTmpMsgs(); return 2; }
/// <summary> /// Denna funktion lägger till ett fordon i hyrregistret. /// Den använder sig av klassen SQLCeDatabase för att ansluta till en kompakt MSSQL-server/fil. /// </summary> /// <param name="reg">Regnumret på fordonet</param> /// <param name="modell">Fordonets modell</param> /// <param name="arsmodell">Fordonets årsmodell</param> /// <param name="marke">Fordonets märke</param> /// <param name="typ">Typen av fordon</param> /// <returns>Returnerar returnkod som int. /// 0 - Operationen utfördes utan problem /// </returns> public int insertHyrFordon(string reg, string modell, string arsmodell, string marke, string typ) { SqlCeDatabase db = new SqlCeDatabase(); string insertQuery = "INSERT INTO HyrFordon (regnr, typ, modell, arsmodell, marke) values ('?x?','?x?','?x?','?x?','?x?')"; string[] args = { reg, typ, modell, arsmodell, marke }; if (db.query(insertQuery, args) != 0) { this.tmpMsgs = db.GetTmpMsgs(); return 1; } if (db.operation() != 0) { this.tmpMsgs = db.GetTmpMsgs(); return 2; } return 0; }
/// <summary> /// Registrerar ett fordon för oregistrerade kunder /// </summary> /// <param name="reg">Fordonets registreringsnummer</param> /// <param name="modell">Fordonets modell</param> /// <param name="arsmodell">Fordonets årsmodell</param> /// <param name="marke">Fordonets märke</param> /// <param name="agare">Fordonets ägare</param> /// <returns></returns> public int insertFordon(string reg, string modell, string arsmodell, string marke, string agare) { SqlCeDatabase db = new SqlCeDatabase(); List<string> resultat = new List<string>(); List<string> errorMsgs = new List<string>(); string queryNyBil = "INSERT INTO Fordon" + "(reg, modell, arsmodell, marke, agare) " + " values ('?x?','?x?','?x?','?x?','?x?')"; string[] argsNyBil = new string[5] { reg, modell, arsmodell, marke, agare }; int queryResultat = db.query(queryNyBil, argsNyBil); // Skapar en string-array av resultatet från db.query() för att kunna använda i jämförelser och returns int returnkod; if (queryResultat == 0) { int operationResultat = db.operation(); // Skapar en string-array av resultatet från db.operation() för att kunna använda i jämförelser och returns if (operationResultat == 0) { returnkod = 0; } else { errorMsgs.Add("Det blev ett fel när ditt fordon skulle registreras. Kontakta systemansvarig."); if (DEBUG) errorMsgs.AddRange(db.GetTmpMsgs()); returnkod = 1; } } else { errorMsgs.Add("Det blev ett fel med frågeformuleringen. Kontakta systemansvarig."); if (DEBUG) errorMsgs.AddRange(db.GetTmpMsgs()); returnkod = 2; } if (errorMsgs.Count > 0) this.tmpMsgs = errorMsgs.ToArray(); return returnkod; }
private void buttonVisa_Click(object sender, EventArgs e) { string queryVisa = "Select * from Kunder"; string[] args = { }; SqlCeDatabase db = new SqlCeDatabase(); int kollaQuery = db.query(queryVisa, args); if (kollaQuery != 0) { string[] läsResultat = db.fetch(); if (läsResultat.Length > 0) { string FullResultat = string.Empty; foreach (string resultat in läsResultat) FullResultat += resultat + "\n"; MessageBox.Show(FullResultat); } } else richTextBoxMeddelanden.Text = db.GetTmpMsgs()[0]; }