Beispiel #1
0
        protected List <Tilaus> LuoTilauksia()
        {
            List <Tilaus> tilaukset = new List <Tilaus>();
            Tilaus        tilaus    = new Tilaus();

            tilaus.Asiakas = new Asiakas();
            tilaus.Poyta   = new Poyta(1, 5, Varaustilanne.Varattu);
            var pihvi      = new Ateria(1, "Garlic Steak", 11.60, 0.14);
            var lehtipihvi = new Ateria(2, "Lehtipihvi lohkoperunoilla", 13.60, 0.14);

            tilaus.LisaaAteria(pihvi, 1);
            tilaus.LisaaAteria(lehtipihvi, 3);
            tilaukset.Add(tilaus);

            tilaus         = new Tilaus();
            tilaus.Asiakas = new Asiakas();
            tilaus.Poyta   = new Poyta(2, 4, Varaustilanne.Varattu);
            var salaatti    = new Ateria(1, "Kanasalaatti", 5.60, 0.14);
            var lehtipihvi2 = new Ateria(2, "250g pihvi ranskalaisilla", 13.00, 0.14);

            tilaus.LisaaAteria(salaatti, 1);
            tilaus.LisaaAteria(lehtipihvi2, 1);
            tilaukset.Add(tilaus);

            return(tilaukset);
        }
        public override void KuuluisiHakeaTilausTunnisteella()
        {
            Tilaus tilaus = tilausDb.Hae(1);

            Assert.IsNotNull(tilaus);
            Assert.IsNotNull(tilaus.Asiakas);
            Assert.IsNotNull(tilaus.Poyta);
            Assert.AreEqual(1, tilaus.Tilausnumero);
            Assert.AreEqual(2, tilaus.Tilausrivit.Count);
        }
Beispiel #3
0
        protected Tilaus LuoTilaus(string aterianNimi = "Garlic Steak")
        {
            Tilaus tilaus = new Tilaus();

            tilaus.Asiakas = new Asiakas();
            tilaus.Poyta   = new Poyta(1, 5, Varaustilanne.Varattu);
            var pihvi = new Ateria(1, aterianNimi, 11.60, 0.14);

            tilaus.LisaaAteria(pihvi, 1);
            return(tilaus);
        }
        /// <summary>
        /// List<Tilaus> HaeKaikki()
        ///
        /// Metodi palauttaa kaikki tietokannan (hashtable) sisällön
        /// listana, joka sisältää Tilaus-olioita.
        /// </summary>
        /// <returns></returns>
        public override List <Tilaus> HaeKaikki()
        {
            List <Tilaus> kaikkiTilaukset = new List <Tilaus>();

            for (int i = 1; i <= tilaukset.Count; i++)
            {
                Tilaus tilaus = (Tilaus)tilaukset[i];
                kaikkiTilaukset.Add(new Tilaus(i, tilaus.Tilausrivit, tilaus.Poyta, tilaus.Asiakas, tilaus.TapahtumanTila, tilaus.Pvm));
            }
            return(kaikkiTilaukset);
        }
        /// <summary>
        /// Tilaus Hae(int tilausnumero)
        ///
        /// TÄTÄ METODIA EI OLE KÄYTETTY MISSÄÄN
        /// </summary>
        /// <param name="tilausnumero"></param>
        /// <returns></returns>
        public override Tilaus Hae(int tilausnumero)
        {
            Tilaus tilaus = (Tilaus)tilaukset[tilausnumero];

            if (tilaus == null)
            {
                return(null);
            }

            return(new Tilaus(tilausnumero, tilaus.Tilausrivit, tilaus.Poyta, tilaus.Asiakas, tilaus.TapahtumanTila, tilaus.Pvm));
        }
