public PrijsBerekening(Limo limo, Arrangement arr, EventingKorting evtKorting, int aantalReserveringen, DateTime startTijd, DateTime eindTijd) { Limo = limo; Arrangement = arr; EventingKorting = evtKorting; AantalReserveringen = aantalReserveringen; Periode = new Periode(startTijd, eindTijd); BerekenKostPrijs(); }
public void BerekenKostPrijs() { int teller = 0; if (Arrangement == Arrangement.NightLife) { PrijsPerUur.Add(teller, Limo.NightLifeArrangementPrijs); if (!Periode.BevatOverUren(Arrangement.NightLife)) { UurOntleder(Periode.Begin, Periode.Einde); } else { UurOntleder(Periode.Begin, Periode.Begin.AddHours(7)); } if (Periode.BevatOverUren(Arrangement)) { DateTime startTijd = Periode.Begin.AddHours(7); while (startTijd < Periode.Einde) { PrijsPerUur.Add(teller + 1, NachtUurPrijs(Limo.EersteUurPrijs)); PrijsInfo.AantalOverUren += 1; if (IsNachtUur(startTijd)) { PrijsInfo.AantalNachtUren += 1; } else { PrijsInfo.AantalGewoneUren += 1; } teller += 1; startTijd = Periode.Begin.AddHours(7 + teller); } } } else if (Arrangement == Arrangement.Wedding) { PrijsPerUur.Add(teller, Limo.WeddingArrangementPrijs); if (!Periode.BevatOverUren(Arrangement.Wedding)) { UurOntleder(Periode.Begin, Periode.Einde); } else { UurOntleder(Periode.Begin, Periode.Begin.AddHours(7)); } if (Periode.BevatOverUren(Arrangement)) { DateTime startTijd = Periode.Begin.AddHours(7); while (startTijd < Periode.Einde) { if (IsNachtUur(startTijd)) { PrijsPerUur.Add(teller + 1, NachtUurPrijs(Limo.EersteUurPrijs)); PrijsInfo.AantalNachtUren += 1; } else { PrijsPerUur.Add(teller + 1, TweedeUurPrijs(Limo.EersteUurPrijs)); } PrijsInfo.AantalOverUren += 1; teller += 1; startTijd = Periode.Begin.AddHours(7 + teller); } } } else if (Arrangement == Arrangement.Airport || Arrangement == Arrangement.Business) { while (teller < Periode.Duur.Hours) { DateTime huidigeTijd = Periode.Begin.AddHours(teller); if (IsEersteUur(huidigeTijd)) { PrijsPerUur.Add(teller, Limo.EersteUurPrijs); if (IsNachtUur(huidigeTijd)) { PrijsInfo.AantalNachtUren += 1; } else { PrijsInfo.AantalGewoneUren += 1; } } else if (IsNachtUur(huidigeTijd)) { PrijsPerUur.Add(teller, NachtUurPrijs(Limo.EersteUurPrijs)); PrijsInfo.AantalNachtUren += 1; } else { PrijsPerUur.Add(teller, TweedeUurPrijs(Limo.EersteUurPrijs)); PrijsInfo.AantalGewoneUren += 1; } teller += 1; } } //optellen van bedragen om prijs exclusief btw VOOR eventingkorting te bekomen foreach (KeyValuePair <int, decimal> prijsVoorUur in PrijsPerUur) { PrijsInfo.BedragExclusiefBtwVoorEventingKorting += prijsVoorUur.Value; } //eventingkorting berekenen en toekennen aan PrijsInfowaarde //controle geldige eventingKorting if (EventingKorting.IsGeldig()) { PrijsInfo.AangerekendeEventingKorting = (PrijsInfo.BedragExclusiefBtwVoorEventingKorting / 100) * (decimal)EventingKorting.KortingVoorAantal(AantalReserveringen); } else { throw new InvalidOperationException("Eventingkorting niet geldig!"); } //Berekening BedragExclBtwNaEventingKorting PrijsInfo.BedragExclusiefBtwNaEventingKorting = PrijsInfo.BedragExclusiefBtwVoorEventingKorting - PrijsInfo.AangerekendeEventingKorting; //Berekening BtwBedrag PrijsInfo.BtwBedrag = (PrijsInfo.BedragExclusiefBtwNaEventingKorting / 100) * BtwPercentage; //Berekening totaalbedrag PrijsInfo.TotaalTeBetalenBedrag = PrijsInfo.BedragExclusiefBtwNaEventingKorting + PrijsInfo.BtwBedrag; }
public KlantCategorie(string naam, EventingKorting eventingKorting) { Naam = naam; EventingKorting = eventingKorting; }