/// <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 KuuluisiMuuttaaTilauksenTilaVahvistetuksi() { tilaus.VahvistaTilaus(); Assert.AreEqual(true, tilaus.OnkoVahvistettu()); }