Beispiel #6
0
        public void KuuluisiTallentaaTilausTiedostojarjestelmaan()
        {
            // Luodaan uusi tiedostojärjestelmää käsittelevä luokka.
            tilausDb = new FileSystemTilausDb(tietokannanPolku);

            // Haetaan tilaukset ja tilauksia ei kuulu olla yhtään.
            List <Tilaus> tilaukset = tilausDb.HaeKaikki();

            Assert.AreEqual(0, tilaukset.Count);

            // Lisätään tilauksia ja haetaan jälleen kerran kaikki tilaukset.
            // Tilauksia kuuluisi olla lisätty määrä.
            foreach (Tilaus tilaus in LuoTilauksia())
            {
                tilausDb.Uusi(tilaus);
            }
            tilaukset = tilausDb.HaeKaikki();
            Assert.AreEqual(2, tilaukset.Count);

            // Tarkistetaan viimeisen tilauksen tietoja äsken lisätyistä.
            Tilaus viimeinenTilaus = tilaukset.LastOrDefault();

            Assert.AreEqual(tilausDb.SeuraavaId - 1, viimeinenTilaus.Tilausnumero);
            Tilausrivi tilausrivi = viimeinenTilaus.Tilausrivit[0];

            Assert.AreEqual("Kanasalaatti", tilausrivi.Ateria.Nimi);

            // Luodaan uusi tilaus ja tarkistetaan tallentuiko oikein.
            // Tarkistetaan luodun tilauksen tietoja.
            tilausDb.Uusi(LuoTilaus("Pihvi, aterian tallennus testi"));
            tilaukset       = tilausDb.HaeKaikki();
            viimeinenTilaus = tilaukset.LastOrDefault();
            tilausrivi      = viimeinenTilaus.Tilausrivit[0];
            Ateria ateria = tilausrivi.Ateria;

            Assert.AreEqual("Pihvi, aterian tallennus testi", ateria.Nimi);

            // Yritetään hakea tuntematon tilaus eli tilaus, jota
            // tietokannassa ei ole.
            Tilaus tuntematonTilaus = tilausDb.Hae(99);

            Assert.IsNull(tuntematonTilaus);

            // Haetaan yksittäinen tilaus tunnisteella ja tarkistetaan
            // löydetyn tilauksen tietoja.
            Tilaus loytynytTilaus = tilausDb.Hae(1);

            Assert.IsNotNull(loytynytTilaus);
            Assert.IsNotNull(loytynytTilaus.Asiakas);
            Assert.IsNotNull(loytynytTilaus.Poyta);
            Assert.AreEqual(1, loytynytTilaus.Tilausnumero);
            Assert.AreEqual(2, loytynytTilaus.Tilausrivit.Count);
        }
        public override void KuuluisiLuodaUusiTilaus()
        {
            var tilaus = LuoTilaus("Pihvi, aterian tallennus testi");

            tilausDb.Uusi(tilaus);

            var        tilaukset       = tilausDb.HaeKaikki();
            Tilaus     viimeinenTilaus = tilaukset.LastOrDefault();
            Tilausrivi tilausrivi      = (Tilausrivi)viimeinenTilaus.Tilausrivit[0];
            Ateria     ateria          = (Ateria)tilausrivi.Ateria;

            Assert.AreEqual("Pihvi, aterian tallennus testi", ateria.Nimi);
        }
        public override void KuuluisiHakeaKaikkiTilaukset()
        {
            List <Tilaus> tilaukset = tilausDb.HaeKaikki();

            Assert.IsNotNull(tilaukset);
            Assert.AreEqual(2, tilaukset.Count);

            Tilaus viimeinenTilaus = tilaukset.LastOrDefault();

            Assert.AreEqual(tilausDb.SeuraavaId - 1, viimeinenTilaus.Tilausnumero);

            Tilausrivi tilausrivi = (Tilausrivi)viimeinenTilaus.Tilausrivit[0];

            Assert.AreEqual("Kanasalaatti", tilausrivi.Ateria.Nimi);
        }
        /// <summary>
        /// void Uusi(Tilaus tilaus)
        ///
        /// Metodi tallentaa tilauksen tietokantaan (Hashtable) ja
        /// tietokannan sisältö tallennetaan tietojärjestelmää.
        /// Tallennus sijaintina käytetään olion luonnin yhteydessä
        /// annettua tiedostopolkua.
        ///
        /// Parametrina annetaan koko tilaus -olio, joka sisältää tiedot
        /// tilauksesta.
        /// </summary>
        /// <param name="tilaus"></param>
        public override void Uusi(Tilaus tilaus)
        {
            tilaukset[seuraavaId] = tilaus;
            seuraavaId++;

            using (FileStream fileStreamOut = File.Create(tiedostonPolku))
            {
                for (int i = 1; i <= tilaukset.Count; i++)
                {
                    binaryFormatter.Serialize(fileStreamOut, tilaukset[i]);
                }

                fileStreamOut.Flush();
            }
        }
