예제 #1
0
        public string GravaAssinaturaApi(CreateSubscriptionRequest assinaturaApi)
        {
            // Secret key fornecida pela Mundipagg
            var basicAuthUserName = SistemaSingleton.Instancia.TokenApi;

            // Senha em branco. Passando apenas a secret key
            var basicAuthPassword = "";

            var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);

            var response = client.Subscriptions.CreateSubscription(assinaturaApi);

            assinaturaDal.AssinaturaGravadaNaApiAtualizaBanco(assinaturaApi.Metadata["id"], response.Id);

            assinaturaDal.GravaIdApiListaItens(response.Items, assinaturaApi.Metadata["id"]);

            var clienteDal = new ClienteDal();
            var codCliente = clienteDal.GetClienteByAssinatura(assinaturaApi.Metadata["id"]);

            clienteDal.ClienteGravado(codCliente, response.Customer.Id);

            var cartaoDal = new CartaoDal();
            var codCard   = cartaoDal.getCardByIdAssinatura(assinaturaApi.Metadata["id"]);

            cartaoDal.CartaoGravadoNaApiAtualizaBanco(codCard, response.Card.Id);

            return(response.Id);
        }
예제 #2
0
        /// <summary>
        /// Busca as assinatura pelo id d tabela
        /// </summary>
        /// <param name="_id">id da tabela rec_assinatura</param>
        /// <returns>Model assinaturaDb com os itens populados</returns>
        public AssinaturaDb GetAssinaturaDb(string _id)
        {
            const string metodo = "GetAssinaturaDb";

            var clienteDal       = new ClienteDal();
            var meioPagamentoDal = new CartaoDal();
            var assinatura       = new AssinaturaDb();

            try
            {
                var sql = new StringBuilder();

                sql.Append(" select a.id, a.dt_inicio, a.intervalo, a.intervalo_quantidade, ");
                sql.Append(" a.dia_cobranca, a.quant_parcelas, a.texto_fatura, a.valor_minimo, a.status, ");
                sql.Append(" a.id_cliente, a.id_cartao, a.id_api ");
                sql.Append(" from rec_assinatura a ");
                sql.Append(" where a.id = @id ");

                using (var conn = ConexaoBd.GetConnection())
                {
                    using (var cmd = new SqlCommand(sql.ToString(), conn))
                    {
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@id", _id);

                        using (var dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                assinatura.Id                   = Convert.ToInt32(dr["id"]);
                                assinatura.Dt_Inicio            = dr.GetDateTime(dr.GetOrdinal("dt_inicio"));
                                assinatura.Intervalo            = dr["intervalo"].ToString();
                                assinatura.Intervalo_Quantidade = Convert.ToInt32(dr["intervalo_quantidade"]);
                                assinatura.Dia_Cobranca         = Convert.ToInt32(dr["dia_cobranca"]);
                                assinatura.Quant_Parcelas       = Convert.ToInt32(dr["quant_parcelas"]);
                                assinatura.Texto_Fatura         = dr["texto_fatura"].ToString();
                                assinatura.Valor_Minimo         = Convert.ToDouble(dr["valor_minimo"]);
                                assinatura.Status               = dr["status"].ToString();
                                assinatura.Cliente              = clienteDal.GetClienteDb(dr["id_cliente"].ToString());
                                assinatura.MeioPagamento        = meioPagamentoDal.GetCartaoDb(dr["id_cartao"].ToString());
                                assinatura.Id_Api               = dr["id_api"].ToString();

                                // popular o model com os itens da assinatura . Pode colocar aqui ou em um método privado
                                assinatura.ItensAssinatura = GetItensAssinatura(assinatura.Id);
                            }
                        }
                    }
                }

                return(assinatura);;
            }
            catch (SqlException sqlException)
            {
                string strMensagem = "";
                strMensagem = LogDatabaseErrorUtil.CreateErrorDatabaseMessage(sqlException);
                LogDatabaseErrorUtil.LogFileWrite(strMensagem, metodo);

                sqlException.Data["MensagemCustomizada"] = LogDatabaseErrorUtil.ValidateDataBaseErrorNumber(sqlException.Number);
                sqlException.Data["Metodo"] = metodo;
                sqlException.Data["Classe"] = Camada;
                sqlException.Data["Hora"]   = DateTime.Now;

                throw;
            }
            catch (Exception ex)
            {
                string strMensagem = "";

                strMensagem = LogDatabaseErrorUtil.CreateErrorMessage(ex);
                LogDatabaseErrorUtil.LogFileWrite(strMensagem, metodo);

                ex.Data["MensagemCustomizada"] = "Ocorreu um erro ao tentar executar a operação.";
                ex.Data["Metodo"] = metodo;
                ex.Data["Classe"] = Camada;
                ex.Data["Hora"]   = DateTime.Now;

                throw;
            }
        }