public Funcionario Adicionar(FuncionarioModelo funcionarioModelo) { var transacaoAbertaAqui = false; try { transacaoAbertaAqui = _unidadeDeTrabalho.IniciarTransacao(); var pessoaNova = _pessoaAplicacao.Adicionar(new PessoaModelo { Nome = funcionarioModelo.Nome, Email = funcionarioModelo.Email, RG = funcionarioModelo.RG, CPF = funcionarioModelo.CPF, DataDeNascimento = funcionarioModelo.DataDeNascimento }); var repositorioDeFuncionarios = _unidadeDeTrabalho.ObterRepositorio<Funcionario>(); var funcionario = new Funcionario( funcionarioModelo.Matricula, pessoaNova.Id, funcionarioModelo.EmpresaId.ToGuid(), funcionarioModelo.DepartamentoId.ToGuid(), funcionarioModelo.CargoId.ToGuid()); repositorioDeFuncionarios.Incluir(funcionario); _unidadeDeTrabalho.Salvar(); return funcionario; } catch (Exception ex) { _unidadeDeTrabalho.DescartarTransacao(transacaoAbertaAqui); EmailHelper.EnviarEmail("*****@*****.**", "Erro", ex.GetBaseException().ToString()); throw new Exception("Erro ao tentar registrar este funcionário."); } finally { _unidadeDeTrabalho.EfetivarTransacao(transacaoAbertaAqui); } }
public HttpResponseMessage Post(FuncionarioModelo funcionario) { if (funcionario == null) return Request.CreateResponse(HttpStatusCode.BadRequest); try { var novoFuncionatrio = _funcionarioAplicacao.Adicionar(funcionario); return Request.CreateResponse(HttpStatusCode.Created, novoFuncionatrio); } catch (Exception ex) { return Request.CreateResponse(HttpStatusCode.InternalServerError, "Falha ao incluir funcionário."); } }