public MsgRetorno AdaptarMsgRetorno(MsgBalanco msgBalanco, IList <string> erros) { _log.TraceMethodStart(); MsgRetorno retorno = new MsgRetorno(); string identificador = string.Empty; DateTime dataEnvio = DateTime.MinValue; string status = erros.Any() ? ConstantesIntegracao.StatusIntegracao.Erro : ConstantesIntegracao.StatusIntegracao.OK; if (msgBalanco != null && msgBalanco.header != null) { identificador = msgBalanco.header.identificadorEnvio; dataEnvio = msgBalanco.header.dataHoraEnvio.HasValue ? msgBalanco.header.dataHoraEnvio.Value : DateTime.Now; } var header = new MsgHeaderRetorno() { identificador = identificador, dataHoraEnvio = dataEnvio, dataHoraRetorno = DateTime.Now, status = status }; if (erros.Any()) { header.erros = erros.ToArray(); } retorno.header = header; _log.TraceMethodEnd(); return(retorno); }
public ActionResult postBalanco([FromRoute] string codPessoa, [FromBody] MsgBalanco msg) { List <string> listaErros = new List <string>(); MsgRetorno retorno; try { _log.TraceMethodStart(); if (msg == null) { throw new ApplicationException("Mensagem inválida"); } if (msg.header == null) { throw new ApplicationException("Mensagem inválida - chave header não informada"); } if (msg.body == null) { throw new ApplicationException("Mensagem inválida - chave body não informada"); } if (string.IsNullOrWhiteSpace(msg.header.identificadorEnvio)) { msg.header.identificadorEnvio = Util.GerarIdentificadorUnico(); } _log.Information($"Iniciando o processamento da mensagem [post] com o identificador {msg.header.identificadorEnvio}"); _log.SetIdentificador(msg.header.identificadorEnvio); listaErros = Util.ValidarModel(ModelState); if (listaErros.Any()) { retorno = _adaptador.AdaptarMsgRetorno(msg, listaErros); _log.TraceMethodEnd(); return(StatusCode((int)HttpStatusCode.BadRequest, retorno)); } if (!Util.ValidarApiKey(Request, _configuracaoBaseAPI)) { return(StatusCode((int)HttpStatusCode.Unauthorized)); } ConfiguracaoAcessoCUC acessoCUC = _configuracaoCUC.Value.AcessoCUC; if (acessoCUC == null) { throw new Exception("Configuração de acesso não parametrizado no arquivo de configuração - AcessoCUC"); } string token = _ServiceAutenticacao.GetToken(acessoCUC); ParametroIntegracaoPessoa parm = _clientPessoa.CarregarParametrosCUCPessoa(msg.header.empresa.Value, msg.header.dependencia.Value, acessoCUC.userServico, _configuracaoCUC.Value.SiglaSistema, token); DataSetPessoa dataSetPessoa = _clientPessoa.SelecionarCabecalho(parm, codPessoa); List <DataSetPessoaRegistroBalanco> registros = new List <DataSetPessoaRegistroBalanco>(); registros.Add(_adaptador.AdaptarMsgRegistroBalancoToDataSetPessoaRegistroBalanco(msg.body.RegistroBalanco, ConstantesInegracao.StatusLinhaCUC.Insercao, listaErros)); dataSetPessoa.RegistroBalanco = registros.ToArray(); var retPessoa = _clientPessoa.AtualizarPessoa(parm, dataSetPessoa); if (retPessoa.Excecao != null) { throw new ApplicationException($"Retorno serviço CUC - {retPessoa.Excecao.Mensagem}"); } retorno = _adaptador.AdaptarMsgRetorno(msg, listaErros); _log.TraceMethodEnd(); return(StatusCode((int)HttpStatusCode.OK, retorno)); } catch (LogErrorException LogEx) { listaErros.Add(LogEx.Message); retorno = _adaptador.AdaptarMsgRetorno(msg, listaErros); return(StatusCode((int)HttpStatusCode.InternalServerError, retorno)); } catch (ApplicationException appEx) { listaErros.Add(appEx.Message); retorno = _adaptador.AdaptarMsgRetorno(msg, listaErros); _log.Error(appEx); _log.TraceMethodEnd(); return(StatusCode((int)HttpStatusCode.BadRequest, retorno)); } catch (Exception ex) { listaErros.Add(ex.Message); retorno = _adaptador.AdaptarMsgRetorno(msg, listaErros); _log.Error(ex); _log.TraceMethodEnd(); return(StatusCode((int)HttpStatusCode.InternalServerError, retorno)); } }