Exemple #1
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));
        }
Exemple #2
0
 public void InsertMatchingBonus(MatchingBonus matchingBonus)
 {
     _uow.Repository <MatchingBonus>().Insert(matchingBonus);
 }