コード例 #1
0
        public void KuuluisiHakeaAsiakasTunnisteella()
        {
            BonusAsiakas asiakasTietokannasta = asiakasDb.Hae(3);

            Assert.That(asiakasTietokannasta, Is.Not.Null);
            Assert.AreEqual(3, asiakasTietokannasta.Id);
            Assert.AreEqual(0.0, asiakasTietokannasta.Etupisteet);
        }
コード例 #2
0
        /// <summary>
        /// BonusAsiakas Hae(int asiakasnumero)
        ///
        /// Metodi palauttaa tietokannasta (Hashtable) bonusasiakkaan
        /// käyttäen metodille parametrina annettua asiakkaan tunnusta.
        ///
        /// TÄTÄ METODIA EI OLE KÄYTETTY MISSÄÄN
        /// </summary>
        /// <param name="asiakasnumero"></param>
        /// <returns></returns>
        public override BonusAsiakas Hae(int asiakasnumero)
        {
            BonusAsiakas asiakas = (BonusAsiakas)asiakkaat[asiakasnumero];

            if (asiakas != null)
            {
                asiakas = new BonusAsiakas(asiakasnumero, asiakas.Etupisteet);
            }
            return(asiakas);
        }
コード例 #3
0
        public void KuuluisiLaskeaEtupisteetBonusasiakkaalle()
        {
            BonusAsiakas asiakas    = new BonusAsiakas();
            double       etupisteet = asiakas.LaskeEtupisteet(75);

            Assert.AreEqual(1.5, etupisteet);
            etupisteet = asiakas.LaskeEtupisteet(150);
            Assert.AreEqual(3.0, etupisteet);
            etupisteet = asiakas.LaskeEtupisteet(351);
            Assert.AreEqual(7.0, etupisteet);
        }
コード例 #4
0
        /// <summary>
        /// List<BonusAsiakas> HaeKaikki()
        ///
        /// Metodi palauttaa kaikki bonusasiakkaat tietokannasta (Hashtable)
        /// listana, joka sisältää Bonusasiakas-luokan olioita.
        ///
        /// TÄTÄ METODIA EI OLE KÄYTETTY MISSÄÄN
        /// </summary>
        /// <returns></returns>
        public override List <BonusAsiakas> HaeKaikki()
        {
            List <BonusAsiakas> kaikkiAsiakkaat = new List <BonusAsiakas>();

            for (int i = 1; i <= asiakkaat.Count; i++)
            {
                BonusAsiakas asiakas = (BonusAsiakas)asiakkaat[i];
                kaikkiAsiakkaat.Add(new BonusAsiakas(asiakas.Id, asiakas.Etupisteet));
            }
            return(kaikkiAsiakkaat);
        }
コード例 #5
0
        public void KuuluisiKerryttaaEtupisteetBonusasiakkaalle()
        {
            BonusAsiakas asiakas = new BonusAsiakas();

            Assert.AreEqual(0, asiakas.Etupisteet);

            asiakas.KerrytaEtupisteita(75);
            Assert.AreEqual(1.5, asiakas.Etupisteet);
            asiakas.KerrytaEtupisteita(75);
            Assert.AreEqual(3.0, asiakas.Etupisteet);
            asiakas.KerrytaEtupisteita(25);
            Assert.AreEqual(3.5, asiakas.Etupisteet);
        }
コード例 #6
0
        public void TestienAlustus()
        {
            asiakasDb = new InMemoryBonusAsiakasDb();
            BonusAsiakas asiakas = new BonusAsiakas();

            asiakasDb.Uusi(asiakas);
            BonusAsiakas asiakas2 = new BonusAsiakas();

            asiakasDb.Uusi(asiakas2);
            BonusAsiakas asiakas3 = new BonusAsiakas();

            asiakasDb.Uusi(asiakas3);
            BonusAsiakas asiakas4 = new BonusAsiakas();

            asiakasDb.Uusi(asiakas4);
        }
コード例 #7
0
 void LaskeKokonaishintaJaEtupisteet()
 {
     if (BonusAsiakasCheckbox.Checked)
     {
         BonusAsiakas bonusAsiakas = new BonusAsiakas();
         EtupisteetValue.Text = bonusAsiakas.LaskeEtupisteet(tilaus.LaskeVerollinenKokonaishinta()).ToString();
         tilaus.Asiakas       = bonusAsiakas;
         NaytaEtupisteidenElementit();
     }
     else
     {
         tilaus.Asiakas = new Asiakas();
         PiilotaEtupisteidenElementit();
     }
     LaskeKokonaishintaTilaukselle();
 }
コード例 #8
0
        /// <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;
            }
        }
コード例 #9
0
        public void KuuluisiOstaaEtupisteillaJaPaivitaaEtupisteidenMaara()
        {
            BonusAsiakas asiakas = new BonusAsiakas(1, 245);

            Assert.AreEqual(0, asiakas.OstaEtupisteilla(120));
            Assert.AreEqual(125, asiakas.Etupisteet);
            Assert.AreEqual(48, asiakas.OstaEtupisteilla(173));
            Assert.AreEqual(0, asiakas.Etupisteet);

            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(75);
            asiakas.KerrytaEtupisteita(50);
            Assert.AreEqual(10, asiakas.Etupisteet);
            Assert.AreEqual(33, asiakas.OstaEtupisteilla(43));
            Assert.AreEqual(0, asiakas.Etupisteet);
        }
コード例 #10
0
        public void KuuluisiPaivittaaAsiakkaanEtupisteidenMuutokset()
        {
            BonusAsiakas asiakasTietokannasta = asiakasDb.Hae(1);

            asiakasTietokannasta.KerrytaEtupisteita(200);
            asiakasTietokannasta.KerrytaEtupisteita(142);
            asiakasTietokannasta.KerrytaEtupisteita(360);
            Assert.AreEqual(14.04, asiakasTietokannasta.Etupisteet, 0.1);

            asiakasDb.TallennaMuutokset(asiakasTietokannasta);
            BonusAsiakas asiakasTietokannasta2 = asiakasDb.Hae(1);

            Assert.AreEqual(1, asiakasTietokannasta2.Id);
            Assert.AreEqual(14.04, asiakasTietokannasta2.Etupisteet, 0.1);

            double maksettavaSumma = asiakasTietokannasta2.OstaEtupisteilla(90);

            asiakasDb.TallennaMuutokset(asiakasTietokannasta2);
            BonusAsiakas asiakasTietokannasta3 = asiakasDb.Hae(1);

            Assert.AreEqual(1, asiakasTietokannasta3.Id);
            Assert.AreEqual(0, asiakasTietokannasta3.Etupisteet, 0.1);
            Assert.AreEqual(75.96, maksettavaSumma, 0.1);
        }
コード例 #11
0
        public void KuuluisiLaskeaEtuhintaBonusasiakkaalle()
        {
            Asiakas asiakas = new BonusAsiakas();

            Assert.AreEqual(28.30, asiakas.LaskeHinta(33.30), 0.01);
        }
コード例 #12
0
 public abstract void Uusi(BonusAsiakas asiakas);
コード例 #13
0
 public abstract void TallennaMuutokset(BonusAsiakas asiakas);
コード例 #14
0
 /// <summary>
 /// void Uusi(BonusAsiakas asiakas)
 ///
 /// Metodi lisää uuden Bonusasiakkaan tiedot tietokantaan. (hashtable)
 /// </summary>
 /// <param name="asiakas"></param>
 public override void Uusi(BonusAsiakas asiakas)
 {
     asiakkaat[seuraavaId] = asiakas;
     seuraavaId++;
 }
コード例 #15
0
 /// <summary>
 /// void TallennaMuutokset(BonusAsiakas asiakas)
 ///
 /// Metodi tallentaa Bonusasiakkaan tietojen muutokset
 /// tietokantaan. (hashtable)
 ///
 /// TÄTÄ METODIA EI OLE KÄYTETTY MISSÄÄN
 /// </summary>
 /// <param name="asiakas"></param>
 public override void TallennaMuutokset(BonusAsiakas asiakas)
 {
     asiakkaat[asiakas.Id] = asiakas;
 }