示例#1
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));
            }
        }
示例#2
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));
        }
示例#3
0
        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));
        }
示例#4
0
        //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));
        }
示例#5
0
        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));
        }
示例#6
0
        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));
        }
示例#7
0
        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));
        }