public ActionResult Withdrawal(WithdrawalViewModels model, string saveState) { try { var user = _userService.GetUserBy(User.Identity.GetUserId <int>()); var userWallet = _financialService.GetUserWallet(user.UserId); //Insufficient Balance handling if (userWallet.Balance < model.WithdrawAmount) { Warning("You have insufficient E-Wallet Credit to withdraw."); var defaultModel = (WithdrawalViewModels)((ViewResultBase)Withdrawal()).ViewData.Model; model.BankDDL = defaultModel.BankDDL; model.CreditBalance = defaultModel.CreditBalance; return(RedirectToAction("Withdrawal")); } if (ModelState.IsValid) { var docCode = _docService.GetNextDocumentNumber(DBConstant.DBCDocSequence.EDocSequenceId.Withdrawal); //Insert withdrawal record Withdrawal wd = new Service.Entities.Withdrawal { WalletId = userWallet.WalletId, ReferenceNo = docCode, NotifyEmail = model.NotifyEmail, Bank = model.Bank, StatusId = (int)EStatus.Approved, BankAccountName = model.BankAccountHolder, BankAccountNo = model.BankAccountNo, BankBranch = model.BankBranch, CreatedTimestamp = DateTime.UtcNow, WithdrawAmount = model.WithdrawAmount, }; _financialService.InsertWithdrawal(wd); //Preauth _financialService.PreauthorizeWalletCredit(EOperator.DEDUCT, ETransactionType.Withdrawal, model.WithdrawAmount, docCode, userWallet.WalletId); //Commit _financialService.SaveChange(User.Identity.GetUserId <int>()); Success("Your request to withdraw total amount of $" + model.WithdrawAmount.toCurrencyFormat() + " has been submitted."); } } catch (Exception ex) { Log.Error(ex.Message, ex); Danger("Failed to submit withdrawal request. Please try again later. If error still persist please contact our customer support."); } return(RedirectToAction("Index")); }
//Return update row information to bootstrap table. /* Enhancement required: Return descriptive message to end user */ public JsonResult ApproveReturn(int UPDId) { EJState result = EJState.Unknown; try { var upd = _investmentService.GetReturnInterest(UPDId); //Check if previously approved. if (upd.StatusId == (int)EStatus.Approved) { return(Json(result, JsonRequestBehavior.AllowGet)); } //Get DocCode var docCode = _docService.GetNextDocumentNumber(DBCDocSequence.EDocSequenceId.Interest_Return); upd.StatusId = (int)EStatus.Approved; upd.ApprovedReferenceNo = docCode; //Add to wallet _financialService.TransactWalletCredit(EOperator.ADD, ETransactionType.Interest_Return, upd.Amount, docCode, upd.UserPackage.User.UserWallet.First().WalletId); //Check if package subscription ended, update status. var packagesDetail = _investmentService.GetAllReturnInterest(upd.UserPackageId); if (packagesDetail.Where(x => x.ReturnInterestId != UPDId).Any(x => x.StatusId != (int)EStatus.Pending)) { var package = _investmentService.GetUserPackage(upd.UserPackageId); package.StatusId = (int)EStatus.Deactivated; } _financialService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; return(Json(result, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { result = EJState.Failed; Log.Error(ex.Message, ex); return(Json(result, JsonRequestBehavior.AllowGet)); } }
public JsonResult ApproveMatchingBonus(int MatchingBonusId) { EJState result = EJState.Unknown; try { var matchingBonus = _investmentService.GetMatchingBonus(MatchingBonusId); //Check if already approved if (matchingBonus.StatusId == (int)EStatus.Approved) { return(Json(new { }, JsonRequestBehavior.AllowGet)); } var docNo = _docService.GetNextDocumentNumber(DBCDocSequence.EDocSequenceId.Matching_Bonus); matchingBonus.StatusId = (int)EStatus.Approved; matchingBonus.ApprovedReferenceNo = docNo; var userWallet = matchingBonus.Referral.UserWallet.First(); if (userWallet != null) { //Add to wallet _financialService.TransactWalletCredit(EOperator.ADD, ETransactionType.Matching_Bonus, matchingBonus.BonusAmount, docNo, userWallet.WalletId); _financialService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; } else { result = EJState.NoWallet; } } catch (Exception ex) { Log.Error(ex.Message, ex); result = EJState.Failed; } return(Json(result, JsonRequestBehavior.AllowGet)); }