public IActionResult OrderSave(OrdersOrderSaveInputModel model) { Product saveFromDb = this.productsService.GetProductById(model.Id); BankUser userFromDb = this.usersService.GetCurrentUser(); if (userFromDb.Id == saveFromDb.Account.BankUserId) { return(this.Redirect("/")); } if (!userFromDb.Accounts.Any()) { return(this.Redirect("/Accounts/Activate")); } this.ViewData["Accounts"] = this.accountsService.GetUserAccounts(); OrderSave order = this.mapper.Map <OrderSave>(model); if (!ModelState.IsValid || saveFromDb.InterestRate != model.InterestRate || saveFromDb.Period != model.Period) { return(this.View(model)); } this.ordersService.AddOrderSave(order, saveFromDb); return(this.Redirect("/Users/OrderedSaves")); }
public void ApproveSaveRequest(OrderSave orderedSave) { Account depositorAccount = orderedSave.Account; Account sellerAccount = orderedSave.Save.Account; double depositAmount = (double)orderedSave.Amount; double monthlyIncome = (double)orderedSave.MonthlyFee; if (depositorAccount.Currency.IsoCode != sellerAccount.Currency.IsoCode) { ExchangeRate rateFromTo = Fixer .Rate(sellerAccount.Currency.IsoCode, depositorAccount.Currency.IsoCode); depositAmount = rateFromTo.Convert(depositAmount); monthlyIncome = rateFromTo.Convert(monthlyIncome); } depositorAccount.Balance -= (decimal)depositAmount; depositorAccount.MonthlyIncome += (decimal)monthlyIncome; //TODO every mounts task transfer sellerAccount.Balance += orderedSave.Amount; sellerAccount.MonthlyOutcome += orderedSave.MonthlyFee; orderedSave.CompletedOn = DateTime.UtcNow; orderedSave.Status = OrderStatus.Approved; this.context.SaveChanges(); }
public void AddOrderSaveShouldAddOrderSave() { var options = new DbContextOptionsBuilder <BankCloudDbContext>() .UseInMemoryDatabase(databaseName: "Add_OrderSave_Database") .Options; var dbContext = new BankCloudDbContext(options); var ordersService = new OrdersService(dbContext, null); var product = new Save { Name = "ABCD", Amount = 1000m, Commission = 0, InterestRate = 10m, Period = 12 }; var order = new OrderSave { Name = product.Name, }; order.MonthlyFee = BankCloudCalculator.CalculateDepositMonthlyIncome(order, product); ordersService.AddOrderSave(order, product); dbContext.SaveChanges(); var orders = dbContext.OrdersSaves.ToList(); Assert.Single(orders); Assert.Equal(order.Name, orders.First().Name); }
public IActionResult OrderedSaveDetails(string id) { OrderSave userOrderedSaveFromDB = this.ordersService.GetOrderSaveById(id); var detailOrderSave = this.mapper .Map <OrderedSavesDetailViewModel>(userOrderedSaveFromDB); return(View(detailOrderSave)); }
public void ApproveSaveRequestSholudSetOrderSaveToApprove() { var options = new DbContextOptionsBuilder <BankCloudDbContext>() .UseInMemoryDatabase(databaseName: "Approve_OrderSave_Database") .Options; var dbContext = new BankCloudDbContext(options); var ordersService = new OrdersService(dbContext, null); var orderId = "abcd123"; var product = new Save { Name = "ABCD", Amount = 1000m, Commission = 0, InterestRate = 10m, Period = 12, Account = new Account { Currency = new Currency { IsoCode = "USD" } } }; var order = new OrderSave { Id = orderId, Name = product.Name, Save = product, Account = new Account { Currency = new Currency { IsoCode = "USD" } } }; order.MonthlyFee = BankCloudCalculator.CalculateDepositMonthlyIncome(order, product); dbContext.OrdersSaves.Add(order); dbContext.SaveChanges(); var ordered = dbContext.OrdersSaves.Find(orderId); ordersService.ApproveSaveRequest(ordered); dbContext.SaveChanges(); var approved = dbContext.OrdersSaves.Find(orderId); Assert.Equal(OrderStatus.Approved, approved.Status); }
public void AddOrderSave(OrderSave order, Product save) { if (order == null || save == null) { return; } order.MonthlyFee = BankCloudCalculator.CalculateDepositMonthlyIncome(order, save); order.Status = OrderStatus.Pending; order.Name = save.Name; save.Popularity++; context.OrdersSaves.Add(order); context.SaveChanges(); }
public IActionResult ApproveSave(string id) { OrderSave orderedSaveFromDb = this.ordersService.GetSoldOrderSaveById(id); var depositorAccount = orderedSaveFromDb.Account; Account sellerAccount = orderedSaveFromDb.Save.Account; if (depositorAccount.Balance < orderedSaveFromDb.Amount) { this.TempData["error"] = GlobalConstants.ERROR_MESSAGE_FOR_DEPOSITOR_DOES_NOT_HAVE_MONEY; var view = this.mapper.Map <Order, CreditScoringsOrderedSaveDetailViewModel>(orderedSaveFromDb); return(this.View("SaveDetailRequest", view)); } this.ordersService.ApproveSaveRequest(orderedSaveFromDb); return(Redirect("/CreditScorings/MySells")); }
public ActionResult CheckOut(string jsonData) { string message = string.Empty; try { OrderSave objsave = JsonConvert.DeserializeObject <OrderSave>(jsonData); MasterService masterService = new MasterService(); message = masterService.SaveFinalOrder(objsave.UserInfo, objsave.ItemData); if (message != "ERROR") { SandEmial(objsave.UserInfo.CustomerName, message, objsave.UserInfo.EmailId); //return RedirectToAction("OrderConfomataionPage", new { odernumer = message }); } } catch (Exception ex) { message = "ERROR"; } return(Content(message)); }
public void GetOrderSaveByIdShouldReturnCorrectOrderSave() { var options = new DbContextOptionsBuilder <BankCloudDbContext>() .UseInMemoryDatabase(databaseName: "GetOrderLoanById_Database") .Options; var dbContext = new BankCloudDbContext(options); var ordersService = new OrdersService(dbContext, null); var orderId = "123abc"; var order = new OrderSave { Id = orderId }; dbContext.OrdersSaves.Add(order); dbContext.SaveChanges(); var returnedOrder = ordersService.GetOrderSaveById(orderId); Assert.Equal(order, returnedOrder); }
public void RejectRequestShouldSetOrderRajected() { var options = new DbContextOptionsBuilder <BankCloudDbContext>() .UseInMemoryDatabase(databaseName: "RejectReques_Order_Database") .Options; var dbContext = new BankCloudDbContext(options); var ordersService = new OrdersService(dbContext, null); var orderId = "abcd123"; var product = new Save { Name = "ABCD", Amount = 1000m, Commission = 0, InterestRate = 10m, Period = 12 }; var order = new OrderSave { Id = orderId, Name = product.Name, }; ordersService.AddOrderSave(order, product); dbContext.SaveChanges(); var ordered = dbContext.OrdersSaves.Find(orderId); ordersService.RejectRequest(ordered); dbContext.SaveChanges(); var rejected = dbContext.OrdersSaves.Find(orderId); Assert.Equal(OrderStatus.Rejected, rejected.Status); }
public static decimal CalculateDepositMonthlyIncome(OrderSave order, Product save) { return((order.Amount / 100) * save.InterestRate); }