public void Retirar(Veiculo veiculo)
        {
            if (veiculo == null)
                throw new ValorNullException("Selecione um veiculo para retirar");

            var vagaDoVeiculoAtual = VagasUtilizadas.ToList().Where(x => x.Veiculo != null && x.Veiculo.Id == veiculo.Id).ToList();
            for (int i = 0; i < vagaDoVeiculoAtual.Count; i++)
                VagasUtilizadas.Remove(vagaDoVeiculoAtual[i]);
        }
        public void Estacionar(Veiculo veiculo, Vaga vaga)
        {
            if (veiculo == null)
                throw new ValorNullException("Selecione um veiculo para estacionar");

            if (vaga == null)
                throw new ValorNullException("Selecione a vaga que será estacionado o veiculo");

            if (!Vagas.Contains(vaga))
                throw new EstacionarException("Vaga selecionada não é do estacionado");

            var vagaAtual = VagasUtilizadas.ToList().FirstOrDefault(x => x.Vaga != null && x.Vaga.Id == vaga.Id);
            var vagaDoVeiculoAtual = VagasUtilizadas.ToList().FirstOrDefault(x => x.Veiculo!= null && x.Veiculo.Id == veiculo.Id);

            if (vagaDoVeiculoAtual != null)
                throw new EstacionarException("O veiculo já está estacionado.");

            if (vagaAtual != null)
                throw new EstacionarException("A vaga já possui um veiculo estacionado");

            this.VagasUtilizadas.Add(new VagaVeiculo(this, vaga,veiculo));
        }
 public VagaVeiculo(Estacionamento estacionamento, Vaga vaga, Veiculo veiculo)
 {
     Estacionamento = estacionamento;
     Vaga = vaga;
     Veiculo = veiculo;
     DataEntrada = DateTime.Now;
 }