private ITripulante TransportarTripulantes(ILocalidade localOrigem, ILocalidade localDestino, IEnumerable <ITripulante> listaTripulacao)
        {
            var         listaOrdenada = listaTripulacao.OrderBy(o => o.Tipo);
            var         passageiro    = listaOrdenada.FirstOrDefault();
            ITripulante motorista     = null;

            switch (passageiro.Tipo)
            {
            case TipoTripulante.Comissaria:
                motorista = listaOrdenada
                            .FirstOrDefault(t => t.IsMotorista && t.Identificador != passageiro.Identificador && t.Tipo != TipoTripulante.Piloto && t.Tipo != TipoTripulante.Policial && t.Tipo != TipoTripulante.Presidiario);
                break;

            case TipoTripulante.Oficial:
                motorista = listaOrdenada
                            .FirstOrDefault(t => t.IsMotorista && t.Identificador != passageiro.Identificador && t.Tipo != TipoTripulante.ChefeServico && t.Tipo != TipoTripulante.Policial && t.Tipo != TipoTripulante.Presidiario);
                break;

            default:
                motorista = listaOrdenada
                            .FirstOrDefault(t => t.IsMotorista && t.Identificador != passageiro.Identificador);
                break;
            }

            var ultimaViagem = passageiro.Tipo.Equals(TipoTripulante.Presidiario);

            _smartForTwoBusiness.EmbarcarTripulantes(localOrigem, motorista, passageiro);
            _smartForTwoBusiness.DesembarcarTripulantes(localDestino, ultimaViagem);

            return(ultimaViagem ? null : motorista);
        }
示例#2
0
 public IVeiculoTransporte EmbarcarOcupantes(ITripulante motorista, ITripulante passageiro)
 {
     ListaOcupantes.Add(motorista);
     ListaOcupantes.Add(passageiro);
     Motorista  = motorista;
     Passageiro = passageiro;
     return(this);
 }
        public void EmbarcarTripulantes(ILocalidade localOrigem, ITripulante motorista, ITripulante passageiro)
        {
            _veiculoTransporte.EmbarcarOcupantes(motorista, passageiro);
            _validacaoTransporte
            .ValidarQuantidadeOcupantes(_veiculoTransporte)
            .ValidarMotorista(_veiculoTransporte)
            .ValidarOcupantes(_veiculoTransporte);

            Console.WriteLine(_veiculoTransporte.ToString());

            localOrigem.RemoverTripulante(motorista);
            localOrigem.RemoverTripulante(passageiro);
        }
示例#4
0
 public void RemoverTripulante(ITripulante tripulante)
 {
     tripulante.IsTransportado = true;
 }
示例#5
0
 public ILocalidade AdicionarTripulante(ITripulante tripulante)
 {
     ListaTripulacao.Add(tripulante);
     ListaTripulacao = ListaTripulacao.ToList().Shuffle();
     return(this);
 }