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); }
public void TransportarTripulacao(ILocalidade localOrigem, ILocalidade localDestino) { try { Console.WriteLine($"Inicio transporte {localOrigem.ToString()} => {localDestino.ToString()}"); while (localOrigem.ListaTripulacao.Any(t => !t.IsTransportado)) { var listaTripulacao = localOrigem.ListaTripulacao.Where(t => !t.IsTransportado); localOrigem.ListarTripulantes(); var motorista = TransportarTripulantes(localOrigem, localDestino, listaTripulacao); if (motorista != null) { localOrigem.ListaTripulacao .Where(t => t.Identificador == motorista.Identificador) .ToList().ForEach(t => t.IsTransportado = false); } localDestino.ListarTripulantes(); } Console.WriteLine($"Fim transporte {localOrigem.ToString()} => {localDestino.ToString()}"); localOrigem.ListarTripulantes(); localDestino.ListarTripulantes(); } catch (BusinessException e) { Console.WriteLine(e.Message); } }
public void DesembarcarTripulantes(ILocalidade localDestino, bool ultimaViagem) { if (ultimaViagem) { localDestino.AdicionarTripulante(_veiculoTransporte.Motorista); } localDestino.AdicionarTripulante(_veiculoTransporte.Passageiro); _veiculoTransporte.DesembarcarOcupantes(); }
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); }
public void DesembarcarTripulantes(ILocalidade localDestino) { DesembarcarTripulantes(localDestino, false); }
public LocalidadesController() { _localidade = new Localidade(); }