/// <summary>
        /// Populate drum
        /// </summary>
        /// <param name="promoId"></param>
        /// <param name="bucketId"></param>
        /// <param name="drawingDateTime"></param>
        /// <param name="currentDate"></param>
        /// <param name="checkInStart"></param>
        /// <param name="checkInEnd"></param>
        /// <returns></returns>
        public static String PopulateDrum(Int32 promoId, Int32 bucketId, DateTime drawingDateTime,
                                          DateTime currentDate, DateTime checkInStart, DateTime checkInEnd, Int32 userID)
        {
            String errMessage = String.Empty;

            try
            {
                //// DRAW_SET_COUNTDOWN_START
                //DataAccess.ExecuteNonQuerySP("DRAW_SET_COUNTDOWN_START", null);

                // TR_SET_DRAWING_IN_PROGRESS
                DataAccess.ExecuteNonQuerySP("TR_SET_DRAWING_IN_PROGRESS", null);

                // PROMOTION_POINTS_PARTICIPATION_RULES_GetByKey
                List <SqlParameter> spParams = new List <SqlParameter>();
                spParams.Add(new SqlParameter("@PromotionID", promoId));
                DataSet results1 = DataAccess.ExecuteQuerySP("PROMOTION_POINTS_PARTICIPATION_RULES_GetByKey", spParams);

                if (results1.Tables.Count > 0)
                {
                    //string checkInRequired = results1.Tables[0].Rows[0]["CheckInReqd"].ToString();
                    //string implicitRequired = results1.Tables[0].Rows[0]["ImplicitCheckinSupported"].ToString();
                    // If CheckIn Is Required?
                    if (results1.Tables[0].Rows[0]["CheckInReqd"].ToString() == "True")
                    {
                        // If Implicit CheckIn Is Supported?
                        if (results1.Tables[0].Rows[0]["ImplicitCheckinSupported"].ToString() == "True")
                        {
                            // PROMOTION_DRAWING_EVENT_ImplicitCheckIn
                            spParams = new List <SqlParameter>();
                            spParams.Add(new SqlParameter("@PromotionID", promoId));
                            spParams.Add(new SqlParameter("@BucketID", bucketId));
                            spParams.Add(new SqlParameter("@DrawingDateTime", drawingDateTime));
                            spParams.Add(new SqlParameter("@CurrentDate", currentDate));
                            spParams.Add(new SqlParameter("@CheckInStart", checkInStart));
                            spParams.Add(new SqlParameter("@CheckInEnd", checkInEnd));
                            DataAccess.ExecuteNonQuerySP("PROMOTION_DRAWING_EVENT_ImplicitCheckIn", spParams);
                        }
                    }
                    // PROMOTION_DRUM_GetPopulationEntries
                    // Iterate through this to create standard entries.
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promotionID", promoId));
                    spParams.Add(new SqlParameter("@bucketID", bucketId));
                    DataSet results2 = DataAccess.ExecuteQuerySP("PROMOTION_DRUM_GetPopulationEntries", spParams);

                    // PROMOTION_DRUM_ReturnEligibleCount
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promotionID", promoId));
                    spParams.Add(new SqlParameter("@bucketID", bucketId));
                    // EligibleCount
                    DataSet result3      = DataAccess.ExecuteQuerySP("PROMOTION_DRUM_ReturnEligibleCount", spParams);
                    Int32   totalPlayers = Int32.Parse(result3.Tables[0].Rows[0][0].ToString());

                    // DRAW_SET_POPULATION_VARIABLES
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@totalPlayers", totalPlayers));
                    DataAccess.ExecuteNonQuerySP("DRAW_SET_POPULATION_VARIABLES", spParams);

                    // TR_SET_DRAWING_IN_PROGRESS
                    DataAccess.ExecuteNonQuerySP("TR_SET_DRAWING_IN_PROGRESS", null);


                    // For Each Row In results2 (PROMOTION_DRUM_GetPopulationEntries) Populate standard entry & call DRAW_SET_CURRENT_POPULATED ++ 1
                    foreach (DataRow row in results2.Tables[0].Rows)
                    {
                        // PROMOTION_DRUM_PopulateStandardEntry
                        spParams = new List <SqlParameter>();
                        spParams.Add(new SqlParameter("@promoID", promoId));
                        spParams.Add(new SqlParameter("@BucketID", bucketId));
                        spParams.Add(new SqlParameter("@PlayerAccountNum", row["PlayerAccountNum"].ToString()));
                        spParams.Add(new SqlParameter("@CMSPlayerID", row["CMSPlayerID"].ToString()));
                        spParams.Add(new SqlParameter("@Entries", row["Entries"].ToString()));
                        spParams.Add(new SqlParameter("@userID", userID));
                        DataAccess.ExecuteNonQuerySP("PROMOTION_DRUM_PopulateStandardEntry", spParams);

                        // exec DRAW_SET_CURRENT_POPULATED
                        spParams = new List <SqlParameter>();
                        spParams.Add(new SqlParameter("@populatedPlayers", promoId));
                        DataAccess.ExecuteNonQuerySP("DRAW_SET_CURRENT_POPULATED", spParams);
                    }

                    // DRAW_RESET_TEMPDRUM
                    DataAccess.ExecuteNonQuerySP("DRAW_RESET_TEMPDRUM", null);

                    // DRAW_SET_POPULATION_COMPLETE
                    DataAccess.ExecuteNonQuerySP("DRAW_SET_POPULATION_COMPLETE", null);

                    // TR_CLEAR_DRAWING_IN_PROGRESS
                    DataAccess.ExecuteNonQuerySP("TR_CLEAR_DRAWING_IN_PROGRESS", null);


                    DrawingGroup group = BusinessLogic.GetDrawingGroup(promoId);

                    // PROMOTION_DRUM_InsertDrumHistory
                    //spParams = new List<SqlParameter>();
                    //spParams.Add(new SqlParameter("@PromotionID", promoId));
                    //spParams.Add(new SqlParameter("@BucketID", bucketId));
                    //spParams.Add(new SqlParameter("@DrumTimeStamp", group.Drum.LastPopulated));
                    //spParams.Add(new SqlParameter("@NumberOfEntries", group.Drum.NumberOfEntries));
                    //spParams.Add(new SqlParameter("@NumberOfPlayers", group.Drum.NumberOfPlayers));
                    //DataAccess.ExecuteNonQuerySP("PROMOTION_DRUM_InsertDrumHistory", spParams);
                }
            }
            catch (SqlException ex)
            {
                errMessage = ex.Message;
            }
            return(errMessage);
        }
        public static DrawingGroup CompleteDrawing(Int32 promotionId, Int32 bucketId, DateTime drawingDateTime, Int32 userId)
        {
            try
            {
                // DRAW_RESET_CHECK
                DataAccess.ExecuteNonQuerySP("DRAW_RESET_CHECK", null);
                // DRAW_CLOSE_MASSANIMATION
                DataAccess.ExecuteNonQuerySP("DRAW_CLOSE_MASSANIMATION", null);

                // PROMOTION_DRAWING_EVENT_MarkComplete
                List <SqlParameter> spParams = new List <SqlParameter>();
                spParams.Add(new SqlParameter("@promotionID", promotionId));
                spParams.Add(new SqlParameter("@bucketID", bucketId));
                spParams.Add(new SqlParameter("@drawingDateTime", drawingDateTime));
                spParams.Add(new SqlParameter("@userID", userId));
                DataAccess.ExecuteNonQuerySP("PROMOTION_DRAWING_EVENT_MarkComplete", spParams);

                // PROMOTION_DRAWING_EVENT_RecordPermanentWinners
                spParams = new List <SqlParameter>();
                spParams.Add(new SqlParameter("@promoid", promotionId));
                spParams.Add(new SqlParameter("@bucketid", bucketId));
                spParams.Add(new SqlParameter("@drawingdate", drawingDateTime));
                DataAccess.ExecuteNonQuerySP("PROMOTION_DRAWING_EVENT_RecordPermanentWinners", spParams);

                // PROMOTION_DRUM_Clear
                spParams = new List <SqlParameter>();
                spParams.Add(new SqlParameter("@promotionID", promotionId));
                spParams.Add(new SqlParameter("@bucketID", bucketId));
                DataAccess.ExecuteNonQuerySP("PROMOTION_DRUM_Clear", spParams);

                // PROMOTION_DRAWING_EVENT_GetNextAvailable
                DataSet result = new DataSet();
                spParams = new List <SqlParameter>();
                spParams.Add(new SqlParameter("@promoid", promotionId));
                spParams.Add(new SqlParameter("@bucketid", bucketId));
                spParams.Add(new SqlParameter("@drawingdate", drawingDateTime));
                result = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_EVENT_GetNextAvailable", spParams);
                if (result.Tables[0].Rows.Count == 0)
                {
                    // PROMOTION_DRAWING_ListByEvent
                    DataSet results = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    spParams.Add(new SqlParameter("@drawingdatetime", drawingDateTime));
                    results = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_ListByEvent_v2", spParams);

                    // PROMOTION_DRAWING_EVENT_GetNextAvailableForPromo
                    DataSet result2 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    result2 = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_EVENT_GetNextAvailableForPromo", spParams);

                    // PROMOTION_DRAWING_GetNextForEvent
                    DataSet result3 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    spParams.Add(new SqlParameter("@drawingdatetime", drawingDateTime));
                    result3 = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_GetNextForEvent", spParams);

                    // PROMOTION_DRUM_GetByKey
                    DataSet result4 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    result4 = DataAccess.ExecuteQuerySP("PROMOTION_DRUM_GetByKey", spParams);

                    // PROMOTION_DRUM_GetEntryCount
                    DataSet result5 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    result5 = DataAccess.ExecuteQuerySP("PROMOTION_DRUM_GetEntryCount", spParams);

                    // PROMOTION_DRUM_GetPlayerCount
                    DataSet result6 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    result6 = DataAccess.ExecuteQuerySP("PROMOTION_DRUM_GetPlayerCount", spParams);

                    // PROMOTION_DRAWING_ListByEvent
                    DataSet result7 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    spParams.Add(new SqlParameter("@drawingdatetime", drawingDateTime));
                    result7 = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_ListByEvent", spParams);

                    Int32 drawingId = Convert.ToInt32(result3.Tables[0].Rows[0]["DrawingID"].ToString());
                    // PROMOTION_DRAWING_GetCurrentWinner
                    DataSet result8 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    spParams.Add(new SqlParameter("@drawingid", drawingId));
                    result8 = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_GetCurrentWinner", spParams);

                    // PROMOTION_DRAWING_GetNextForEvent
                    DataSet result9 = new DataSet();
                    spParams = new List <SqlParameter>();
                    spParams.Add(new SqlParameter("@promoid", promotionId));
                    spParams.Add(new SqlParameter("@bucketid", bucketId));
                    spParams.Add(new SqlParameter("@drawingdatetime", drawingDateTime));
                    result9 = DataAccess.ExecuteQuerySP("PROMOTION_DRAWING_GetNextForEvent", spParams);
                    return(null);
                }
                else
                {
                    return(BusinessLogic.GetDrawingGroup(promotionId));
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }