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)));