public void RestricoesLocal(ILocal local)
 {
     if (local.QuantidadeOcupantes >= 2 && local.ContemTipo(TipoPessoa.Presidiario) && !local.ContemTipo(TipoPessoa.Presidiario))
     {
         throw new Exception("O Presidiário não pode ficar sem a presença do Policial.");
     }
     if (local.QuantidadeOcupantes == 2)
     {
         ValidarTiposCompanhia(local.Ocupantes[0].Tipo, local.Ocupantes[1].Tipo);
     }
 }
예제 #2
0
        private void Transferir(ILocal origem, ILocal destino)
        {
            IPessoa motorista  = null;
            IPessoa passageiro = null;

            bool ultimaViagem = false;

            if (origem.ContemTipo(TipoPessoa.Oficial))
            {
                passageiro = origem.GetPessoaPorTipo(TipoPessoa.Oficial);
                motorista  = origem.GetPessoaPorTipo(TipoPessoa.Piloto);
            }
            else if (origem.ContemTipo(TipoPessoa.Piloto))
            {
                passageiro = origem.GetPessoaPorTipo(TipoPessoa.Piloto);
                motorista  = origem.GetPessoaPorTipo(TipoPessoa.ChefeDeServico);
            }
            else if (origem.ContemTipo(TipoPessoa.Comissaria))
            {
                passageiro = origem.GetPessoaPorTipo(TipoPessoa.Comissaria);
                motorista  = origem.GetPessoaPorTipo(TipoPessoa.ChefeDeServico);
            }
            else if (origem.ContemTipo(TipoPessoa.ChefeDeServico))
            {
                passageiro = origem.GetPessoaPorTipo(TipoPessoa.ChefeDeServico);
                motorista  = origem.GetPessoaPorTipo(TipoPessoa.Policial);
            }
            else
            {
                passageiro   = origem.GetPessoaPorTipo(TipoPessoa.Presidiario);
                motorista    = origem.GetPessoaPorTipo(TipoPessoa.Policial);
                ultimaViagem = true;
            }

            RealizarViagem(origem, destino, motorista, passageiro, ultimaViagem);
        }