Example #1
0
 public WebQuery GetQueryFor(string url, 
                             RestBase request, 
                             IWebQueryInfo info, 
                             WebMethod method)
 {
     return GetQueryForImpl(info);
 }
Example #2
0
 private void SetTwitterClientInfo(RestBase request)
 {
     if (_info == null)
     {
         return;
     }
     if (!_info.ClientName.IsNullOrBlank())
     {
         request.AddHeader("X-Twitter-Name", _info.ClientName);
         request.UserAgent = _info.ClientName;
     }
     if (!_info.ClientVersion.IsNullOrBlank())
     {
         request.AddHeader("X-Twitter-Version", _info.ClientVersion);
     }
     if (!_info.ClientUrl.IsNullOrBlank())
     {
         request.AddHeader("X-Twitter-URL", _info.ClientUrl);
     }
 }
Example #3
0
        private static void PrepareUpload(RestBase request, string path)
        {
            //account/update_profile_image.json?image=[FILE_PATH]&include_entities=1
            var startIndex = path.IndexOf("?image_path=", StringComparison.Ordinal) + 12;
            var endIndex   = path.IndexOf("&", StringComparison.Ordinal);
            var uri        = path.Substring(startIndex, endIndex - startIndex);

            path           = path.Replace(string.Format("image_path={0}&", uri), "");
            request.Path   = path;
            request.Method = WebMethod.Post;
#if !WINRT
            request.AddFile("image", Path.GetFileName(Uri.UnescapeDataString(uri)), Path.GetFullPath(Uri.UnescapeDataString(uri)), "multipart/form-data");
#else
            var fullPath = Uri.UnescapeDataString(uri);
            if (!System.IO.Path.IsPathRooted(fullPath))                             //Best guess at how to create a 'full' path on WinRT where file access is restricted and all paths should be passed as 'full' versions anyway.
            {
                fullPath = System.IO.Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, uri);
            }
            request.AddFile("image", Path.GetFileName(Uri.UnescapeDataString(uri)), fullPath, "multipart/form-data");
#endif
        }
