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); }
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)); }
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(); } }
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.")); }
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; } }
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)); }
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; } }
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.")); }
/// <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)); }
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 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++; }
public void TestiAlustus() { tilaus = new Tilaus(); }
public override void KuuluisiHakeaTilausTunnisteellaMuttaPalauttaaTyhjaTilaus() { Tilaus tilaus = tilausDb.Hae(99); Assert.IsNull(tilaus); }