Beispiel #10
0
        public void KuuluisiIlmoittaaVirheestaKoskaTilausEiSisallaAsiakasta()
        {
            poytaDb.VaraaPoyta(1);
            Poyta  poyta   = poytaDb.Hae(6);
            var    ateria1 = ateriat[1];
            Tilaus tilaus  = new Tilaus();

            tilaus.LisaaAteria(ateria1, 2);
            tilaus.Poyta = poyta;

            Exception ex = Assert.Throws <Exception>(() => {
                tilauksenVastaanotto.VastaanotaTilaus(tilaus);
            });

            Assert.That(ex.Message, Is.EqualTo("Tilaus ei sisällä asiakasta."));
        }
Beispiel #11
0
        public void KuuluisiIlmoittaaVirheestaKoskaTilausEiSisallaTilausriveja()
        {
            poytaDb.VaraaPoyta(1);
            Poyta   poyta   = poytaDb.Hae(6);
            Asiakas asiakas = new Asiakas();
            Tilaus  tilaus  = new Tilaus();

            tilaus.Poyta   = poyta;
            tilaus.Asiakas = asiakas;

            Exception ex = Assert.Throws <Exception>(() => {
                tilauksenVastaanotto.VastaanotaTilaus(tilaus);
            });

            Assert.That(ex.Message, Is.EqualTo("Tilaus ei sisällä tilausrivejä."));
        }
 /// <summary>
 /// Apumetodi
 /// </summary>
 void LueTilauksetTietokannasta()
 {
     if (File.Exists(tiedostonPolku))
     {
         using (FileStream stream = File.OpenRead(tiedostonPolku))
         {
             int i = 1;
             while (stream.Position != stream.Length)
             {
                 Tilaus tilaus = (Tilaus)binaryFormatter.Deserialize(stream);
                 tilaukset[i] = tilaus;
                 i++;
             }
         }
         SeuraavaId = tilaukset.Count + 1;
     }
 }
Beispiel #13
0
        public ActionResult LisaaTilaus(FormCollection form)
        {
            int.TryParse(form[string.Format("id")], out int id);
            string tilaajanNimi   = form[string.Format("tilaajanNimi")];
            string tilaajanOsoite = form[string.Format("tilaajanOsoite")];

            dbMan = new DatabaseManager();
            cnn   = dbMan.OpenConnection();
            dbTil = new DatabaseTilaus(cnn);
            Tilaus t = Tilaus.Create(id, tilaajanNimi, tilaajanOsoite);

            dbTil.InsertInto(t);
            id         = 5555555;
            ViewBag.id = id;
            matko.Initiate();

            return(PartialView(matko));
        }
