Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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"));
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
 public ActionResult Pay(PayInvoiceRequestViewModel payInvoiceRequestViewModel)
 {
     return(View(payInvoiceRequestViewModel));
 }