public async Task <ActionResult> Creditar(string id, int qtd) { var repMongo = new Repository.MongoRep("", _settings, ""); var credito = new Models.CreditoMetricas() { UserId = id, Qtd = qtd, DataCredito = DateTime.Now, Debito = 0, DataValidade = DateTime.Now.AddMonths(1), DataCriacao = DateTime.Now }; await repMongo.GravarOne <Models.CreditoMetricas>(credito); return(RedirectToAction("Agencias")); }
public async Task <bool> GetPayment(string pagamentoId) { try { Wirecard.WirecardClient WC = null; WC = await SetAmbiente(WC); var _id = new ObjectId(pagamentoId); var repMongo = new Repository.MongoRep("", _settings, ""); var lstPagamentos = await repMongo.ListarById <Models.DTO.PagamentoPage>(_id); if (lstPagamentos != null) { var userId = lstPagamentos.FirstOrDefault().UsuarioId; var _pagamentoAtual = lstPagamentos.FirstOrDefault().Obj; var _pagamentoAtualContractual = lstPagamentos.FirstOrDefault(); if (_pagamentoAtual.paymentResponse != null) { #region Pagamentos Comuns var result = await WC.Payment.Consult(_pagamentoAtual.paymentResponse.Id); if (result.Status != _pagamentoAtual.paymentResponse.Status) { _pagamentoAtual.paymentResponse.Status = result.Status; if (_pagamentoAtual.StatusPagamento == "Pendente" && result.Status == "AUTHORIZED")//Pago { _pagamentoAtual.StatusPagamento = "Pago"; } //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); if (_pagamentoAtual.StatusPagamento == "Pago") { //Inserir credito se for authorizado o pagamento var credito = new Models.CreditoMetricas() { UserId = userId, Qtd = _pagamentoAtual.Quantidade, DataCredito = DateTime.Now, Debito = 0, DataValidade = DateTime.Now.AddMonths(1), DataCriacao = DateTime.Now }; await repMongo.GravarOne <Models.CreditoMetricas>(credito); } } if (result.Status == "CANCELLED" && _pagamentoAtual.StatusPagamento == "Pendente") { _pagamentoAtual.StatusPagamento = "Cancelado"; //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); } if (result.Status == "REFUNDED" && _pagamentoAtual.StatusPagamento == "Pendente") { _pagamentoAtual.StatusPagamento = "Cancelado"; //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); } if (result.Status == "REFUNDED" && _pagamentoAtual.StatusPagamento == "Pago") { _pagamentoAtual.StatusPagamento = "Cancelado"; //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); } #endregion } else { if (_pagamentoAtual.subscriptionResponse != null) { #region Invoices var lstResult = await WC.Signature.ListSignatureInvoices(_pagamentoAtual.subscriptionResponse.Code); foreach (var result in lstResult.Invoices) { if (_pagamentoAtual.Invoices == null) { _pagamentoAtual.Invoices = new List <Invoice>(); } var _invoice = _pagamentoAtual.Invoices.Where(w => w.Id == result.Id).FirstOrDefault(); if (_invoice == null) { _pagamentoAtual.Invoices.Add(result); _invoice = result; } if (result.Status.Code == 3)//Pago { _pagamentoAtual.StatusPagamento = "Pago"; _pagamentoAtual.NextInvoice = DateTime.Now.AddMonths(1); //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); //Inserir credito se for authorizado o pagamento var credito = new Models.CreditoMetricas() { UserId = userId, Qtd = _pagamentoAtual.Quantidade, DataCredito = DateTime.Now, Debito = 0, DataValidade = _pagamentoAtual.codPlan.Contains("year")? DateTime.Now.AddMonths(12) :DateTime.Now.AddMonths(1), DataCriacao = DateTime.Now }; await repMongo.GravarOne <Models.CreditoMetricas>(credito); //Email de pagamento var usuarioId = await repMongo.FindFilter <Models.Usuario>("Obj.UserId", _pagamentoAtual.Usuario.UserId); var envio = SenderEmail.Pagamento(_pagamentoAtual.Usuario.Email, usuarioId._id.ToString()); } if (_invoice.Status != result.Status) { if (result.Status.Code == 4)//Problemas no pagto { _pagamentoAtual.StatusPagamento = "Problemas"; //Mudar Status await repMongo.AlterarStatusPagamento(new ContractClass <Models.DTO.PagamentoPage>() { _id = _id, Obj = _pagamentoAtual }); } } } _pagamentoAtualContractual.Obj = _pagamentoAtual; await repMongo.AlterarInvoices(_pagamentoAtualContractual); #endregion } } } return(true); } catch (Exception ex) { return(false); } }