Beispiel #1
0
        public ActionResult Edit(NewPaymentViewModel viewModel)
        {
            PaymentCard paymentCard = new PaymentCard();

            using (SussexDBEntities db = new SussexDBEntities())
            {
                if (viewModel.PaymentCardId != 0)
                {
                    paymentCard = db.PaymentCards.Where(w => w.PaymentCardId == viewModel.PaymentCardId).FirstOrDefault();
                }
                paymentCard.PaymentCardIsDefault    = true;
                paymentCard.PaymentCardHolderName   = viewModel.PaymentCardHolderName;
                paymentCard.PaymentCardNumber       = viewModel.PaymentCardNumber;
                paymentCard.PaymentCardExpireDate   = viewModel.PaymentCardExpireDate;
                paymentCard.PaymentCardSecurityCode = viewModel.PaymentCardSecurityCode;
                paymentCard.UserId = viewModel.UserId;

                if (viewModel.PaymentCardId == 0)
                {
                    db.PaymentCards.Add(paymentCard);
                }
                db.SaveChanges();
            }
            return(Redirect(viewModel.ReturnUrl));
        }
Beispiel #2
0
        public async Task RegisterNewPayment_CheckFunctionality()
        {
            var altering = new Altering
            {
                CustomerId = 1
            };

            dbContext.Alterings.Add(altering);
            dbContext.SaveChanges();

            var mock = new Mock <IBus>();

            mock.Setup(x => x.Publish(new OrderPaid {
                AlterationId = altering.Id
            }, default)).Returns(() =>
            {
                return(Task.CompletedTask);
            });
            controller = new PaymentsController(new AzureBasedMicroserviceContext(), mock.Object);

            var data = new NewPaymentViewModel
            {
                AlteringId = altering.Id,
                Amount     = 1000
            };
            var result = await controller.RegisterNewPayment(data);

            Assert.IsTrue((result as OkResult) != null, "It should return OkResult with valid AlterationId");


            removeAlterationFromDb(altering.Id);
            removePaymentFromDb(altering.Id);
        }
        public IActionResult New()
        {
            var userId    = userManager.GetUserId(User);
            var customer  = customerService.GetCustomerFromUserId(userId);
            var viewModel = new NewPaymentViewModel()
            {
                BanksAccount  = customer.BankAccounts,
                PaymentStatus = NewPaymentStatus.NotInitiated
            };

            return(PartialView("_NewPaymentPartial", viewModel));
        }
Beispiel #4
0
        public void UserPanel_NewPayment_Throw_Exception_If_Not_Enough_Money()
        {
            var senderBankAccount    = new BankAccount(Guid.NewGuid(), 1000);
            var recipientBankAccount = new BankAccount(Guid.NewGuid(), 1000);
            var paymentModel         = new NewPaymentViewModel()
            {
                Amount = 2000
            };

            _repository.GetBankAccount(Arg.Any <Guid>()).Returns(senderBankAccount);
            _repository.GetUserBankAccount(Arg.Any <string>()).Returns(recipientBankAccount);

            var viewResult = _userPanelController.NewPayment(paymentModel) as ViewResult;
        }
Beispiel #5
0
        public IActionResult NewPayment([FromForm] NewPaymentViewModel paymentData)
        {
            NewPaymentViewModel viewModelResult = new NewPaymentViewModel()
            {
                PaymentStatus = NewPaymentStatus.Failed
            };

            if (!ModelState.IsValid ||
                paymentData == null ||
                paymentData.SourceAccount == null ||
                paymentData.Amount == null
                )
            {
                return(PartialView("_NewPaymentPartial", viewModelResult));
            }

            ModelState.Clear();
            try
            {
                var userId = userManager.GetUserId(User);
                paymentsService.CreateAccountPayment(userId,
                                                     paymentData.SourceAccount.Value,
                                                     paymentData.Amount.Value,
                                                     paymentData.DestinationName,
                                                     paymentData.DestinationIBAN,
                                                     paymentData.Details);

                viewModelResult.PaymentMessage = "Done";
                viewModelResult.PaymentStatus  = NewPaymentStatus.Created;
            }
            catch (NotEnoughFundsException)
            {
                viewModelResult.PaymentStatus  = NewPaymentStatus.Failed;
                viewModelResult.PaymentMessage = "Not enough funds available";
            }
            catch (WrongCurrencyException)
            {
                viewModelResult.PaymentStatus  = NewPaymentStatus.Failed;
                viewModelResult.PaymentMessage = "Payments not allowed for accounts with different currency";
            }
            catch (Exception e)
            {
                viewModelResult.PaymentStatus  = NewPaymentStatus.Failed;
                viewModelResult.PaymentMessage = "Unexpected error occured";
            }

            return(PartialView("_NewPaymentPartial", viewModelResult));
        }
Beispiel #6
0
        public void UserPanel_NewPayment_Throw_Exception_If_Not_Enough_Money()
        {
            var senderBankAccount    = new BankAccount(Guid.NewGuid(), 1000);
            var recipientBankAccount = new BankAccount(Guid.NewGuid(), 1000);
            var paymentModel         = new NewPaymentViewModel()
            {
                Amount = 2000
            };

            _repository.GetBankAccount(Arg.Any <Guid>()).Returns(senderBankAccount);
            _repository.GetUserBankAccount(Arg.Any <string>()).Returns(recipientBankAccount);

            Assert.Throws <ArgumentOutOfRangeException>(() => _userPanelController.NewPayment(paymentModel));
            Assert.Catch <ArgumentOutOfRangeException>(() => _userPanelController.NewPayment(paymentModel));
            Assert.That(() => _userPanelController.NewPayment(paymentModel), Throws.TypeOf <ArgumentOutOfRangeException>());
        }
Beispiel #7
0
        /// <summary>
        /// Call on navigated , initializate the view and set sources for list views
        /// </summary>
        /// <param name="e"></param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.Parameter == null)
            {
            }
            else
            {
                ViewModel = new NewPaymentViewModel((NewPaymentData)e.Parameter);
            }

            TreatmentPlanDB.ItemsSource = ViewModel.TreatmentPlans;
            if (ViewModel.TreatmentPlans.Count > 0)
            {
                TreatmentPlanDB.SelectedItem = ViewModel.GetMostRecent();
            }
        }
 public IActionResult New(NewPaymentViewModel newPaymentViewModel)
 {
     if (ModelState.IsValid)
     {
         Payment         payment  = Payment.RetrieveExistingPaymentOrReturnNew(_context, newPaymentViewModel);
         IList <Article> articles = Payment.ReadFile(newPaymentViewModel.File);
         if (payment.CalculationComplete)
         {
             newPaymentViewModel.Error = "Calculation has already been completed for this month.";
             return(View(newPaymentViewModel));
         }
         payment.AddArticlesToDatabase(articles, _context);
         _context.SaveChanges();
         return(Redirect("/Payment/" + payment.MonthYear + "/Articles"));
     }
     return(View(newPaymentViewModel));
 }
Beispiel #9
0
        public void UserPanel_NewPayment_Changes_Bank_Accounts_Balance(int amount)
        {
            int senderInitialBalance    = 10000;
            int recipientInitialBalance = 9999;
            var senderBankAccount       = new BankAccount(Guid.NewGuid(), senderInitialBalance);
            var recipientBankAccount    = new BankAccount(Guid.NewGuid(), recipientInitialBalance);
            var model = new NewPaymentViewModel()
            {
                Amount = amount
            };

            _repository.GetUserBankAccount(Arg.Any <string>()).Returns(senderBankAccount);
            _repository.GetBankAccount(Arg.Any <Guid>()).Returns(recipientBankAccount);

            var viewResult = _userPanelController.NewPayment(model) as ViewResult;

            Assert.Equal(recipientBankAccount.Balance, recipientInitialBalance + amount);
            Assert.Equal(senderBankAccount.Balance, senderInitialBalance - amount);
        }
