Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        //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));
            }
        }
Esempio n. 3
0
        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));
        }