exos-polymorphism/TicketSystem/Order.cs
2023-07-01 16:44:08 +02:00

57 lines
1.4 KiB
C#

using System.Collections.Generic;
using System.Diagnostics;
using TicketSystem.Tickets;
namespace TicketSystem
{
public class Order
{
private List<Ticket> tickets;
private int price;
public int Price => price;
public Order()
{
tickets = new List<Ticket>();
price = 0;
}
public void AddTicket(Ticket ticket)
{
tickets.Add(ticket);
price += ticket.price;
}
public void AddTicket(TicketType type)
{
Ticket t;
switch (type)
{
case TicketType.Child:
t = new Child();
tickets.Add(t);
price += t.price;
break;
case TicketType.Student:
t = new Student();
tickets.Add(t);
price += t.price;
break;
case TicketType.Adult:
t = new Adult();
tickets.Add(t);
price += t.price;
break;
}
}
public void ApplyReduction()
{
price = 0;
foreach (var ticket in tickets)
{
price += ticket.PriceWithReduction();
}
}
}
}