Example #4
0
        private static void PrepareUpload(RestBase request, string path)
        {
            var startIndex = path.IndexOf("?status=", StringComparison.Ordinal) + 8;
            var endIndex   = path.IndexOf("&pic=", StringComparison.Ordinal);

            request.Method = WebMethod.Post;

            string status = path.Substring(startIndex, endIndex - startIndex);

            request.AddField("status", status);

            // https://upload.api.weibo.com/2/statuses/upload.json
            startIndex = path.IndexOf("&pic=", StringComparison.Ordinal) + 5;
            endIndex   = path.Trim().Length;

            var uri = path.Substring(startIndex, endIndex - startIndex);

            path         = path.Remove(path.IndexOf("?status="));
            request.Path = path;

            var file = new FileStream(Uri.UnescapeDataString(uri), FileMode.Open);

            request.AddFile("pic", Path.GetFileName(Uri.UnescapeDataString(uri)), file, "image/jpeg");
        }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            string            exceptionMsg      = string.Empty;
            UnidadNegocioKeys?_unidadNegocioKey = null;
            object            objEnvio          = null;
            List <Respuesta>  ListRpta          = new List <Respuesta>();
            Respuesta         Rpta = new Respuesta();

            try
            {
                _unidadNegocioKey = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocioByCountry());

                var operation = _cotizacionRepository.Lista_CotizacionB2C();

                Rpta.CodigoError  = operation[OutParameter.CodigoError].ToString();
                Rpta.MensajeError = operation[OutParameter.MensajeError].ToString();
                var cotizacionJYUpdResponse = ((List <CotizacionJYUpdResponse>)operation[OutParameter.CursorCotizacionB2C]);
                if (cotizacionJYUpdResponse == null || cotizacionJYUpdResponse.ToList().Count.Equals(0))
                {
                    return(Ok(Rpta));
                }


                /// 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();

                /// Envío de cotizacion a Salesforce
                var cotizacionSF = new List <object>();
                foreach (var cotizacion in cotizacionJYUpdResponse)
                {
                    cotizacionSF.Add(ToSalesforceEntity(cotizacion));
                }

                try
                {
                    ClearQuickLog("body_request.json", "CotizacionJY");      /// ♫ Trace
                    objEnvio = new { cotizaciones = cotizacionSF };
                    QuickLog(objEnvio, "body_request.json", "CotizacionJY"); /// ♫ Trace
                    var response = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.CotizacionJYUpdMethod, Method.POST, objEnvio, true, token);
                    if (response.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(response.Content);

                        foreach (var Cotizacion in cotizacionJYUpdResponse)
                        {
                            foreach (var jsResponse in jsonResponse["Cotizaciones"])
                            {
                                if (Cotizacion.ID_OPORTUNIDAD_SF == jsResponse["ID_OPORTUNIDAD_SF"] && Cotizacion.ID_COTIZACION_SF == jsResponse["ID_COTIZACION_SF"])
                                {
                                    var cotizacionJYUpd = new CotizacionJYUpd()
                                    {
                                        Cotizacion  = jsResponse[OutParameter.SF_Cotizacion],
                                        File        = jsResponse[OutParameter.SF_File_SubFile],
                                        Es_Atencion = jsResponse[OutParameter.SF_CodigoRetorno],
                                        Descripcion = jsResponse[OutParameter.SF_MensajeRetorno]
                                    };

                                    /// Actualización de estado de subcodigo a PTA
                                    Rpta                  = new Respuesta();
                                    operation             = _cotizacionRepository.Actualizar_EnvioCotizacionB2C(cotizacionJYUpd);
                                    Rpta.CodigoError      = operation[OutParameter.CodigoError].ToString();
                                    Rpta.MensajeError     = operation[OutParameter.MensajeError].ToString();
                                    Rpta.Numero_Afectados = operation[OutParameter.NumeroActualizados].ToString();
                                    ListRpta.Add(Rpta);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Rpta.CodigoError  = ApiResponseCode.ErrorCode;
                    Rpta.MensajeError = ex.Message;
                    exceptionMsg      = ex.Message;
                }
                return(Ok(Rpta));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    UnidadNegocio = _unidadNegocioKey.ToString(),
                    Body = objEnvio,
                    Response = ListRpta,
                    Exception = exceptionMsg
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
Example #6
0
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <CuentaNM> cuentasNMs            = null;
            List <RptaCuentaSF>    ListRptaCuentaSF_Fail = new List <RptaCuentaSF>();
            RptaCuentaSF           _rptaCuentaSF         = null;

            object SFResponse   = null;
            string exceptionMsg = string.Empty;
            object objEnvio     = null;

            try
            {
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());

                /// I. Consulta de Cuentas NM
                cuentasNMs = (IEnumerable <CuentaNM>)_cuentaNMRepository.GetCuentas()[OutParameter.CursorCuentaNM];
                if (cuentasNMs == null || cuentasNMs.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 cuenta para envio a Salesforce
                var cuentaNMSF = new List <object>();
                foreach (var cuenta in cuentasNMs)
                {
                    cuentaNMSF.Add(cuenta.ToSalesforceEntity());
                }

                try
                {
                    /// Envío de CuentaNM a Salesforce
                    objEnvio = new { listadatosCuenta = cuentaNMSF };
                    QuickLog(objEnvio, "body_request.json", "CuentaNM", previousClear: true); /// ♫ Trace

                    var responseCuentaNM = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.CuentaNMMethod, Method.POST, objEnvio, true, token);
                    if (responseCuentaNM.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = (new JavaScriptSerializer()).DeserializeObject(responseCuentaNM.Content);
                        QuickLog(jsonResponse, "body_response.json", "CuentaNM", previousClear: true); /// ♫ Trace

                        SFResponse = jsonResponse["respuestas"];
                        foreach (var jsResponse in jsonResponse["respuestas"])
                        {
                            try
                            {
                                _rptaCuentaSF = new RptaCuentaSF();

                                _rptaCuentaSF.CodigoError      = "OK";
                                _rptaCuentaSF.MensajeError     = "TST";
                                _rptaCuentaSF.idCuenta_SF      = "001P002201bpIOWIC4";
                                _rptaCuentaSF.Identificador_NM = "2";

                                _rptaCuentaSF.CodigoError      = jsResponse[OutParameter.SF_Codigo];
                                _rptaCuentaSF.MensajeError     = jsResponse[OutParameter.SF_Mensaje];
                                _rptaCuentaSF.idCuenta_SF      = jsResponse[OutParameter.SF_IdCuenta2];
                                _rptaCuentaSF.Identificador_NM = jsResponse[OutParameter.SF_IdentificadorNM];

                                /// Actualización de estado de la Cuenta
                                var updateResponse = _cuentaNMRepository.Update(_rptaCuentaSF);

                                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 : " + _rptaCuentaSF.Identificador_NM.ToString() + "||||";
                                    ListRptaCuentaSF_Fail.Add(_rptaCuentaSF);
                                    /*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 + "||||";
                                ListRptaCuentaSF_Fail.Add(_rptaCuentaSF);
                                /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/
                            }
                        }
                    }
                    else
                    {
                        exceptionMsg = responseCuentaNM.StatusCode.ToString();
                        if (responseCuentaNM != null && responseCuentaNM.Content != null)
                        {
                            QuickLog(responseCuentaNM.Content, "body_response.json", "CuentaNM", previousClear: true); /// ♫ Trace
                        }
                    }
                }
                catch (Exception ex)
                {
                    exceptionMsg = ex.Message;
                }

                return(Ok(true));
            }
            catch (Exception ex)
            {
                cuentasNMs   = null;
                exceptionMsg = exceptionMsg + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                if (objEnvio != null || SFResponse != null || ListRptaCuentaSF_Fail != null || string.IsNullOrEmpty(exceptionMsg) == false)
                {
                    (new
                    {
                        Request = objEnvio,
                        Response = SFResponse,
                        Rpta_NoUpdate_Fail = ListRptaCuentaSF_Fail,
                        Exception = exceptionMsg
                                    //LegacySystems = cuentasNMs
                    }).TryWriteLogObject(_logFileManager, _clientFeatures);
                }
            }
        }
Example #7
0
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <CuentaPta> cuentasPtas = null;
            string error = string.Empty;

            try
            {
                var _unidadNegocio = GetUnidadNegocio(unidadNegocio.Descripcion);
                RepositoryByBusiness(_unidadNegocio);
                _instants[InstantKey.Salesforce] = DateTime.Now;

                /// I. Consulta de Cuentas PTA
                cuentasPtas = (IEnumerable <CuentaPta>)(_cuentaPtaRepository.Read(_unidadNegocio))[OutParameter.CursorCuentaPta];
                if (cuentasPtas == null || cuentasPtas.ToList().Count.Equals(0))
                {
                    return(Ok(cuentasPtas));
                }

                /// 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();

                foreach (var cuentaPta in cuentasPtas)
                {
                    try
                    {
                        /// Envío de CuentaPTA a Salesforce
                        cuentaPta.UnidadNegocio = unidadNegocio.Descripcion;
                        cuentaPta.CodigoError   = cuentaPta.MensajeError = string.Empty;
                        var cuentaSf = cuentaPta.ToSalesforceEntity();
                        QuickLog(cuentaSf, "body_request.json", "CuentaPta");
                        var responseCuentaPta = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.CuentaPtaMethod, Method.POST, cuentaSf, true, token);
                        if (responseCuentaPta.StatusCode.Equals(HttpStatusCode.OK))
                        {
                            dynamic jsonReponse = (new JavaScriptSerializer()).DeserializeObject(responseCuentaPta.Content);
                            cuentaPta.CodigoError  = jsonReponse[OutParameter.SF_CodigoError];
                            cuentaPta.MensajeError = jsonReponse[OutParameter.SF_MensajeError];
                            cuentaPta.IdCuentaCrm  = jsonReponse[OutParameter.SF_IdCuenta];

                            /// Actualización de estado de Cuenta PTA hacia PTA
                            var updateResponse = _cuentaPtaRepository.Update(cuentaPta);
                            cuentaPta.Actualizados = int.Parse(updateResponse[OutParameter.IdActualizados].ToString());
                        }
                        else
                        {
                            cuentaPta.CodigoError = responseCuentaPta.StatusCode.ToString();
                        }
                    }
                    catch (Exception ex)
                    {
                        cuentaPta.CodigoError  = ApiResponseCode.ErrorCode;
                        cuentaPta.MensajeError = ex.Message;
                    }
                }
                return(Ok(new { CuentasPta = cuentasPtas }));
            }
            catch (Exception ex)
            {
                //cuentasPtas = null;
                error = ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    UnidadNegocio = unidadNegocio.Descripcion,
                    Error = error,
                    LegacySystems = cuentasPtas
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
Example #8
0
 public SentimentTests()
 {
     // add username / password
     _subject = new RestBase("", "", "http://api.theysay.io");
 }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <DetalleItinerarioNM> detItinerarioList         = null;
            List <RptaItinerarioSF>           ListRptaItinerarioSF_Fail = new List <RptaItinerarioSF>();
            RptaItinerarioSF _rptaItinerarioSF = null;

            object SFResponse = null;
            string error      = string.Empty;
            object objEnvio   = null;

            try
            {
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());

                /// I. Consulta de Detalle Itinerario NM
                detItinerarioList = (IEnumerable <DetalleItinerarioNM>)(_detalleItinerarioNMRepository.GetItinerarios())[OutParameter.CursorDetalleItinerarioNM];
                if (detItinerarioList == null || detItinerarioList.ToList().Count.Equals(0))
                {
                    return(Ok(false));
                }

                /// II. Obtiene Token y URL para envío a Salesforce
                var authSf    = RestBase.GetToken();
                var token     = authSf[OutParameter.SF_Token].ToString();
                var crmServer = authSf[OutParameter.SF_UrlAuth].ToString();

                /// III. Construímos lista para enviar a SF
                var detItinerarioNM_SF = new List <object>();
                foreach (var detItinerario in detItinerarioList)
                {
                    detItinerarioNM_SF.Add(detItinerario.ToSalesforceEntity());
                }

                try
                {
                    /// Envío de CuentaNM a Salesforce
                    objEnvio = new { listadatos = detItinerarioNM_SF };
                    QuickLog(objEnvio, "body_request.json", "DetalleItinerarioNM", previousClear: true); /// ♫ Trace

                    var responseDetItinerarioNM = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.DetItinerarioNMMethod, Method.POST, objEnvio, true, token);
                    if (responseDetItinerarioNM.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseDetItinerarioNM.Content);
                        QuickLog(jsonResponse, "body_response.json", "DetalleItinerarioNM", previousClear: true); /// ♫ Trace

                        SFResponse = jsonResponse["respuestas"];
                        foreach (var item in jsonResponse["respuestas"])
                        {
                            try
                            {
                                #region Deserialize
                                _rptaItinerarioSF = new RptaItinerarioSF();

                                _rptaItinerarioSF.CodigoError      = "OK";
                                _rptaItinerarioSF.MensajeError     = "TST";
                                _rptaItinerarioSF.idOportunidad_SF = "006R000000WAUr4IAH";
                                _rptaItinerarioSF.idItinerario_SF  = "006R000000WAUr4IAC";
                                _rptaItinerarioSF.Identificador_NM = "2";

                                _rptaItinerarioSF.CodigoError      = item[OutParameter.SF_Codigo];
                                _rptaItinerarioSF.MensajeError     = item[OutParameter.SF_Mensaje];
                                _rptaItinerarioSF.idOportunidad_SF = item[OutParameter.SF_IdOportunidad2];
                                _rptaItinerarioSF.idItinerario_SF  = item[OutParameter.SF_IdItinerario];
                                _rptaItinerarioSF.Identificador_NM = item[OutParameter.SF_IdentificadorNM];
                                #endregion

                                #region ReturnToDB
                                var updOperation = _detalleItinerarioNMRepository.Update(_rptaItinerarioSF);

                                if (Convert.IsDBNull(updOperation[OutParameter.IdActualizados]) == true || updOperation[OutParameter.IdActualizados].ToString().ToLower().Contains("null") || Convert.ToInt32(updOperation[OutParameter.IdActualizados].ToString()) <= 0)
                                {
                                    error = error + "Error en el Proceso de Actualizacion - No Actualizo Ningun Registro. Identificador NM : " + _rptaItinerarioSF.Identificador_NM.ToString() + "||||";
                                    ListRptaItinerarioSF_Fail.Add(_rptaItinerarioSF);
                                    /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/
                                }
                                #endregion
                            }
                            catch (Exception ex)
                            {
                                error = error + "Error en el Proceso de Actualizacion - Response SalesForce : " + ex.Message + "||||";
                                ListRptaItinerarioSF_Fail.Add(_rptaItinerarioSF);
                                /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/
                            }
                        }
                    }
                    else
                    {
                        error = responseDetItinerarioNM.StatusCode.ToString();
                        if (responseDetItinerarioNM != null && responseDetItinerarioNM.Content != null)
                        {
                            QuickLog(responseDetItinerarioNM.Content, "body_response.json", "DetalleItinerarioNM", previousClear: true); /// ♫ Trace
                        }
                    }
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }

                return(Ok(true));
            }
            catch (Exception ex)
            {
                error = error + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                if (objEnvio != null || SFResponse != null || ListRptaItinerarioSF_Fail != null || string.IsNullOrEmpty(error) == false)
                {
                    (new
                    {
                        Request = objEnvio,
                        Response = SFResponse,
                        Rpta_NoUpdate_Fail = ListRptaItinerarioSF_Fail,
                        Exception = error
                                    //LegacySystems = detItinerarioList
                    }).TryWriteLogObject(_logFileManager, _clientFeatures);
                }
            }
        }
Example #10
0
 public virtual WebQuery GetQueryFor(string url, RestBase request, IWebQueryInfo info, WebMethod method, bool enableTrace)
 {
     var query = GetQueryFor(url, request.Parameters, info, method, enableTrace);
     request.Method = method;
     return query;
 }
Example #11
0
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            /// ♫ Listas de Respuesta
            IEnumerable <AgenciaPnr> agenciasPnrs = null;
            IEnumerable <File>       files; IEnumerable <Boleto> boletos;
            string exceptionMsg = string.Empty;

            try
            {
                var _unidadNegocio = GetUnidadNegocio(unidadNegocio.Descripcion);
                RepositoryByBusiness(_unidadNegocio);
                _instants[InstantKey.Salesforce] = DateTime.Now;

                /// I. Consulta de PNRs a PTA
                agenciasPnrs = (IEnumerable <AgenciaPnr>)_fileRepository.GetNewAgenciaPnr()[OutParameter.CursorAgenciaPnr];
                if (agenciasPnrs == null || agenciasPnrs.ToList().Count.Equals(0))
                {
                    return(Ok(agenciasPnrs));
                }

                /// 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();

                /// Procesamos los Files y Boletos de cada Agencia PNR
                foreach (var agenciaPnr in agenciasPnrs)
                {
                    /// II. Completar PNR en Salesforce
                    agenciaPnr.UnidadNegocio = unidadNegocio.Descripcion;

                    agenciaPnr.CodigoError = agenciaPnr.MensajeError = string.Empty;
                    if (string.IsNullOrEmpty(agenciaPnr.IdOportunidad))
                    {
                        SendToSalesforce(agenciaPnr, token, crmServer);
                    }

                    /// III. Envío de Files, Boletos a Salesforce
                    if (!string.IsNullOrEmpty(agenciaPnr.IdOportunidad))
                    {
                        /// 1. Consulta Lista de Files, Lista de Boletos
                        var _operFileAndBoleto = _fileRepository.GetFileAndBoleto(agenciaPnr);

                        /// 2. Envío de Files
                        agenciaPnr.Files = files = (IEnumerable <File>)_operFileAndBoleto[OutParameter.CursorFile];
                        foreach (var file in files)
                        {
                            try
                            {
                                /// a. Envío a Salesforce
                                SendToSalesforce(file, token, crmServer);
                                if (EvaluateRetry(file))
                                {
                                    SendToSalesforce(file, token, crmServer);
                                }

                                /// b. Resultado a BD
                                var operFileUpdate = _fileRepository.UpdateFile(file);
                                file.Actualizados = int.Parse(operFileUpdate[OutParameter.IdActualizados].ToString());
                            }
                            catch
                            {
                            }
                        }

                        /// 3. Envío de Boletos
                        agenciaPnr.Boletos = boletos = (IEnumerable <Boleto>)_operFileAndBoleto[OutParameter.CursorBoleto];
                        foreach (var boleto in boletos)
                        {
                            try
                            {
                                /// a. Envío a Salesforce
                                SendToSalesforce(boleto, token, crmServer);
                                if (EvaluateRetry(boleto))
                                {
                                    SendToSalesforce(boleto, token, crmServer);
                                }

                                /// b. Resultado a BD
                                var operBoletoUpdate = _fileRepository.UpdateBoleto(boleto);
                                boleto.Actualizados = int.Parse(operBoletoUpdate[OutParameter.IdActualizados].ToString());
                            }
                            catch
                            {
                            }
                        }
                    }
                }
                return(Ok(new { AgenciasPnr = agenciasPnrs }));
            }
            catch (Exception ex)
            {
                exceptionMsg = ex.Message;
                agenciasPnrs = null;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    UnidadNegocio = unidadNegocio.Descripcion,
                    Exception = exceptionMsg,
                    LegacySystems = agenciasPnrs
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
Example #12
0
 public WebQuery GetQueryFor(string url, RestBase request, IWebQueryInfo info, WebMethod method, bool enableTrace)
 {
     return GetQueryForImpl(info, enableTrace);
 }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <ContactoPta> contactoPtaList = null;
            string exceptionMsg = string.Empty;

            try
            {
                var _unidadNegocio = GetUnidadNegocio(unidadNegocio.Descripcion);
                RepositoryByBusiness(_unidadNegocio);

                /// I. Consulta de Contactos a BD
                contactoPtaList = (IEnumerable <ContactoPta>)_contactoPtaRepository.GetContactos()[OutParameter.CursorContactoPta];
                if (contactoPtaList == null || contactoPtaList.ToList().Count.Equals(0))
                {
                    return(Ok(contactoPtaList));
                }

                /// Obtiene Token de envío a Salesforce
                var authSf    = RestBase.GetToken();
                var token     = authSf[OutParameter.SF_Token].ToString();
                var crmServer = authSf[OutParameter.SF_UrlAuth].ToString();

                /// Por cada Contacto...
                foreach (var contactoPta in contactoPtaList)
                {
                    {
                        try
                        {
                            /// Envío de Contacto a Salesforce
                            contactoPta.UnidadNegocio = unidadNegocio.Descripcion;
                            contactoPta.CodigoError   = contactoPta.MensajeError = string.Empty;

                            //var contactoPtaSf = ToSalesforceEntity(contactoPta);
                            var responseContactoPta = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.ContactoPtaMethod, Method.POST, contactoPta.ToSalesforceEntity(), true, token);
                            if (responseContactoPta.StatusCode.Equals(HttpStatusCode.OK))
                            {
                                dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseContactoPta.Content);
                                contactoPta.CodigoError   = jsonResponse[OutParameter.SF_CodigoError];
                                contactoPta.MensajeError  = jsonResponse[OutParameter.SF_MensajeError];
                                contactoPta.IdCuentaCrm   = jsonResponse[OutParameter.SF_IdCuenta];
                                contactoPta.IdContactoCrm = jsonResponse[OutParameter.SF_IdContacto];

                                /// Actualización de resultado de Salesforce de Contacto en BD
                                var updateResponse = _contactoPtaRepository.Update(contactoPta);
                                contactoPta.Actualizados = int.Parse(updateResponse[OutParameter.IdActualizados].ToString());
                            }
                        }
                        catch (Exception ex)
                        {
                            contactoPta.CodigoError  = ApiResponseCode.ErrorCode;
                            contactoPta.MensajeError = ex.Message;
                        }
                    }
                }
                return(Ok(new { Contactos = contactoPtaList }));
            }
            catch (Exception ex)
            {
                exceptionMsg = ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    UnidadNegocio = unidadNegocio.Descripcion,
                    Exception = exceptionMsg,
                    LegacySystems = contactoPtaList
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <PedidosProcesados> ListPedidosProcesados = null;
            string errorEnvio = string.Empty;
            object mResponse  = null;
            object objEnvio   = null;

            try {
                RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());

                /*Consulta de pedidos procesados a BD*/
                ListPedidosProcesados = (IEnumerable <PedidosProcesados>)_pedidoRepository.GetPedidosProcesados()[OutParameter.CursorPedidosProcesados];
                if (ListPedidosProcesados == null || ListPedidosProcesados.ToList().Count.Equals(0))
                {
                    return(Ok(false));
                }

                /*Obtiene Token de envío a Salesforce*/
                var authSf    = RestBase.GetToken();
                var token     = authSf[OutParameter.SF_Token].ToString();
                var crmServer = authSf[OutParameter.SF_UrlAuth].ToString();

                /*Por cada Pedido...*/
                var PedidosProcesadosSF = new List <object>();
                foreach (var pedidosProcesados in ListPedidosProcesados)
                {
                    PedidosProcesadosSF.Add(pedidosProcesados.ToSalesforceEntity());
                }

                try
                {
                    objEnvio = new { info = PedidosProcesadosSF };
                    /*Envío de pedidos procesados a Salesforce*/
                    var responsePedidosProcess = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.PedidosProcesadosMethod, Method.POST, objEnvio, true, token);
                    if (responsePedidosProcess.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responsePedidosProcess.Content);
                        mResponse = jsonResponse["Solicitudes"];
                        foreach (var pedidosProcesados in ListPedidosProcesados)
                        {
                            foreach (var jsResponse in jsonResponse["Solicitudes"])
                            {
                                if (pedidosProcesados.idSolicitudPago_SF == jsResponse[OutParameter.SF_IdSolicitudPago])
                                {
                                    /*Validamos Y Actualizamos en BD*/
                                    if (jsResponse[OutParameter.SF_Codigo] == "OK")
                                    {
                                        pedidosProcesados.estadoProcess = "1";
                                    }
                                    else
                                    {
                                        pedidosProcesados.estadoProcess = (string.IsNullOrEmpty(pedidosProcesados.estadoProcess) == false && pedidosProcesados.estadoProcess == "0" ? "2" : "0");
                                    }
                                    _pedidoRepository.Update_Pedido_Process(pedidosProcesados);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    errorEnvio = errorEnvio + ApiResponseCode.ErrorCode + " - " + ex.Message + " ||.";
                }
                return(Ok(true));
            }
            catch (Exception ex)
            {
                errorEnvio = errorEnvio + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    Request = ListPedidosProcesados,
                    Response = mResponse,
                    EnvioSF = objEnvio,
                    Exception = errorEnvio
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
Example #15
0
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <Cotizacion_DM> cotizaciones_DM = null;
            var exceptionMsg = string.Empty;

            try
            {
                ClearQuickLog("body_request.json", "Cotizacion");
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());
                cotizaciones_DM = (IEnumerable <Cotizacion_DM>)_cotizacionRepository_DM.GetCotizaciones()[OutParameter.CursorCotizacionDM];
                if (cotizaciones_DM == null || cotizaciones_DM.ToList().Count.Equals(0))
                {
                    return(Ok(cotizaciones_DM));
                }

                var cotizaciones_SF = new List <object>();
                foreach (var cotizacion in cotizaciones_DM)
                {
                    cotizaciones_SF.Add(cotizacion.ToSalesforceEntity());
                }

                /// 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();

                /// II. Enviar Oportunidad a Salesforce
                try
                {
                    var objEnvio = new { datos = cotizaciones_SF };
                    QuickLog(objEnvio, "body_request.json", "Cotizacion"); /// ♫ Trace
                    var responseOportunidad = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.CotizacionListMethod, Method.POST, objEnvio, true, token);
                    if (responseOportunidad.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseOportunidad.Content);
                        try
                        {
                            var responseList = jsonResponse["Cotizaciones"];            // Obtiene todo el json
                            QuickLog(responseList, "body_response.json", "Cotizacion"); /// ♫ Trace
                            foreach (var item in responseList)
                            {
                                try
                                {
                                    #region Deserialize
                                    var codigoRetorno   = (item["CODIGO_RETORNO"] ?? string.Empty).ToString();
                                    var mensajeRetorno  = (item["MENSAJE_RETORNO"] ?? string.Empty).ToString();
                                    var idCotizacionSf  = (item["ID_COTIZACION_SF"] ?? string.Empty).ToString();
                                    var idOportunidadSf = (item["ID_OPORTUNIDAD_SF"] ?? string.Empty).ToString();
                                    var idCotizacion    = (item["COTIZACION"] ?? string.Empty).ToString();

                                    var cotizacion = cotizaciones_DM.FirstOrDefault(c => c.IdOportunidadSf.Equals(idOportunidadSf));

                                    cotizacion.CodigoError    = codigoRetorno;
                                    cotizacion.MensajeError   = mensajeRetorno;
                                    cotizacion.IdCotizacionSf = idCotizacionSf;

                                    #region ReturnToDB
                                    _cotizacionRepository_DM.UpdateCotizacion(cotizacion);
                                    #endregion
                                }
                                catch (Exception)
                                {
                                    throw;
                                }

                                #endregion
                            }
                        }
                        catch
                        {
                        }
                    }
                    return(Ok(cotizaciones_DM));
                }
                catch (Exception ex)
                {
                    exceptionMsg = ex.Message;
                    return(InternalServerError(ex));
                }
                finally
                {
                    (new
                    {
                        UnidadNegocio = unidadNegocio.Descripcion,
                        Exception = exceptionMsg,
                        LegacySystems = cotizaciones_DM
                    }).TryWriteLogObject(_logFileManager, _clientFeatures);
                }
            }
            catch (Exception ex)
            {
                exceptionMsg = ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    Body = cotizaciones_DM,
                    Error = exceptionMsg
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
 public WebQuery GetQueryFor(string url, RestBase request, IWebQueryInfo info, WebMethod method, bool enableTrace)
 {
     return(GetQueryForImpl(info, enableTrace));
 }
Example #17
0
 public RateTests()
 {
     // Add usernmae / password
     _subject = new RestBase("", "", "http://api.theysay.io");
 }
Example #18
0
        public IHttpActionResult Send()
        {
            IEnumerable <FilesAsociadosSRV>  ListFilesAsociadosSRV        = null;
            List <FilesAsociadosSRVResponse> ListFileAsociadosSRVResponse = new List <FilesAsociadosSRVResponse>();
            List <Respuesta> ListRpta   = new List <Respuesta>();
            string           errorEnvio = string.Empty;


            try
            {
                RepositoryByBusiness(null);

                /*Consulta de files asociadiados a BD*/
                ListFilesAsociadosSRV = (IEnumerable <FilesAsociadosSRV>)_fileSrvRetailRepository.GetFilesAsociadosSRV()[OutParameter.CursorFilesAsociadosSRV];
                if (ListFilesAsociadosSRV == null || ListFilesAsociadosSRV.ToList().Count.Equals(0))
                {
                    return(Ok(false));
                }

                /*Obtiene Token de envío a Salesforce*/
                var authSf    = RestBase.GetToken();
                var token     = authSf[OutParameter.SF_Token].ToString();
                var crmServer = authSf[OutParameter.SF_UrlAuth].ToString();

                ///*Por cada file...*/
                //var FilesAsociadosSF = new List<object>();
                //foreach (var fileAsociado in ListFilesAsociadosSRV)
                //    FilesAsociadosSF.Add(fileAsociado.ToSalesforceEntity());

                //try
                //{
                //    var objEnvio = new { info = FilesAsociadosSF };
                //    /*Envío de files asociados a Salesforce*/
                //    var responseFilesAsociados = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.PedidosProcesadosMethod, Method.POST, objEnvio, true, token);
                //    if (responseFilesAsociados.StatusCode.Equals(HttpStatusCode.OK))
                //    {
                //        dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseFilesAsociados.Content);
                //        foreach (var fileAsociado in ListFilesAsociadosSRV)
                //        {
                //            foreach (var jsResponse in jsonResponse["Solicitudes"])
                //            {
                //                if (fileAsociado.file_id == jsResponse[OutParameter.SF_IdSolicitudPago])
                //                {
                //                    /*Validamos Y Actualizamos en BD*/

                //                }
                //            }
                //        }
                //    }
                //}
                //catch (Exception ex)
                //{
                //    errorEnvio = errorEnvio + ApiResponseCode.ErrorCode + " - " + ex.Message + " ||.";
                //}



                foreach (var fileAsociado in ListFilesAsociadosSRV)
                {
                    try
                    {
                        var responseFilesAsociados = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.OportunidadAsocMethod, Method.POST, fileAsociado.ToSalesforceEntity(), true, token);

                        if (responseFilesAsociados.StatusCode.Equals(HttpStatusCode.OK))
                        {
                            dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseFilesAsociados.Content);
                            FilesAsociadosSRVResponse FileAsociadosSRVResponse = new FilesAsociadosSRVResponse();
                            FileAsociadosSRVResponse.id_oportunidad_sf = jsonResponse[OutParameter.SF_IdOportunidad];
                            FileAsociadosSRVResponse.codigo_error      = jsonResponse[OutParameter.SF_CodigoError];
                            FileAsociadosSRVResponse.mensaje_error     = jsonResponse[OutParameter.SF_MensajeError];
                            ListFileAsociadosSRVResponse.Add(FileAsociadosSRVResponse);
                            /// Actualización de estado File Oportundad
                            var       operation = _fileSrvRetailRepository.Actualizar_EnvioCotRetail(FileAsociadosSRVResponse);
                            Respuesta Rpta      = new Respuesta();
                            Rpta.CodigoError      = operation[OutParameter.CodigoError].ToString();
                            Rpta.MensajeError     = operation[OutParameter.MensajeError].ToString();
                            Rpta.Numero_Afectados = operation[OutParameter.NumeroActualizados].ToString();
                            ListRpta.Add(Rpta);
                        }
                    }
                    catch (Exception ex)
                    {
                        errorEnvio = ex.Message;
                    }
                }

                return(Ok(ListFileAsociadosSRVResponse));
            }
            catch (Exception ex)
            {
                errorEnvio = errorEnvio + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    Request = ListFilesAsociadosSRV,
                    Response = ListFileAsociadosSRVResponse,
                    Rpta = ListRpta,
                    Exception = errorEnvio
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <InformacionPagoNM> informacionPagoNMs        = null;
            List <RptaInformacionPagoSF>    ListRptaInformacionPagoSF = null;
            List <InfoPagoNM>     lInfoPagoNM            = null;
            RptaInformacionPagoSF _rptaInformacionPagoSF = null;
            string  error        = string.Empty;
            object  objEnvio     = null;
            dynamic jsonResponse = null;

            try
            {
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());
                RepositoryByBusiness(_unidadNegocio);
                _instants[InstantKey.Salesforce] = DateTime.Now;

                /// I. Consulta de Informacion Pago NM
                informacionPagoNMs = (IEnumerable <InformacionPagoNM>)(_informacionPagoNMRepository.GetInformacionPago(_unidadNegocio))[OutParameter.CursorInformacionPagoNM];
                if (informacionPagoNMs == null || informacionPagoNMs.ToList().Count.Equals(0))
                {
                    return(Ok(informacionPagoNMs));
                }

                /// 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();

                //Armando estructura de objetos.
                InfoPagoNM oInfoPagoNM;



                var results = (from p in informacionPagoNMs
                               group p.idOportunidad_SF by p.idOportunidad_SF into g
                               select new { idOportunidad_SF = g.Key }).ToList();


                string idOportunidad_SF = string.Empty;
                int    index            = -1;
                if (results != null)
                {
                    int id_sucursal = 0;
                    int codigoweb   = 0;
                    int PaqueteId   = 0;
                    lInfoPagoNM = new List <InfoPagoNM>();
                    foreach (var item in results)
                    {
                        oInfoPagoNM = new InfoPagoNM();

                        index = informacionPagoNMs.ToList().FindIndex(x => x.idOportunidad_SF == item.idOportunidad_SF);
                        oInfoPagoNM.idOportunidad_SF = item.idOportunidad_SF;

                        oInfoPagoNM.Identificador_NM     = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).Identificador_NM;
                        oInfoPagoNM.IdInformacionPago_SF = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).IdInformacionPago_SF;

                        //Aqui Lista ListPago_Boleto_Servicios

                        oInfoPagoNM.ListPago_Boleto_Servicios = informacionPagoNMs.Where(x => x.idOportunidad_SF == item.idOportunidad_SF && !string.IsNullOrWhiteSpace(x.reservaID))
                                                                .Select(x => new PagoBoletoServicios
                        {
                            reservaID    = x.reservaID,
                            tipoServicio = x.tipoServicio,
                            tipoPasajero = x.tipoPasajero,
                            totalBoleto  = x.totalBoleto,
                            tarifaNeto   = x.tarifaNeto,
                            impuestos    = x.impuestos,
                            cargos       = x.cargos,
                            descripcion  = x.descripcion
                        }).ToList();


                        oInfoPagoNM.totalPagar               = oInfoPagoNM.ListPago_Boleto_Servicios.Sum(x => x.totalBoleto);
                        oInfoPagoNM.montoDescuento           = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).montodescuento;
                        oInfoPagoNM.textoDescuento           = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).textodescuento;
                        oInfoPagoNM.promoWebCode             = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).promowebcode;
                        oInfoPagoNM.totalFacturar            = oInfoPagoNM.totalPagar - oInfoPagoNM.montoDescuento;
                        oInfoPagoNM.feeAsumidoGeneralBoletos = informacionPagoNMs.Where(x => x.idOportunidad_SF == item.idOportunidad_SF).Sum(x => x.feeAsumidoGeneralBoletos);
                        ////Aqui Lista ListPagosDesglose_Paquete


                        if (!string.IsNullOrWhiteSpace(informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).PaqueteId))
                        {
                            oInfoPagoNM.ListPagosDesglose_Paquete = new List <PagosDesglosePaquete>();
                            oInfoPagoNM.ListPagosDesglose_Paquete.Add(new PagosDesglosePaquete
                            {
                                precioTotalPorHabitacionPaq = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF && !string.IsNullOrWhiteSpace(x.PaqueteId)).precioTotalPorHabitacionPaq,
                                ListPorHabitacionPaq        = informacionPagoNMs.Where(y => y.idOportunidad_SF == item.idOportunidad_SF && !string.IsNullOrWhiteSpace(y.PaqueteId))
                                                              .Select(y => new PorHabitacion_Paq
                                {
                                    numHabitacionPaquete = y.numHabitacionPaquete,
                                    tipoPasajeroPaq      = y.tipoPasajeroPaq,
                                    cantidadPasajeroPaq  = y.cantidadPasajeroPaq,
                                    monedaPaq            = y.monedaPaq,
                                    precioUnitarioPaq    = y.precioUnitarioPaq,
                                    totalUnitarioPaq     = y.totalUnitarioPaq
                                }).ToList()
                            });
                        }


                        oInfoPagoNM.precioTotalHabitacionesPaq = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).precioTotalHabitacionesPaq;
                        oInfoPagoNM.gastosAdministrativosPaq   = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).gastosAdministrativosPaq;
                        oInfoPagoNM.tarjetaDeTurismo           = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).tarjetaDeTurismo;
                        oInfoPagoNM.tarjetaDeAsistencia        = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).tarjetaDeAsistencia;

                        ////Aqui Lista ListPagosServicio_Paquete =>GetListPagosServicio

                        if (!string.IsNullOrWhiteSpace(informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).PaqueteId))
                        {
                            int.TryParse(informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).PaqueteId, out PaqueteId);
                            int.TryParse(informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).Id_Sucursal, out id_sucursal);
                            int.TryParse(informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).Codigoweb, out codigoweb);
                            string paq_reserva_tipo = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).paq_reserva_tipo;
                            oInfoPagoNM.ListPagosServicio_Paquete = ((IEnumerable <PagosServicioPaquete>)(_informacionPagoNMRepository.GetListPagosServicio(codigoweb, PaqueteId, id_sucursal, paq_reserva_tipo))[OutParameter.CursorInformacionPagoNM]).ToList();
                        }

                        if (oInfoPagoNM.ListPagosServicio_Paquete != null && oInfoPagoNM.ListPagosServicio_Paquete.Count > 0)
                        {
                            oInfoPagoNM.precioTotalActividadesPaq = oInfoPagoNM.ListPagosServicio_Paquete.Sum(x => x.precioServ);
                        }
                        oInfoPagoNM.precioTotalPagarPaq = oInfoPagoNM.precioTotalHabitacionesPaq + oInfoPagoNM.gastosAdministrativosPaq + oInfoPagoNM.precioTotalActividadesPaq;
                        oInfoPagoNM.montoDescuentoPaq   = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).montoDescuentoPaq;
                        oInfoPagoNM.totalFacturarPaq    = oInfoPagoNM.precioTotalPagarPaq + oInfoPagoNM.montoDescuentoPaq;
                        oInfoPagoNM.textoDescuentoPaq   = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).textoDescuentoPaq;


                        oInfoPagoNM.cantDiasSeg       = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).cantDiasSeg;
                        oInfoPagoNM.precioUnitarioSeg = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).precioUnitarioSeg;
                        oInfoPagoNM.MontoSeg          = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).MontoSeg;
                        oInfoPagoNM.DescuentoSeg      = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).DescuentoSeg;
                        oInfoPagoNM.MontoReservaSeg   = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).MontoReservaSeg;
                        oInfoPagoNM.accion_SF         = informacionPagoNMs.First(x => x.idOportunidad_SF == item.idOportunidad_SF).accion_SF;
                        lInfoPagoNM.Add(oInfoPagoNM);
                    }
                }

                var informacionPagoNMSF = new List <object>();
                foreach (var itemlInfoPagoNM in lInfoPagoNM)
                {
                    informacionPagoNMSF.Add(itemlInfoPagoNM.ToSalesforceEntity());
                }

                try
                {
                    /// Envío de Informacion de Pago a Salesforce
                    ClearQuickLog("body_request.json", "InformacionPagoNM");      /// ♫ Trace
                    objEnvio = new { datos = informacionPagoNMSF };
                    QuickLog(objEnvio, "body_request.json", "InformacionPagoNM"); /// ♫ Trace


                    var responseInformacionPagoNM = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.InformacionPagoNMMethod, Method.POST, objEnvio, true, token);
                    if (responseInformacionPagoNM.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        jsonResponse = (new JavaScriptSerializer()).DeserializeObject(responseInformacionPagoNM.Content);
                        QuickLog(jsonResponse, "body_response.json", "InformacionPagoNM"); /// ♫ Trace
                        string[] codigoServicio = null;
                        string   oportunidad    = string.Empty;
                        ListRptaInformacionPagoSF = new List <RptaInformacionPagoSF>();

                        foreach (var jsResponse in jsonResponse["respuestas"])
                        {
                            oportunidad = jsResponse[OutParameter.SF_IdOportunidad3];

                            codigoServicio         = jsResponse[OutParameter.SF_IdentificadorNM].Split('-');
                            _rptaInformacionPagoSF = new RptaInformacionPagoSF();

                            _rptaInformacionPagoSF.CodigoError      = jsResponse[OutParameter.SF_Codigo];
                            _rptaInformacionPagoSF.MensajeError     = jsResponse[OutParameter.SF_Mensaje];
                            _rptaInformacionPagoSF.idOportunidad_SF = jsResponse[OutParameter.SF_IdOportunidad3];
                            _rptaInformacionPagoSF.IdInfoPago_SF    = jsResponse[OutParameter.SF_IdInformacionPago2];
                            if (_rptaInformacionPagoSF.CodigoError != "ER" && codigoServicio.Count() > 0)
                            {
                                _rptaInformacionPagoSF.CodigoServicio_NM = codigoServicio[0].ToString();
                                _rptaInformacionPagoSF.Identificador_NM  = codigoServicio[1].ToString();
                            }

                            var updOperation = _informacionPagoNMRepository.Update(_rptaInformacionPagoSF);

                            if (Convert.IsDBNull(updOperation[OutParameter.IdActualizados]) == true || updOperation[OutParameter.IdActualizados].ToString().ToLower().Contains("null") || Convert.ToInt32(updOperation[OutParameter.IdActualizados].ToString()) <= 0)
                            {
                                error = error + "Error en el Proceso de Actualizacion - No Actualizo Ningun Registro. Identificador NM : " + _rptaInformacionPagoSF.Identificador_NM.ToString() + "||||";
                                ListRptaInformacionPagoSF.Add(_rptaInformacionPagoSF);
                            }
                        }
                    }
                    else
                    {
                        jsonResponse = (new JavaScriptSerializer()).DeserializeObject(responseInformacionPagoNM.Content);
                        QuickLog(jsonResponse, "body_response.json", "InformacionPagoNM"); /// ♫ Trace
                        error = responseInformacionPagoNM.StatusCode.ToString();
                    }
                }
                catch (Exception ex)
                {
                    error = error + "Error en el Proceso de Actualizacion - Response SalesForce : " + ex.Message + "||||";
                    ListRptaInformacionPagoSF.Add(_rptaInformacionPagoSF);
                }
                return(Ok(true));
            }
            catch (Exception ex)
            {
                error = error + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                if (objEnvio != null || jsonResponse != null || ListRptaInformacionPagoSF != null || string.IsNullOrEmpty(error) == false)
                {
                    (new
                    {
                        Request = objEnvio,
                        Response = jsonResponse,
                        Rpta_NoUpdate_Fail = ListRptaInformacionPagoSF,
                        Exception = error
                                    //LegacySystems = lInfoPagoNM
                    }).TryWriteLogObject(_logFileManager, _clientFeatures);
                }
            }
        }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <SolicitudPagoNM> solicitudPagoNMs             = null;
            List <RptaSolicitudPagoSF>    ListRptaSolicitudPagoSF_Fail = null;
            RptaSolicitudPagoSF           _rptaSolicitudPagoSF         = null;

            object SFResponse = null;
            string error      = string.Empty;
            object objEnvio   = null;

            try
            {
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());

                /// I. Consulta de Solicitud Pago NM
                solicitudPagoNMs = (IEnumerable <SolicitudPagoNM>)(_solicitudPagoNMRepository.GetSolicitudesPago())[OutParameter.CursorSolicitudPagoNM];
                if (solicitudPagoNMs == null || solicitudPagoNMs.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 hotel para envio a Salesforce
                var solicitudPagoNMSF = new List <object>();
                foreach (var solicitudPago in solicitudPagoNMs)
                {
                    solicitudPagoNMSF.Add(solicitudPago.ToSalesforceEntity());
                }

                try
                {
                    /// Envío de CuentaNM a Salesforce
                    objEnvio = new { ListdatosSolicitudPago = solicitudPagoNMSF };
                    QuickLog(objEnvio, "body_request.json", "SolicitudPagoNM", previousClear: true); /// ♫ Trace

                    var responseSolicitudPagoNM = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.SolicitudPagoNMMethod, Method.POST, objEnvio, true, token);
                    if (responseSolicitudPagoNM.StatusCode.Equals(HttpStatusCode.OK))
                    {
                        dynamic jsonResponse = (new JavaScriptSerializer()).DeserializeObject(responseSolicitudPagoNM.Content);
                        SFResponse = jsonResponse["respuestas"];
                        QuickLog(SFResponse, "body_response.json", "SolicitudPagoNM", previousClear: true); /// ♫ Trace
                        ListRptaSolicitudPagoSF_Fail = new List <RptaSolicitudPagoSF>();

                        foreach (var solicitudPagoNM in jsonResponse["respuestas"])
                        {
                            try
                            {
                                #region Deserialize
                                _rptaSolicitudPagoSF = new RptaSolicitudPagoSF();

                                _rptaSolicitudPagoSF.CodigoError           = solicitudPagoNM[OutParameter.SF_Codigo];
                                _rptaSolicitudPagoSF.MensajeError          = solicitudPagoNM[OutParameter.SF_Mensaje];
                                _rptaSolicitudPagoSF.idOportunidad_SF      = solicitudPagoNM[OutParameter.SF_IdOportunidad2];
                                _rptaSolicitudPagoSF.IdRegSolicitudPago_SF = solicitudPagoNM[OutParameter.SF_IdRegSolicitudPago];
                                _rptaSolicitudPagoSF.Identificador_NM      = solicitudPagoNM[OutParameter.SF_IdentificadorNM];
                                #endregion

                                #region ReturnToDB
                                var updOperation = _solicitudPagoNMRepository.Update(_rptaSolicitudPagoSF);

                                if (Convert.IsDBNull(updOperation[OutParameter.IdActualizados]) == true || updOperation[OutParameter.IdActualizados].ToString().ToLower().Contains("null") || Convert.ToInt32(updOperation[OutParameter.IdActualizados].ToString()) <= 0)
                                {
                                    error = error + "Error en el Proceso de Actualizacion - No Actualizo Ningun Registro. Identificador NM : " + _rptaSolicitudPagoSF.Identificador_NM.ToString() + "||||";
                                    ListRptaSolicitudPagoSF_Fail.Add(_rptaSolicitudPagoSF);
                                    /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/
                                }

                                #endregion
                            }
                            catch (Exception ex)
                            {
                                error = error + "Error en el Proceso de Actualizacion - Response SalesForce : " + ex.Message + "||||";
                                ListRptaSolicitudPagoSF_Fail.Add(_rptaSolicitudPagoSF);
                                /*Analizar si se deberia grabar en una tabla de bd para posteriormente darle seguimiento*/
                            }
                        }
                    }
                    else
                    {
                        QuickLog(SFResponse, "body_response.json", "SolicitudPagoNM", previousClear: true); /// ♫ Trace
                        error = responseSolicitudPagoNM.StatusCode.ToString();
                    }
                }
                catch (Exception ex)
                {
                    error = ex.Message;
                }

                return(Ok(true));
            }
            catch (Exception ex)
            {
                error = error + " / " + ex.Message;
                return(InternalServerError(ex));
            }
            finally
            {
                if (objEnvio != null || SFResponse != null || ListRptaSolicitudPagoSF_Fail != null || string.IsNullOrEmpty(error) == false)
                {
                    (new
                    {
                        Request = objEnvio,
                        Response = SFResponse,
                        Rpta_NoUpdate_Fail = ListRptaSolicitudPagoSF_Fail,
                        Exception = error
                                    //LegacySystems = solicitudPagoNMs
                    }).TryWriteLogObject(_logFileManager, _clientFeatures);
                }
            }
        }
        public IHttpActionResult Send(UnidadNegocio unidadNegocio)
        {
            IEnumerable <Oportunidad> oportunidades = null;
            string exceptionMsg = string.Empty;

            try
            {
                ClearQuickLog("body_request.json", "Oportunidad");  /// ♫ Trace
                ClearQuickLog("body_response.json", "Oportunidad"); /// ♫ Trace
                var _unidadNegocio = RepositoryByBusiness(unidadNegocio.Descripcion.ToUnidadNegocio());

                /// I. Consulta de Oportunidades
                oportunidades = (IEnumerable <Oportunidad>)_oportunidadRepository.GetOportunidades()[OutParameter.CursorOportunidad];
                if (oportunidades == null || oportunidades.ToList().Count.Equals(0))
                {
                    return(Ok(oportunidades));
                }

                /// 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();

                foreach (var oportunidad in oportunidades)
                {
                    /// II. Enviar Oportunidad a Salesforce
                    try
                    {
                        oportunidad.CodigoError = oportunidad.MensajeError = string.Empty;

                        var oportunidad_SF = oportunidad.ToSalesforceEntity();
                        QuickLog(oportunidad_SF, "body_request.json", "Oportunidad", true); /// ♫ Trace
                        var responseOportunidad = RestBase.ExecuteByKeyWithServer(crmServer, SalesforceKeys.OportunidadMethod, Method.POST, oportunidad_SF, true, token);
                        if (responseOportunidad.StatusCode.Equals(HttpStatusCode.OK))
                        {
                            dynamic jsonResponse = new JavaScriptSerializer().DeserializeObject(responseOportunidad.Content);
                            QuickLog(jsonResponse, "body_response.json", "Oportunidad", true); /// ♫ Trace
                            try
                            {
                                oportunidad.CodigoError  = jsonResponse[OutParameter.SF_CodigoError];
                                oportunidad.MensajeError = jsonResponse[OutParameter.SF_MensajeError];
                                if (string.IsNullOrEmpty(oportunidad.IdOportunidad))
                                {
                                    oportunidad.IdOportunidad = jsonResponse[OutParameter.SF_IdOportunidad];
                                }
                            }
                            catch
                            {
                            }

                            try
                            {
                                /// Actualización de estado de Oportunidad a PTA
                                var updateResponse = _oportunidadRepository.Update(oportunidad);
                                oportunidad.Actualizados = int.Parse(updateResponse[OutParameter.IdActualizados].ToString());
                            }
                            catch
                            {
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        exceptionMsg             = ex.Message;
                        oportunidad.CodigoError  = ApiResponseCode.ErrorCode;
                        oportunidad.MensajeError = ex.Message;
                    }
                }

                return(Ok(oportunidades));
            }
            catch (Exception ex)
            {
                oportunidades = null;
                return(InternalServerError(ex));
            }
            finally
            {
                (new
                {
                    UnidadNegocio = unidadNegocio.Descripcion,
                    Exception = exceptionMsg,
                    LegacySystems = oportunidades
                }).TryWriteLogObject(_logFileManager, _clientFeatures);
            }
        }