Пример #1
0
        public static Funcionario Crie(string nome,
                                       float salarioContratual,
                                       DateTime dataAdmissao,
                                       EnumTipoFuncionario enumTipoFuncionario,
                                       CNH cnh)
        {
            Funcionario funcionario = null;

            switch (enumTipoFuncionario)
            {
            case EnumTipoFuncionario.AUTONOMO:
                funcionario = new FuncionarioAutonomo(nome, 0, salarioContratual, dataAdmissao);
                break;

            case EnumTipoFuncionario.CLT:
                funcionario = new FuncionarioCLT(nome, 0, salarioContratual, dataAdmissao);
                break;

            case EnumTipoFuncionario.PROLABORE:
                funcionario = new FuncionarioProlabore(nome, 0, salarioContratual, dataAdmissao);
                break;

            case EnumTipoFuncionario.INTERMITENTE:
                funcionario = new FuncionarioIntermitente(nome, 0, salarioContratual, dataAdmissao);
                break;

            default:
                throw new ArgumentException("Tipo nao mapeado na fabrica");
            }
            funcionario.CNH = cnh;
            return(funcionario);
        }
 public void CadastraFuncionario(string nome,
                                 float salarioContratual,
                                 DateTime dataAdmissao,
                                 EnumTipoFuncionario enumTipoFuncionario,
                                 CNH cnh)
 {
     SalveFuncionario(nome, salarioContratual, dataAdmissao, enumTipoFuncionario, cnh);
 }
        private void SalveFuncionario(string nome,
                                      float salarioContratual,
                                      DateTime dataAdmissao,
                                      EnumTipoFuncionario enumTipoFuncionario,
                                      CNH cnh)
        {
            if (ValidaCNH(cnh))
            {
                throw new ArgumentException();
            }

            Funcionario funcionario = FabricaFuncionarios.Crie(nome,
                                                               salarioContratual,
                                                               dataAdmissao,
                                                               enumTipoFuncionario,
                                                               cnh);
            var mensagens = ValidadorGenerico.ValideGenerico(funcionario);

            if (!mensagens.Any())
            {
                repositorioFuncionario.Insert(funcionario);
            }
        }
 private bool ValidaCNH(CNH cnh)
 => !(cnh == null || (cnh.Numero > 0 && cnh.DataValidade != default(DateTime)));