Esempio n. 1
0
    private static void CreditWinner(Jackpot jackpot, JackpotWinningTicket winningTicket, Member winner)
    {
        var prizeType = GetPrizeType(jackpot, winner);

        switch (prizeType)
        {
        case JackpotPrize.MainBalance:
            var mainBalancePrize = jackpot.MainBalancePrize / jackpot.NumberOfWinningTickets;
            winner.AddToMainBalance(mainBalancePrize, "Jackpot win", BalanceLogType.Other);
            winner.SaveBalances();
            History.AddJackpotWin(winner.Name, string.Format("{0} - {1}", L1.MAINBALANCE, mainBalancePrize.ToString()), winningTicket.WinningTicketNumber.ToString(), jackpot.Name);
            PoolDistributionManager.SubtractProfit(ProfitSource.Jackpots, mainBalancePrize);
            break;

        case JackpotPrize.AdBalance:
            var adBalancePrize = jackpot.AdBalancePrize / jackpot.NumberOfWinningTickets;
            winner.AddToPurchaseBalance(adBalancePrize, "Jackpot win", BalanceLogType.Other);
            winner.SaveBalances();
            History.AddJackpotWin(winner.Name, string.Format("{0} - {1}", U6012.PURCHASEBALANCE, adBalancePrize.ToString()), winningTicket.WinningTicketNumber.ToString(), jackpot.Name);
            PoolDistributionManager.SubtractProfit(ProfitSource.Jackpots, adBalancePrize);
            break;

        case JackpotPrize.LoginAdsCredits:
            var loginAdsCreditsPrize = jackpot.LoginAdsCreditsPrize / jackpot.NumberOfWinningTickets;
            winner.AddToLoginAdsCredits(loginAdsCreditsPrize, "Jackpot win");
            winner.SaveBalances();
            History.AddJackpotWin(winner.Name, string.Format("{0} - {1}", U5008.LOGINADSCREDITS, loginAdsCreditsPrize.ToString()), winningTicket.WinningTicketNumber.ToString(), jackpot.Name);
            break;

        case JackpotPrize.Upgrade:
            var upgradeMembershipDaysPrize = jackpot.UpgradeDaysPrize / jackpot.NumberOfWinningTickets;

            if (winner.MembershipId == Membership.Standard.Id)
            {
                winner.Upgrade(new Membership(jackpot.UpgradeIdPrize), new TimeSpan(upgradeMembershipDaysPrize, 0, 0, 0));
            }
            else
            {
                winner.Upgrade(new Membership(jackpot.UpgradeIdPrize), winner.MembershipExpires.HasValue
                            ? winner.MembershipExpires.Value.AddDays(upgradeMembershipDaysPrize)
                            : AppSettings.ServerTime.AddDays(upgradeMembershipDaysPrize));
            }
            History.AddJackpotWin(winner.Name, string.Format("{0} - {1}", U5008.UPGRADED, winner.Membership.Name), winningTicket.WinningTicketNumber.ToString(), jackpot.Name);
            break;

        default: break;
        }
        JackpotTicketPrize prize = new JackpotTicketPrize();

        prize.JackpotId = jackpot.Id;
        prize.PrizeType = prizeType;
        prize.Save();
    }
Esempio n. 2
0
    public static void Finish(Jackpot jackpot)
    {
        try
        {
            jackpot.Status = JackpotStatus.Finished;
            Dictionary <int, int> winnerDictionary = GetWinner(jackpot);

            //Update Jackpot stats before deleting JackpotTickets data
            if (winnerDictionary != null)
            {
                foreach (var winnerData in winnerDictionary)
                {
                    JackpotWinningTicket winningTicket = new JackpotWinningTicket();
                    winningTicket.JackpotId           = jackpot.Id;
                    winningTicket.UserWinnerId        = winnerData.Value;
                    winningTicket.WinningTicketNumber = winnerData.Key;
                    winningTicket.Save();

                    //Credit winner
                    Member memberWinner = new Member((int)winningTicket.UserWinnerId);

                    CreditWinner(jackpot, winningTicket, memberWinner);
                }
            }

            jackpot.NumberOfParticipants = GetNumberOfParticipants(jackpot.Id);
            jackpot.NumberOfTickets      = GetNumberOfTickets(jackpot.Id);

            //Delete JackpotTickets data
            TableHelper.DeleteRows <JackpotTicket>(TableHelper.MakeDictionary("JackpotId", jackpot.Id));
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
            throw new MsgException(ex.Message);
        }
        finally
        {
            jackpot.Status = JackpotStatus.Finished;
            jackpot.Save();
        }
    }