public bool CreateActiveGamerScheme(IDbConnection db, active_gamer_scheme activeGamerScheme)
        {
            string sqlQuery = @"INSERT INTO active_gamer_scheme
                    (customer_account_id, inviter_id, balance, is_archived, reward)
                VALUES
                    (@customer_account_id, @inviter_id, @balance, @is_archived, @reward)";

            return 1 == db.Execute(sqlQuery, new {
                customer_account_id = activeGamerScheme.customer_account_id,
                inviter_id = activeGamerScheme.inviter_id,
                balance = activeGamerScheme.balance.Value,
                is_archived = activeGamerScheme.is_archived,
                reward = activeGamerScheme.reward,
            });
        }
        public bool UpdateActiveGamerScheme(IDbConnection db, active_gamer_scheme activeGamerScheme)
        {
            string sqlQuery = @"UPDATE active_gamer_scheme
                SET 
                    balance = @balance,
                    is_archived = @is_archived,
                    reward = @reward
                WHERE 
                    customer_account_id = @customer_account_id
                AND inviter_id = @inviter_id";

            return 1 == db.Execute(sqlQuery, new
            {
                customer_account_id = activeGamerScheme.customer_account_id,
                inviter_id = activeGamerScheme.inviter_id,
                balance = activeGamerScheme.balance.Value,
                is_archived = activeGamerScheme.is_archived,
                reward = activeGamerScheme.reward,
            });
        }
        public void AddActiveGamerScheme(customer_account customer, coin_transaction coinTransaction)
        {
            var repo = Repo.Instance;
            using (var db = repo.OpenConnectionFromPool())
            {
                var reward = repo.GetActiveGamerScheme(db, customer.id).Data;
                if (reward == null)
                {
                    customer_account inviter = repo.GetCustomerByUserName(db, customer.inviter_username).Data;
                    reward = new active_gamer_scheme
                    {
                        customer_account_id = customer.id,
                        inviter_id = inviter.id,
                        balance = 0
                    };
                    repo.CreateActiveGamerScheme(db, reward);
                }

                if (reward.is_archived)
                    return;

                reward.balance += coinTransaction.amount;
                repo.UpdateActiveGamerScheme(db, reward);
            }
        }