public async Task Atualizar(Funcionario funcionario) { var transaction = _repositoryWrite.IniciarTransacao(); try { Funcionario baseFuncionario = await _repositoryRead.ObterPorId(transaction, funcionario.Id); baseFuncionario.Atualizar(funcionario.Nome, funcionario.DataNascimento, funcionario.Email, funcionario.Matricula, funcionario.Cargo); baseFuncionario.AtualizarTelefones(funcionario.Telefones); baseFuncionario.AtualizarEnderecoComercial(funcionario.EnderecoComercial); baseFuncionario.AtualizarEnderecoResidencial(funcionario.EnderecoResidencial); var result = await _repositoryWrite.Atualizar(baseFuncionario, transaction); if (!result) { _repositoryWrite.CancelarTransacao(transaction); // return result; } if (funcionario.Telefones != null && funcionario.Telefones.Any()) { await TratarTelefones(funcionario.Telefones, transaction); } if (funcionario.EnderecoResidencial != null && !string.IsNullOrEmpty(funcionario.EnderecoResidencial.Rua)) { await TratarEndereco(funcionario.EnderecoResidencial, transaction); } if (funcionario.EnderecoComercial != null && !string.IsNullOrEmpty(funcionario.EnderecoComercial.Rua)) { await TratarEndereco(funcionario.EnderecoComercial, transaction); } _repositoryWrite.CompletarTransacao(transaction); //return result; } catch (Exception ex) { _repositoryWrite.CancelarTransacao(transaction); _logger.LogError(ex, "Erro ao atualizar"); throw; } }
public async Task <bool> Atualizar(Funcionario funcionario, string currentUserId) { try { Funcionario baseFuncionario = await _repositoryRead.ObterPorId(funcionario.Id); baseFuncionario.Atualizar(funcionario.Nome, funcionario.DataNascimento, funcionario.Email, funcionario.Matricula, funcionario.Cargo); baseFuncionario.AtualizarEnderecoComercial(funcionario.EnderecoComercial); baseFuncionario.AtualizarEnderecoResidencial(funcionario.EnderecoResidencial); var result = await _repositoryWrite.Atualizar(funcionario); return(result); } catch (Exception ex) { _logger.LogError(ex, "Erro ao atualizar"); return(false); } }