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(); }
/// <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; } }
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()); }
public void KuuluisiLaskeaTilauksenKokonaishintaKunTilausrivejaEiOle() { var kokonaishinta = tilaus.LaskeVerollinenKokonaishinta(); Assert.AreEqual(0.0, kokonaishinta, 0.01); }