Esempio n. 1
0
        public void KuuluisiVapauttaaPoyta()
        {
            Poyta poyta = new Poyta(1, 4, Varaustilanne.Varattu);

            poyta.VapautaPoyta();
            Assert.AreEqual(false, poyta.OnkoVarattu());
        }
Esempio n. 2
0
        public void KuuluisiLuodaPoytaOlio()
        {
            Poyta poyta = new Poyta(1, 5, Varaustilanne.Vapaa);

            Assert.AreEqual(1, poyta.Id);
            Assert.AreEqual(5, poyta.PaikkojenMaara);
        }
Esempio n. 3
0
        public void KuuluisiTulostaaPoydastaMerkkijono()
        {
            Poyta poyta = new Poyta(6, 5, Varaustilanne.Vapaa);

            Assert.AreEqual("Pöytä 6, paikkoja 5, VAPAA", poyta.ToString());
            poyta.VaraaPoyta();
            Assert.AreEqual("Pöytä 6, paikkoja 5, VARATTU", poyta.ToString());
        }
        public void KuuluisiHakeaPoytaTunnisteella()
        {
            Poyta poyta = poytaDb.Hae(4);

            Assert.That(poyta, Is.Not.Null);
            Assert.AreEqual(4, poyta.Id);
            Assert.AreEqual(6, poyta.PaikkojenMaara);
        }
Esempio n. 5
0
        /// <summary>
        /// List<Poyta> HaeKaikki()
        ///
        /// Metodi palauttaa tietokannasta (hashtable) kaikki
        /// pöydät listana, joka sisältää Poyta-olioita.
        /// </summary>
        /// <returns></returns>
        public override List <Poyta> HaeKaikki()
        {
            List <Poyta> kaikkiPoydat = new List <Poyta>();

            for (int i = 1; i <= poydat.Count; i++)
            {
                Poyta poyta = (Poyta)poydat[i];
                kaikkiPoydat.Add(poyta);
            }
            return(kaikkiPoydat);
        }
        public void KuuluisiVarataPoyta()
        {
            List <Poyta> kaikkiPoydat = poytaDb.HaeKaikki();
            Poyta        poyta        = kaikkiPoydat[4];

            Assert.AreEqual(false, poyta.OnkoVarattu());

            poytaDb.VaraaPoyta(poyta.Id);
            kaikkiPoydat = poytaDb.HaeKaikki();
            Poyta varattuPoyta = kaikkiPoydat[4];

            Assert.AreEqual(true, varattuPoyta.OnkoVarattu());
        }
Esempio n. 7
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."));
        }
Esempio n. 8
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>
        /// 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;
            }
        }
Esempio n. 10
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."));
        }
Esempio n. 11
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());
        }
Esempio n. 12
0
        /// <summary>
        /// void VaraaPoyta(int tunnus)
        ///
        /// Metodi hakee tietokannasta (hashtable) pöydän parametrina
        /// annetulla pöydän tunnuksella ja muuttaa pöydän tilan
        /// varatuksi.
        /// </summary>
        /// <param name="tunnus"></param>
        public override void VaraaPoyta(int tunnus)
        {
            Poyta poyta = (Poyta)poydat[tunnus];

            poyta.VaraaPoyta();
        }
Esempio n. 13
0
        public void KuuluisiTarkistaaOnkoLuotuPoytaVapaa()
        {
            Poyta poyta = new Poyta(1, 4, Varaustilanne.Vapaa);

            Assert.AreEqual(false, poyta.OnkoVarattu());
        }
Esempio n. 14
0
        void PoydatCombobox_SelectedIndexChanged(object sender, EventArgs e)
        {
            Poyta valittuPoyta = (Poyta)PoydatCombobox.SelectedItem;

            tilaus.Poyta = valittuPoyta;
        }