//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)); }
public ActionResult Authorize(int?PreauthId) { EJState result = EJState.Unknown; try { var preauthTransaction = _financialService.GetPreauthTransaction(PreauthId); _financialService.TransactWalletCredit(EOperator.DEDUCT, ETransactionType.Withdrawal, preauthTransaction.Debit ?? decimal.Zero, preauthTransaction.ReferenceNo, preauthTransaction.WalletId); preauthTransaction.StatusId = (int)EStatus.Approved; _financialService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; } catch (Exception ex) { Log.Error(ex.Message, ex); result = EJState.Failed; } return(Json(result, JsonRequestBehavior.AllowGet)); }
//Return update row information to bootstrap table. public JsonResult VoidReturn(int UPDId) { EJState result = EJState.Unknown; try { var upd = _investmentService.GetReturnInterest(UPDId); upd.StatusId = (int)EStatus.Void; _investmentService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; } catch (Exception ex) { result = EJState.Failed; Log.Error(ex.Message, ex); } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult Void(int?UserPackageId) { EJState result = EJState.Unknown; try { var userPackage = _investmentService.GetUserPackage(UserPackageId.Value); userPackage.StatusId = (int)EStatus.Void; userPackage.ModifiedBy = User.Identity.Name; userPackage.ModifiedTimestamp = DateTime.UtcNow; _investmentService.UpdateUserPackage(userPackage); _investmentService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; }catch (Exception ex) { Log.Error(ex.Message, ex); result = EJState.Failed; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult Void(int?PreauthId) { EJState result = EJState.Unknown; try { var preauthTransaction = _financialService.GetPreauthTransaction(PreauthId); preauthTransaction.StatusId = (int)EStatus.Void; //TODO: Adjust back to user wallet. _financialService.SaveChange(User.Identity.GetUserId <int>()); result = EJState.Success; } catch (Exception ex) { Log.Error(ex.Message, ex); result = EJState.Failed; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public ActionResult Approve(int?UserPackageId) { EJState result = EJState.Unknown; try { var userPackage = _investmentService.GetUserPackage(UserPackageId.Value); var package = _investmentService.GetEntitledPackage(userPackage.TotalAmount); //Activate User Package userPackage.ApprovedBy = User.Identity.Name; userPackage.EffectiveDate = DateTime.UtcNow; userPackage.StatusId = (int)EStatus.Active; userPackage.ModifiedBy = User.Identity.Name; userPackage.ModifiedTimestamp = DateTime.UtcNow; _investmentService.UpdateUserPackage(userPackage); //Create Return Interest Records List <ReturnInterest> RIList = new List <ReturnInterest>(); for (int i = 0; i < DBCPackageLifetime.Month; i++) { ReturnInterest ri = new ReturnInterest { UserPackageId = userPackage.UserPackageId, EffectiveDate = DateTime.UtcNow.AddMonths(i + 1).AddDays(1), Amount = userPackage.TotalAmount * userPackage.InterestRate, StatusId = (int)EStatus.Pending, }; _investmentService.InsertReturnInvestment(ri); } //Create Matching Bonus Records List <MatchingBonus> MBList = new List <MatchingBonus>(); User referralUser = _userService.GetReferralBy(User.Identity.GetUserId <int>()); var Rate = MatchingBonusSetting.StartingRate; for (int i = 1; i <= DBConstant.MatchingBonusSetting.Level; i++) { //Find upper level user if (referralUser == null || referralUser.UserProfile.Role.Description == DBConstant.DBCRole.Admin || referralUser.UserProfile.Role.Description == DBConstant.DBCRole.SuperAdmin) { break; } for (int y = 0; y < DBCPackageLifetime.Month; y++) { MatchingBonus mb = new MatchingBonus { UserPackageId = userPackage.UserPackageId, ReferralId = referralUser.UserId, UserId = User.Identity.GetUserId <int>(), Generation = i, Rate = Rate, ReturnDate = DateTime.UtcNow.AddMonths(y + 1).AddDays(1), BonusAmount = userPackage.TotalAmount * userPackage.InterestRate * Rate, StatusId = (int)EStatus.Pending }; _investmentService.InsertMatchingBonus(mb); } referralUser = _userService.GetReferralBy(referralUser.UserId); Rate -= MatchingBonusSetting.DecreaseRate; } //Activate user from pending if not already. var newUser = _userService.GetUserBy(userPackage.UserId); if (newUser.StatusId == (int)EStatus.Pending) { newUser.StatusId = (int)EStatus.Active; newUser.ModifiedTimestamp = DateTime.UtcNow; _userService.UpdateUser(newUser); } if (_investmentService.SaveChange(User.Identity.GetUserId <int>())) { result = EJState.Success; } else { result = EJState.Failed; } } catch (Exception ex) { Log.Error(ex.Message, ex); result = EJState.Failed; } return(Json(result, JsonRequestBehavior.AllowGet)); }