Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
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;
        }
Beispiel #5
0
        /// <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;
        }
Beispiel #6
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;
            }
        }
Beispiel #7
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;
        }
Beispiel #8
0
        /// <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;
        }
Beispiel #9
0
        /// <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;
        }
Beispiel #10
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;
        }
Beispiel #11
0
        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];
        }