Beispiel #14
0
        public void KuuluisiIlmoittaaVirheestaKoskaTilauksestaPuuttuuPoyta()
        {
            Asiakas asiakas = new Asiakas();
            Tilaus  tilaus  = new Tilaus();

            tilaus.Asiakas = asiakas;
            var ateria1 = ateriat[1];
            var ateria2 = ateriat[8];

            tilaus.LisaaAteria(ateria1, 1);
            tilaus.LisaaAteria(ateria2, 3);

            Exception ex = Assert.Throws <Exception>(() => {
                tilauksenVastaanotto.VastaanotaTilaus(tilaus);
            });

            Assert.That(ex.Message, Is.EqualTo("Pöytää ei ole valittu. Tilausta ei voitu vahvistaa."));
        }
        /// <summary>
        /// VastaanotaTilaus(Tilaus tilaus)
        ///
        /// Metodi suorittaa toimenpiteitä, joita tehdään ennen ja jälkeen
        /// tilauksen vahvistamisen. VastaanotaTilaus -metodi koostaa ohjelman
        /// muiden olioiden toimintoja yhteen. Suoritettavat toimenpiteet ovat
        /// seuraavat:
        ///
        /// 1.  Metodi saa tilauksen tiedot sille annetusta parametrista.
        ///
        /// 2.  Tarkistetaan tiedot virhesyötteiden varalta. Virhetilanteen
        ///     sattuessa tilausta ei vahvisteta ja siitä luodaan virheilmoitus.
        ///     Virheen sattuessa se siepataan virheenkäsittelyllä ja annetaan
        ///     metodia kutsuttavan luokan hoitaa sen käsittely.
        ///
        ///     2.1 VIRHE: Tilausrivien määrä on 0 tai alle.
        ///     2.2 VIRHE: Tilaukseen ei ole määritetty asiakasta.
        ///     2.3 VIRHE: Tilaukseen ei ole määritetty pöytää.
        ///     2.4 VIRHE: Valitty pöytä on jo varattu.
        ///     2.5 VIRHE: Tilaus epäonnistuu muusta kuin yllämainituista syistä.
        ///
        /// 3. Vahvistetaan tilaus.
        /// 4. Luodaan uusi tilaus tietokantaan.
        /// 5. Merkitään pöytä varatuksi.
        /// 6. Tarkistetaan onko asiakas bonusasiakas
        ///     6.1 Jos on bonusasiakas, kerrytetään etupisteitä ja
        ///         tallennetaan bonusasiakkaan tiedot tietokantaan.
        /// </summary>
        /// <param name="tilaus"></param>
        public void VastaanotaTilaus(Tilaus tilaus)
        {
            try
            {
                if (tilaus.Tilausrivit.Count <= 0)
                {
                    throw new Exception("Tilaus ei sisällä tilausrivejä.");
                }

                if (tilaus.Asiakas == null)
                {
                    throw new Exception("Tilaus ei sisällä asiakasta.");
                }

                if (tilaus.Poyta == null)
                {
                    throw new Exception("Pöytää ei ole valittu. Tilausta ei voitu vahvistaa.");
                }

                Poyta poyta = poytaDb.Hae(tilaus.Poyta.Id);
                if (poyta.OnkoVarattu())
                {
                    throw new Exception("Pöytä on jo varattu. Tilausta ei voitu vahvistaa.");
                }

                tilaus.VahvistaTilaus();
                tilausDb.Uusi(tilaus);

                poytaDb.VaraaPoyta(poyta.Id);

                if (tilaus.Asiakas.GetType() == typeof(BonusAsiakas))
                {
                    BonusAsiakas asiakas = (BonusAsiakas)tilaus.Asiakas;
                    asiakas.KerrytaEtupisteita(tilaus.LaskeVerollinenKokonaishinta());
                    asiakasDb.Uusi(asiakas);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #16
0
        public void KuuluisiIlmoittaaVirheestaKoskaTilauksenPoytaOnVarattu()
        {
            poytaDb.VaraaPoyta(6);
            Poyta   poyta   = poytaDb.Hae(6);
            Asiakas asiakas = new Asiakas();
            Tilaus  tilaus  = new Tilaus();

            tilaus.Poyta   = poyta;
            tilaus.Asiakas = asiakas;
            var ateria1 = ateriat[1];
            var ateria2 = ateriat[8];

            tilaus.LisaaAteria(ateria1, 1);
            tilaus.LisaaAteria(ateria2, 3);

            Exception ex = Assert.Throws <Exception>(() => {
                tilauksenVastaanotto.VastaanotaTilaus(tilaus);
            });

            Assert.That(ex.Message, Is.EqualTo("Pöytä on jo varattu. Tilausta ei voitu vahvistaa."));
        }
Beispiel #17
0
        /// <summary>
        /// Tarkistaa parametrit ja luo uuden tilauksen. Viheellisellä syötteellä palauttaa null.
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="TilaajanNimi"></param>
        /// <param name="Maara"></param>
        /// <param name="MateriaaliId"></param>
        /// <returns>Tilaus || null</returns>
        public static Tilaus Create(int Id, string TilaajanNimi, string TilaajanOsoite)
        {
            Tilaus t = new Tilaus(-1, "", "");

            if (!checkId(Id))
            {
                ExceptionController.WriteException(t, "Tilausta luodessa huono ID.");
                return(null);
            }
            if (!checkTilaajanNimi(TilaajanNimi))
            {
                ExceptionController.WriteException(t, "Tilausta luodessa huono tilaajan nimi.");
                return(null);
            }
            if (!checkTilaajanOsoite(TilaajanOsoite))
            {
                ExceptionController.WriteException(t, "Tilausta luodessa huono tilaajan osoite.");
                return(null);
            }
            return(new Tilaus(Id, TilaajanNimi, TilaajanOsoite));
        }
Beispiel #18
0
        public void KuuluisiVastaanottaaJaTallentaaUusiTilaus()
        {
            Poyta   poyta   = poytaDb.Hae(8);
            Asiakas asiakas = new Asiakas();
            Tilaus  tilaus  = new Tilaus();

            tilaus.Poyta   = poyta;
            tilaus.Asiakas = asiakas;
            var ateria1 = ateriat[1];
            var ateria2 = ateriat[8];

            tilaus.LisaaAteria(ateria1, 1);
            tilaus.LisaaAteria(ateria2, 3);
            tilauksenVastaanotto.VastaanotaTilaus(tilaus);

            int    tilausnumero        = tilausDb.SeuraavaId - 1;
            Tilaus tilausTietokannasta = tilausDb.Hae(tilausnumero);

            Assert.IsNotNull(tilausTietokannasta);
            Assert.AreEqual(tilausnumero, tilausTietokannasta.Tilausnumero);
            Assert.That(tilausTietokannasta.Asiakas, Is.InstanceOf <Asiakas>());
            Assert.AreEqual(true, tilausTietokannasta.OnkoVahvistettu());
            Assert.AreEqual(60.42, tilausTietokannasta.LaskeVerollinenKokonaishinta(), 0.01);

            List <Tilausrivi> tilausrivit = tilausTietokannasta.Tilausrivit;
            Tilausrivi        rivi        = tilausrivit[1];

            Assert.IsNotNull(rivi);
            Assert.AreEqual(9, rivi.Ateria.Id);
            Assert.AreEqual("Tyrnipossetti ja luomusuklaata", rivi.Ateria.Nimi);
            Assert.AreEqual(12, rivi.Ateria.VerotonHinta, 0.01);
            Assert.AreEqual(3, rivi.Maara);

            Poyta varattuPoyta = poytaDb.Hae(tilaus.Poyta.Id);

            Assert.That(varattuPoyta, Is.Not.Null);
            Assert.AreEqual(8, varattuPoyta.Id);
            Assert.AreEqual(4, varattuPoyta.PaikkojenMaara);
            Assert.AreEqual(true, varattuPoyta.OnkoVarattu());
        }
Beispiel #19
0
 public abstract void Uusi(Tilaus tilaus);
 /// <summary>
 /// void Uusi(Tilaus tilaus)
 ///
 /// Metodi tallentaa tilauksen tietokantaan (Hashtable).
 /// Parametrina annetaan koko tilaus -olio, joka sisältää tiedot
 /// tilauksesta.
 /// </summary>
 /// <param name="tilaus"></param>
 public override void Uusi(Tilaus tilaus)
 {
     tilaukset[seuraavaId] = tilaus;
     seuraavaId++;
 }
Beispiel #21
0
 public void TestiAlustus()
 {
     tilaus = new Tilaus();
 }
        public override void KuuluisiHakeaTilausTunnisteellaMuttaPalauttaaTyhjaTilaus()
        {
            Tilaus tilaus = tilausDb.Hae(99);

            Assert.IsNull(tilaus);
        }