public static InvestmentTicket AddNewTicket(InvestmentPlatformPlan platformPlan, int userId, int userPlanId) { var ticket = new InvestmentTicket { UserPlanId = userPlanId, UserId = userId, Date = AppSettings.ServerTime, Status = TicketStatus.WaitingInQueue, LevelPrice = platformPlan.Price, LevelFee = platformPlan.LevelFee, LevelEarnings = platformPlan.Price * platformPlan.Roi / 100, Level = platformPlan.Number, TicketNumber = GetTicketNumber(platformPlan.Number) }; ticket.Save(); return(ticket); }
private static void BuyPlan(Member user, PurchaseBalances targetBalance, InvestmentPlatformPlan plan, Money planDiff, Money targetPrice = null) { var price = planDiff == Money.Zero ? plan.Price : planDiff; var note = string.Format("{0} purchase", plan.Name); if (targetPrice != null) { price = targetPrice; } //IF TARGET BALANCE != (AR || CASH) IT MEANS THAT WE BUY/UPGRADE FROM PAYMENT BUTTONS if (targetBalance == PurchaseBalances.Cash || targetBalance == PurchaseBalances.Purchase) { PurchaseOption.ChargeBalance(user, price, PurchaseOption.Features.InvestmentPlatform.ToString(), targetBalance, note, BalanceLogType.InvestmentPlatformPlanPurchase); } else { targetBalance = PurchaseBalances.PaymentProcessor; } if (AppSettings.InvestmentPlatform.LevelsEnabled) { InvestmentLevelsManager.CanUserDepositOnLevel(plan, user); } var userPlan = new InvestmentUsersPlans { PlanId = plan.Id, UserId = user.Id, Price = price, Status = PlanStatus.Active, BalanceBoughtType = targetBalance, PurchaseDate = DateTime.Now, MoneyReturned = Money.Zero, MoneyToReturn = Money.MultiplyPercent(price, plan.Roi), CurrentMonthPayout = Money.Zero }; userPlan.Save(); InvestmentLevelsManager.DepositOnLevel(plan, userPlan.Id, user); if (AppSettings.InvestmentPlatform.ProofsEnabled) { HtmlInvestmentProofGenerator proof; if (AppSettings.InvestmentPlatform.LevelsEnabled) { proof = new HtmlInvestmentProofGenerator(InvestmentTicket.GetTicket(user.Id, userPlan.Id)); } else { proof = new HtmlInvestmentProofGenerator(userPlan); } proof.SendPdfViaEmail(); } MatrixBase.TryAddMemberAndCredit(user, price, AdvertType.InvestmentPlan); InvestmentPlanCrediter Crediter = new InvestmentPlanCrediter(user); Crediter.CreditStructure(price); if (user.HasReferer) { TryToSpeedUpReferrer(user.ReferrerId, price, user.Name); Crediter.CreditReferer(price); } }