Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }