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)); }
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)); }
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; }
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)); }
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>()); }
/// <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)); }
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); }
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")); }
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")); } }
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()); }
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(); }