/// <summary>
        /// Registra a entrada de um carro no estacionamento.
        /// </summary>
        public static void Checkin(string placa)
        {
            ICommand _checkinCommand;

            //validation
            if (String.Equals(placa.Trim(), string.Empty))
            {
                throw new Exception(String.Format("Placa inválida.", placa));
            }

            if (Estacionamento.ObterCarros().Count == VAGAS_TOTAIS)
            {
                throw new Exception("Estacionamento cheio!");
            }

            if (Estacionamento.ObterCarros().Any(c => c.Key.Placa.Contains(placa)))
            {
                throw new Exception(String.Format("Carro placa '{0} já existe!", placa));
            }

            //TODO: replace this
            Car myCar = new Car();

            myCar.Placa = placa;

            _checkinCommand = new CheckinCommand(myCar);
            _checkinCommand.Run();
        }
        /// <summary>
        /// Registra a saída de um carro do estacionamento.
        /// </summary>
        public static double Checkout(string placa)
        {
            ICommand _checkoutCommand;

            if (String.Equals(placa.Trim(), string.Empty))
            {
                throw new Exception(String.Format("Placa inválida.", placa));
            }

            if (!Estacionamento.ObterCarros().Any(c => c.Key.Placa.Contains(placa)))
            {
                throw new Exception(String.Format("Carro placa '{0}' NÃO existe!", placa));
            }


            var entrada = Estacionamento.ObterCarros().FirstOrDefault(c => c.Key.Placa.Contains(placa)).Value;

            var valor = CalculaEstacionamento(entrada, DateTime.Now);

            Car myCar = new Car();

            myCar.Placa = placa;

            _checkoutCommand = new CheckoutCommand(myCar);
            _checkoutCommand.Run();

            return(valor);
        }
 /// <summary>
 /// Retorna todos os carros no estacionamento
 /// </summary>
 public static IDictionary <Car, DateTime> ObterTodosCarros()
 {
     return(Estacionamento.ObterCarros());
 }