public Operation Update(RptaOportunidadSF RptaOportunidadNM) { var operation = new Operation(); #region Parameters AddParameter(OutParameter.CodigoError, OracleDbType.Varchar2, RptaOportunidadNM.CodigoError, ParameterDirection.Input, 2); AddParameter(OutParameter.MensajeError, OracleDbType.Varchar2, RptaOportunidadNM.MensajeError, ParameterDirection.Input, 1000); AddParameter(OutParameter.SF_IDOPORTUNIDAD_NM, OracleDbType.Varchar2, RptaOportunidadNM.idOportunidad_SF); AddParameter(OutParameter.IdIdentificadorNM, OracleDbType.Int64, Convert.ToInt64(RptaOportunidadNM.Identificador_NM)); AddParameter(OutParameter.IdActualizados, OracleDbType.Int32, DBNull.Value, ParameterDirection.Output); #endregion #region Invoke ExecuteStoredProcedure(StoredProcedureName.AW_Upd_OportunidadNM); operation[OutParameter.IdActualizados] = GetOutParameter(OutParameter.IdActualizados); #endregion return(operation); }
public IHttpActionResult Send(UnidadNegocio unidadNegocio) { IEnumerable <OportunidadNM> oportunidadNMs = null; List <RptaOportunidadSF> ListRptaOportunidadSF_Fail = new List <RptaOportunidadSF>(); RptaOportunidadSF _rptaOportunidadSF = null; object SFResponse = null; string exceptionMsg = string.Empty; object objEnvio = null; try { var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio()); /// I. Consulta de Oportunidades de Nuevo Mundo oportunidadNMs = (IEnumerable <OportunidadNM>)_oportunidadNMRepository.GetOportunidades()[OutParameter.CursorOportunidad]; if (oportunidadNMs == null || oportunidadNMs.ToList().Count.Equals(0)) { return(Ok(false)); } /// Obtiene Token para envío a Salesforce var authSf = RestBase.GetToken(); var token = authSf[OutParameter.SF_Token].ToString(); var crmServer = authSf[OutParameter.SF_UrlAuth].ToString(); /// preparación de la oportunidad para envio a Salesforce var oportunidadNMSF = new List <object>(); foreach (var oportunidad in oportunidadNMs) { oportunidadNMSF.Add(oportunidad.ToSalesforceEntity()); } /// II. Enviar Oportunidad a Salesforce try { objEnvio = new { ListadatosOportunidades = oportunidadNMSF }; QuickLog(objEnvio, "body_request.json", "OportunidadNM", previousClear: true); /// ♫ Trace var responseOportunidadNM = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.OportunidadNMMethod, Method.POST, objEnvio, true, token); if (responseOportunidadNM.StatusCode.Equals(HttpStatusCode.OK)) { dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseOportunidadNM.Content); QuickLog(jsonResponse, "body_response.json", "OportunidadNM", previousClear: true); /// ♫ Trace SFResponse = jsonResponse["respuestas"]; foreach (var jsResponse in jsonResponse["respuestas"]) { try { _rptaOportunidadSF = new RptaOportunidadSF(); _rptaOportunidadSF.CodigoError = "OK"; _rptaOportunidadSF.MensajeError = "TST"; _rptaOportunidadSF.idOportunidad_SF = "001P000001bpIOWIC4"; _rptaOportunidadSF.Identificador_NM = "2"; _rptaOportunidadSF.CodigoError = jsResponse[OutParameter.SF_Codigo]; _rptaOportunidadSF.MensajeError = jsResponse[OutParameter.SF_Mensaje]; _rptaOportunidadSF.idOportunidad_SF = jsResponse[OutParameter.SF_IdOportunidad2]; _rptaOportunidadSF.Identificador_NM = jsResponse[OutParameter.SF_IdentificadorNM]; /// Actualización de estado de Oportunidad var updateResponse = _oportunidadNMRepository.Update(_rptaOportunidadSF); if (Convert.IsDBNull(updateResponse[OutParameter.IdActualizados]) == true || updateResponse[OutParameter.IdActualizados].ToString().ToLower().Contains("null") || Convert.ToInt32(updateResponse[OutParameter.IdActualizados].ToString()) <= 0) { exceptionMsg = exceptionMsg + "Error en el Proceso de Actualizacion - No Actualizo Ningun Registro. Identificador NM : " + _rptaOportunidadSF.Identificador_NM.ToString() + "||||"; ListRptaOportunidadSF_Fail.Add(_rptaOportunidadSF); /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/ } } catch (Exception ex) { exceptionMsg = exceptionMsg + "Error en el Proceso de Actualizacion - Response SalesForce : " + ex.Message + "||||"; ListRptaOportunidadSF_Fail.Add(_rptaOportunidadSF); /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/ } } } else { exceptionMsg = responseOportunidadNM.StatusCode.ToString(); if (responseOportunidadNM != null && responseOportunidadNM.Content != null) { QuickLog(responseOportunidadNM.Content, "body_response.json", "OportunidadNM", previousClear: true); /// ♫ Trace } } } catch (Exception ex) { exceptionMsg = ex.Message; } return(Ok(true)); } catch (Exception ex) { oportunidadNMs = null; exceptionMsg = exceptionMsg + " / " + ex.Message; return(InternalServerError(ex)); } finally { if (objEnvio != null || SFResponse != null || ListRptaOportunidadSF_Fail != null || string.IsNullOrEmpty(exceptionMsg) == false) { (new { Request = objEnvio, Response = SFResponse, Rpta_NoUpdate_Fail = ListRptaOportunidadSF_Fail, Exception = exceptionMsg //LegacySystems = oportunidadNMs }).TryWriteLogObject(_logFileManager, _clientFeatures); } } }