public async Task <IActionResult> PayInvoice([FromBody] PayInvoiceRequestViewModel payInvoiceRequestViewModel) { try { await _invoiceRepository.PayInvoice(payInvoiceRequestViewModel.InvoiceId, payInvoiceRequestViewModel.Value); } catch (Exception) { return(Conflict(new ErrorResponseViewModel { Id = (int)ErrorResponseIds.InvalidValue, Message = "InvalidValue" })); } return(Ok(true)); }
public async Task <ActionResult> PayInvoice(PayInvoiceRequestViewModel payInvoiceRequestViewModel) { try { var userId = User.Claims.Where(x => x.Type.Contains("primarysid")).Select(x => x).First().Value; await _userService.ModifyBalance(new UpdateBalanceRequestViewModel() { Id = userId, Value = -payInvoiceRequestViewModel.Value }); switch (payInvoiceRequestViewModel.Provider) { case PaymentUserType.InternEON: await _utilityService.PayEON(payInvoiceRequestViewModel); break; case PaymentUserType.InternElectrica: await _utilityService.PayElectrica(payInvoiceRequestViewModel); break; default: throw new ArgumentOutOfRangeException(); } var transaction = new TransactionRequestViewModel() { From = PaymentUserType.Me.ToString(), To = payInvoiceRequestViewModel.Provider.ToString(), UserId = userId, Validated = false, Value = payInvoiceRequestViewModel.Value, InvoiceId = payInvoiceRequestViewModel.InvoiceId }; var ok = await _transactionService.AddTransaction(transaction); return(RedirectToAction("Index", "Home")); } catch (Exception e) { ModelState.AddModelError("error", e.Message); return(View("Pay")); } }
public async Task <bool> PayElectrica(PayInvoiceRequestViewModel payInvoiceRequestViewModel) { var url = $"{_configuration["ElectricaAPIUrl"]}/api/invoice/pay"; try { var responseString = await HTTPRequestSender.PostAsync(url, payInvoiceRequestViewModel); var responseUser = JsonConvert.DeserializeObject <bool>(responseString); return(responseUser); } catch (Exception e) { var errorResponse = JsonConvert.DeserializeObject <ErrorResponseViewModel>(e.Message); if (errorResponse.Id == (int)ErrorResponseIds.UserInvalid) { throw new UserNotFoundException(); } throw; } }
public ActionResult Pay(PayInvoiceRequestViewModel payInvoiceRequestViewModel) { return(View(payInvoiceRequestViewModel)); }