예제 #1
0
 public void Run(CustomerBet customerBet)
 {
     foreach (var bet in customerBet.Bet)
     {
         if (bet.Win >= 1000)
             bet.BigWin = true;
     }
 }
예제 #2
0
 public void Run(CustomerBet customerBet)
 {
     foreach (var bet in customerBet.Bet)
     {
         if (bet.Stake >= 30 * customerBet.AverageBettingStake)
             bet.HighlyUnusual = true;
     }
 }
예제 #3
0
        public void Init()
        {
            m_CustomerSettledBets = new List<CustomerBet>();
            m_CustomerUnSettledBets = new List<CustomerBet>();

            Bet b = new Bet {CustomerId = 10, Win = 1100,Stake =10};
            CustomerBet c = new CustomerBet();
            c.Bet = new List<Bet>();
            c.Bet.Add(b);

            m_CustomerSettledBets.Add(c);
        }
예제 #4
0
        public void Run(CustomerBet customerBet)
        {
            //Get Winning Bet and Total Bet for each customer
                var wins = customerBet.Bet.Count(x => x.Win > 0);
                var totalBets = customerBet.Bet.Count;

                //Prevent div by zero
                if (wins > 0 && totalBets > 0)
                {
                    if((float)((float)wins / (float)totalBets) * 100 >= 60)
                        customerBet.Bet.ToList().ForEach(y=>y.WinningAtUnusalRate = true);
                }
        }
예제 #5
0
        public void Init()
        {
            m_CustomerSettledBets = new List<CustomerBet>();
            m_CustomerUnSettledBets = new List<CustomerBet>();

            //Load AllUnique Customers from the bet history
            var customerIDs = m_repository.GetUniqueCustomerID();

            var settledRiskPolicies = new List<IRiskPolicy> { new WinningAtUnusalRatePolicy() };
            var undsettledRiskPolicies = new List<IRiskPolicy> { new BigWinRiskPolicy(), new HighlyUnusalStakePolicy(), new UnusalStakePolicy() };

            foreach (var customerID in customerIDs)
            {
                //Add Settled Bet for the given customer
                var settledBet = new CustomerBet();
                settledBet.Bet = new List<Bet>(m_repository.GetSettledBetForCustomer(customerID));
                settledBet.AverageBettingStake = settledBet.Bet.Average(a=>a.Stake);
                m_CustomerSettledBets.Add(settledBet);

                //Run Policy on settled Bet
                settledRiskPolicies.ForEach(policy => policy.Run(settledBet));

                //Add Unsettled Bets for the given Customer
                var unSettledBet = new CustomerBet();
                unSettledBet.Bet = new List<Bet>(m_repository.GetUnSettledBetForCustomer(customerID));
                unSettledBet.AverageBettingStake = settledBet.AverageBettingStake;
                m_CustomerUnSettledBets.Add(unSettledBet);

                //Run policy on unsettled Bet
                undsettledRiskPolicies.ForEach(policy => policy.Run(unSettledBet));

                //Mark all these customer as Risky as they have risky history
                unSettledBet.Bet.ForEach(x => x.WinningAtUnusalRate = settledBet.Bet.First().WinningAtUnusalRate);

            }
        }