Beispiel #10
0
        public ActionResult NewPayment(NewPaymentViewModel model)
        {
            //var id = User.Identity.GetUserId();
            var id   = "id";
            var from = _repo.GetUserBankAccount(id);
            var to   = _repo.GetBankAccount(model.AccountNumber);

            if (ModelState.IsValid)
            {
                if (from.AvailableFunds > model.Amount)
                {
                    Payment p = new Payment()
                    {
                        Id                    = model.Id,
                        From                  = from,
                        To                    = to,
                        Amount                = model.Amount * -1,
                        PaymentDate           = model.PaymentDate,
                        Title                 = model.Title,
                        OperationType         = TypeOfOperation.TransferToAccount,
                        BalanceAfterOperation = from.Balance - model.Amount
                    };

                    p.From.Balance -= model.Amount;
                    p.To.Balance   += model.Amount;

                    _repo.Insert(p);
                    _repo.Save();
                    TempData["message"] = string.Format("Pomyślnie przelano pieniądze!");
                    return(RedirectToAction("Index"));
                }
                else
                {
                    //TempData["error"] = string.Format("Za mała ilość środków na koncie!");
                    //return RedirectToAction("Index");
                    throw new ArgumentOutOfRangeException("Za mało hasju");
                }
            }
            ModelState.AddModelError("", "Popraw błędy formularza");
            ViewBag.AccountNumber  = from.AccountNumber.ToString().ToUpper();
            ViewBag.AvailableFunds = from.AvailableFunds;
            return(View(model));
        }
        public IActionResult New([FromForm] NewPaymentViewModel paymentData)
        {
            NewPaymentViewModel viewModelResult = new NewPaymentViewModel()
            {
                PaymentStatus = NewPaymentStatus.Failed
            };

            if (!ModelState.IsValid ||
                paymentData == null ||
                paymentData.BankAccountId == null
                )
            {
                return(PartialView("_NewPaymentPartial", viewModelResult));
            }

            ModelState.Clear();
            try
            {
                var userId = userManager.GetUserId(User);
                paymentsService.CreateAccountPayment(userId,
                                                     paymentData.BankAccountId.Value,
                                                     paymentData.Amount,
                                                     paymentData.ExternalName,
                                                     paymentData.ExternalIBAN,
                                                     "");

                viewModelResult.PaymentMessage = "Done";
                viewModelResult.PaymentStatus  = NewPaymentStatus.Created;
            }
            catch (NotEnoughFundsException)
            {
                viewModelResult.PaymentStatus  = NewPaymentStatus.Failed;
                viewModelResult.PaymentMessage = "Not enough funds available";
            }
            catch (Exception e)
            {
                logger.LogError("Failed to make payment {@Exception}", e.Message);
                logger.LogDebug("Failed to see payment {@ExceptionMessage}", e);
                viewModelResult.PaymentStatus = NewPaymentStatus.Failed;
            }
            //return PartialView("_NewPaymentPartial", viewModelResult);
            return(RedirectToAction("Index"));
        }
Beispiel #12
0
        public IActionResult AddReceived([FromForm] NewPaymentViewModel paymentData)
        {
            var userId = userManager.GetUserId(User);

            try
            {
                var customer  = customerService.GetCustomerFromUserId(userId);
                var viewModel = new AddReceivedViewModel()
                {
                    BankAccount = customer.BankAccounts
                };

                return(View(viewModel));
            }
            catch (Exception e)
            {
                logger.LogError("Failed to add the transaction{@ExceptionMessage}", e.Message);
                logger.LogDebug("Failed to add the transaction{@Exception}", e);

                return(BadRequest("Bad Input"));
            }
        }
Beispiel #13
0
        public async Task <IActionResult> RegisterNewPayment([FromBody] NewPaymentViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (!alterings.Any(x => x.Id == model.AlteringId))
            {
                return(BadRequest($"There is no any alteration with Id = {model.AlteringId}"));
            }
            var trackingCode = Guid.NewGuid().ToString();

            context.Add(new Payment
            {
                AlteringId   = model.AlteringId,
                Amount       = model.Amount,
                TrackingCode = trackingCode
            });
            await _unitOfWork.SaveChangesAsync();

            await _bus.Publish(new OrderPaid { AlterationId = model.AlteringId });

            return(Ok());
        }
Beispiel #14
0
        public static Payment RetrieveExistingPaymentOrReturnNew(ApplicationDbContext context, NewPaymentViewModel newPaymentViewModel)
        {
            DateTimeFormatInfo mfi       = new DateTimeFormatInfo();
            string             month     = mfi.GetMonthName(Int32.Parse(newPaymentViewModel.Month)).ToString();
            string             monthYear = month + " " + newPaymentViewModel.Year.ToString();

            bool    exists = context.Payments.Any(p => p.MonthYear == monthYear);
            Payment payment;

            if (exists)
            {
                payment = context.Payments.Single(p => p.MonthYear == monthYear);
            }
            else
            {
                payment = new Payment()
                {
                    MonthYear = monthYear
                };
                context.Payments.Add(payment);
            }
            return(payment);
        }
        public IActionResult New()
        {
            NewPaymentViewModel newPaymentViewModel = new NewPaymentViewModel();

            return(View(newPaymentViewModel));
        }
 public NewPaymentPage()
 {
     InitializeComponent();
     BindingContext = new NewPaymentViewModel();
 }