public IActionResult AltaPromociones(Cliente cliente)
        {
            Token                    responseToken;
            Response                 response       = new Response();
            gestionarToken           token          = new gestionarToken();
            gestionarAltaPromociones alta           = new gestionarAltaPromociones();
            postCardAssignCatalog    postCardAssign = new postCardAssignCatalog();
            string                   prueba         = string.Empty;
            int    altaPendiente        = 0;
            string ReturnCodePendientes = string.Empty;

            try
            {
                var builder       = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
                var configuration = builder.Build();

                ReturnCodePendientes = configuration["ReturnCodePendientes"];
                string[] returnCodesPendientes = ReturnCodePendientes.Split(',');

                prueba = configuration["prueba"];

                if (prueba == "S")
                {
                    return(StatusCode(200, "Alta exitosa"));
                }

                Root ro = new Root();
                ro.catalog   = cliente.Catalog;
                ro.companyId = cliente.CompanyId;
                List <Item> item = new List <Item>()
                {
                    new Item {
                        operation  = "I",
                        id         = cliente.CardId,
                        customer   = cliente.CustomerId,
                        amount     = cliente.Amount,
                        name       = cliente.NombreCliente,
                        surname    = cliente.ApellidoCliente,
                        idType     = cliente.TipoIdentificacion,
                        identifier = cliente.Identificacion
                    }
                };
                ro.items = item;
                List <Params> parameters = new List <Params>()
                {
                    new Params {
                        cardType = cliente.CardTye,
                        contract = cliente.Contract
                    }
                };
                ro.@params = parameters;

                var jsonString = JsonConvert.SerializeObject(ro);

                Logger.LoggerMessage("Promociones API: " + jsonString);
                responseToken = token.obtenerToken();

                if (responseToken.AccessToken != null)
                {
                    response = alta.altaPromociones(ro, responseToken);
                    if (response != null && (returnCodesPendientes.Contains(response.StatusCode.ToString())))
                    {
                        altaPendiente = postCardAssign.grabarAltaPendiete(ro, jsonString);
                        switch (altaPendiente)
                        {
                        case 1:
                            response.Detail.Detail = response.Detail.Detail + " - El alta ha quedado en pendiente en Promociones";
                            break;

                        case 2:
                            response.Detail.Detail = response.Detail.Detail + " - Existe un alta pendiente para ejecutar en Promociones para el documento " + ro.items[0].identifier;
                            break;

                        default:
                            break;
                        }
                        Logger.LoggerMessage("Promociones API: " + response.StatusCode + " - " + response.Detail.Detail);
                        return(StatusCode(202, response.StatusCode + " - " + response.Detail.Detail));
                    }
                    else
                    {
                        Logger.LoggerMessage("Promociones API: " + response.StatusCode + " - " + response.Detail.Detail);
                        return(StatusCode(response.StatusCode, response.Detail.Detail));
                    }
                }
                else
                {
                    altaPendiente = postCardAssign.grabarAltaPendiete(ro, jsonString);

                    switch (altaPendiente)
                    {
                    case 1:
                        response.Detail.Detail = response.Detail.Detail + " - El alta ha quedado en pendiente en Promociones";
                        break;

                    case 2:
                        response.Detail.Detail = response.Detail.Detail + " - Existe un alta pendiente para ejecutar en Promociones para el documento " + ro.items[0].identifier;
                        break;

                    default:
                        break;
                    }
                    Logger.LoggerMessage("Promociones API: " + response.StatusCode + " - " + response.Detail.Detail);
                    return(StatusCode(202, "Error al obtener Token - " + response.Detail.Detail));
                }
            }
            catch (Exception ex)
            {
                Logger.LoggerMessage("Promociones API: 480 - Excepcion no controlada: " + ex.Message.ToString() + " - " + ex.InnerException.ToString());
                return(StatusCode(480, "Promociones API: Excepcion no controlada: " + ex.Message.ToString() + " - " + ex.InnerException.ToString()));
            }
        }
        public IActionResult EjecutarAltaPendientes()
        {
            List <Pendientes>       listPendientes = new List <Pendientes>();
            ejecutarAltasPendientes pendientes     = new ejecutarAltasPendientes();

            var    builder         = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
            var    configuration   = builder.Build();
            string AltaPromociones = string.Empty;
            postCardAssignCatalog postCardAssign;
            Response responseContent;
            Token    responseToken;
            int      pendientesEjecutadas = 0;

            try
            {
                AltaPromociones = configuration["AltaPromociones"];
                postCardAssign  = new postCardAssignCatalog();
                gestionarToken token = new gestionarToken();

                listPendientes = pendientes.ObtenerAltasPendientes();
                responseToken  = token.obtenerToken();

                if (responseToken.AccessToken != null)
                {
                    foreach (Pendientes pend in listPendientes)
                    {
                        var data = new StringContent(pend.json, Encoding.UTF8, "application/json");

                        Logger.LoggerMessage("Promociones API (pendientes): " + pend.json);
                        responseContent = SyncHelper.RunSync <Response>(() => postCardAssign.postCardAssingCatalogAsync(data, AltaPromociones, responseToken));

                        if (responseContent != null && responseContent.StatusCode == 200)
                        {
                            pendientes.ActualizarEjecucionPendiente(pend);
                            pendientesEjecutadas += 1;
                        }
                    }

                    if (listPendientes.Count == 0)
                    {
                        Logger.LoggerMessage("Promociones API (pendientes): 200 - No se encontraron altas pendientes de ejecutar");
                        return(StatusCode(200, "No se encontraron altas pendientes de ejecutar"));
                    }
                    else if (pendientesEjecutadas == listPendientes.Count)
                    {
                        Logger.LoggerMessage("Promociones API (pendientes): 200 - Se ejecutaron " + pendientesEjecutadas + " altas pendientes de un total de " + listPendientes.Count);
                        return(StatusCode(200, "200 - Se ejecutaron " + pendientesEjecutadas + " altas pendientes de un total de " + listPendientes.Count));
                    }
                    else
                    {
                        Logger.LoggerMessage("Promociones API (pendientes): 202 - Se ejecutaron " + pendientesEjecutadas + " altas pendientes de un total de " + listPendientes.Count);
                        return(StatusCode(202, "202 - Se ejecutaron " + pendientesEjecutadas + " altas pendientes de un total de " + listPendientes.Count));
                    }
                }
                else
                {
                    Logger.LoggerMessage("Promociones API (pendientes): 401 - Error al obtener Token.");
                    return(StatusCode(401, "Error al obtener Token."));
                }
            }
            catch (Exception ex)
            {
                Logger.LoggerMessage("Promociones API (pendientes): 480 - Excepcion no controlada: " + ex.Message.ToString() + " - " + ex.InnerException.ToString());
                return(StatusCode(480, "Excepcion no controlada: " + ex.Message.ToString() + " - " + ex.InnerException.ToString()));
            }
        }