/// <summary> /// Allows cars to leave the parking /// </summary> /// <param name="ticket">Ticket to calculate the parking charges</param> /// <param name="leavingDate">Date leaving the car park</param> /// <returns>Parking charge</returns> public double Leave(IParkingTicket ticket, DateTime leavingDate) { if (!parkingTickets.TryGetValue(ticket, out IParkingChargeCalculator chargeCalculator)) { throw new InvalidOperationException("Invalid ticket"); } parkingTickets.Remove(ticket); return(chargeCalculator.CalculateParkingCharge(leavingDate)); }
/// <summary> /// Allows cars to leave the parking /// </summary> /// <param name="ticket">Ticket to calculate the parking charges</param> /// <returns>Parking charge</returns> public double Leave(IParkingTicket ticket) => Leave(ticket, DateTime.Now);