public async Task <bool> Withdraw(decimal amountToWithdraw, string accountNumber, string user) { var accountBalanceRepo = new AccountStatementRepository(); var currentBalance = await accountBalanceRepo.GetCurrentBalance(user); var returnValue = false; var withdrawalRepo = new WithdrawalRepository(); var charges = Decimal.Multiply(amountToWithdraw, (decimal)0.10); var actualAmount = amountToWithdraw - (charges); currentBalance = currentBalance - charges; returnValue = await accountBalanceRepo.CreateSync(new AccountStatement { User = user, Debit = charges, CurrentBalance = currentBalance, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "parkSmartly transaction fee" }); if (returnValue) { currentBalance = currentBalance - actualAmount; await accountBalanceRepo.CreateSync(new AccountStatement { User = user, Debit = actualAmount, CurrentBalance = currentBalance, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "Actual withdrawn amount" }); } else { return(returnValue); } if (returnValue) { await withdrawalRepo.CreateSync(new Withdrawal { User = user, AccountNumber = accountNumber, AmountToWithdraw = amountToWithdraw, ActualAmount = actualAmount, DateWithdrawal = Helper.SetDateForMongo(DateTime.Now) }); } else { return(returnValue); } return(false); }
public async Task<bool> Withdraw(decimal amountToWithdraw, string accountNumber, string user) { var accountBalanceRepo = new AccountStatementRepository(); var currentBalance = await accountBalanceRepo.GetCurrentBalance(user); var returnValue = false; var withdrawalRepo = new WithdrawalRepository(); var charges = Decimal.Multiply(amountToWithdraw, (decimal)0.10); var actualAmount = amountToWithdraw - (charges); currentBalance = currentBalance - charges; returnValue = await accountBalanceRepo.CreateSync(new AccountStatement { User = user, Debit = charges, CurrentBalance = currentBalance, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "cordovaBuild transaction fee" }); if (returnValue) { currentBalance = currentBalance - actualAmount; await accountBalanceRepo.CreateSync(new AccountStatement { User = user, Debit = actualAmount, CurrentBalance = currentBalance, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "Actual withdrawn amount" }); } else { return returnValue; } if (returnValue) { await withdrawalRepo.CreateSync(new Withdrawal { User = user, AccountNumber = accountNumber, AmountToWithdraw = amountToWithdraw, ActualAmount = actualAmount, DateWithdrawal = Helper.SetDateForMongo(DateTime.Now) }); } else { return returnValue; } return false; }
public async Task <ActionResult> Account() { var accountStatementRepo = new AccountStatementRepository(); var model = await accountStatementRepo.GetStatement(User.Identity.Name); var currentBalance = await accountStatementRepo.GetCurrentBalance(User.Identity.Name); ViewBag.CurrentBalance = currentBalance; return(View(model)); }
public async Task<ActionResult> Account() { var accountStatementRepo = new AccountStatementRepository(); var model = await accountStatementRepo.GetStatement(User.Identity.Name); var currentBalance = await accountStatementRepo.GetCurrentBalance(User.Identity.Name); ViewBag.CurrentBalance = currentBalance; return View(model); }
public async Task<ActionResult> Post(Space space) { try { var postRepo = new PostRepository(); switch (space.AvailabilityType) { case "Specific Date" : if (space.Availability.SpecificDate == DateTime.MinValue) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return Json(new { success = false, responseText = "Invalid specific date." }, JsonRequestBehavior.AllowGet); } break; case "Date Range": if (space.Availability.DateFrom == DateTime.MinValue || space.Availability.DateTo == DateTime.MinValue) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return Json(new { success = false, responseText = "Invalid date range." }, JsonRequestBehavior.AllowGet); } break; } space.Availability.DateFrom = DateTime.SpecifyKind(space.Availability.DateFrom, DateTimeKind.Utc); space.Availability.DateTo = DateTime.SpecifyKind(space.Availability.DateTo, DateTimeKind.Utc); space.Availability.SpecificDate = DateTime.SpecifyKind(space.Availability.SpecificDate, DateTimeKind.Utc); var data = new Data.Model.Space { User = User.Identity.Name, Address = space.Address, latitude = space.latitude, longitude = space.longitude, VehicleType = space.VehicleType, NumberOfSlot = space.NumberOfSlot, AvailabilityType = space.AvailabilityType, Availability = space.Availability, Price = space.Price, Instructions = space.Instructions, DatePosted = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc) }; await postRepo.CreateSync(data); var accountStatement = new AccountStatementRepository(); var amount = await accountStatement.GetCurrentBalance(User.Identity.Name) + 10; var promo = new AccountStatement { User = User.Identity.Name, Credit = 10, CurrentBalance = amount, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "Early adopter $10 promo" }; accountStatement.Create(promo); return Json(new { success = true, responseText = "Added.", id = data.Id.ToString() }, JsonRequestBehavior.AllowGet); } catch (Exception ex) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet); } }
public async Task <ActionResult> Post(Space space) { try { var postRepo = new PostRepository(); switch (space.AvailabilityType) { case "Specific Date": if (space.Availability.SpecificDate == DateTime.MinValue) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new { success = false, responseText = "Invalid specific date." }, JsonRequestBehavior.AllowGet)); } break; case "Date Range": if (space.Availability.DateFrom == DateTime.MinValue || space.Availability.DateTo == DateTime.MinValue) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new { success = false, responseText = "Invalid date range." }, JsonRequestBehavior.AllowGet)); } break; } space.Availability.DateFrom = DateTime.SpecifyKind(space.Availability.DateFrom, DateTimeKind.Utc); space.Availability.DateTo = DateTime.SpecifyKind(space.Availability.DateTo, DateTimeKind.Utc); space.Availability.SpecificDate = DateTime.SpecifyKind(space.Availability.SpecificDate, DateTimeKind.Utc); var data = new Data.Model.Space { User = User.Identity.Name, Address = space.Address, Country = space.Country, City = space.City, latitude = space.latitude, longitude = space.longitude, VehicleType = space.VehicleType, NumberOfSlot = space.NumberOfSlot, AvailabilityType = space.AvailabilityType, Availability = space.Availability, Price = space.Price, Instructions = space.Instructions, DatePosted = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc) }; await postRepo.CreateSync(data); var accountStatement = new AccountStatementRepository(); var amount = await accountStatement.GetCurrentBalance(User.Identity.Name) + 10; var promo = new AccountStatement { User = User.Identity.Name, Credit = 10, CurrentBalance = amount, TransactionDate = Helper.SetDateForMongo(DateTime.Now), Description = "Early adopter $10 promo" }; accountStatement.Create(promo); return(Json(new { success = true, responseText = "Added.", id = data.Id.ToString() }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet)); } }