public bool SendChallengeStartNotification(ChallangeIdModel model)
        {
            bool res  = false;
            var  data = entities.Challanges.Where(x => x.IsAccepted == true && x.ChallangeId == model.ChallangeId).ToList();

            foreach (var item in data)
            {
                var FCM = entities.Users.Where(x => x.UserID == item.UserId).FirstOrDefault();
                if (FCM.FCMToken != null && item.IsAdmin != true)
                {
                    string ChallengeDateTime = string.Format("{0:dd MMMM, yyyy hh:mm tt}", item.StartDateTime);
                    var    result            = FCMPushNotification.SendNotificationFromFirebaseCloud(FCM.FCMToken, ChallengeDateTime);
                    if (result.success == 1)
                    {
                        res = true;
                    }
                    else
                    {
                        res = false;
                        break;
                    }
                }
            }
            return(res);
        }
        public WinnerUserModel GetChallengeTime(ChallangeIdModel model)
        {
            var WinUser = entities.Challanges.Where(x => x.ChallangeId == model.ChallangeId && x.IsWinner == true).FirstOrDefault();

            if (WinUser == null)
            {
                var data = entities.Challanges.Where(x => x.ChallangeId == model.ChallangeId && x.IsAdmin == true).FirstOrDefault();

                if (data != null)
                {
                    return(new WinnerUserModel()
                    {
                        ChallangeStartDateTime = string.Format("{0:MMMM dd, yyyy HH:mm:ss}", data.ChallangeStartDateTime),
                        IsStatus = false
                    });
                }
                else
                {
                    return(null);
                }
            }
            return(new WinnerUserModel()
            {
                ChallangeStartDateTime = string.Format("{0:MMMM dd, yyyy HH:mm:ss}", WinUser.ChallangeStartDateTime),
                IsStatus = true,
                Phone = WinUser.Phone,
                Name = WinUser.Name
            });
        }
        public WinnerUserModel SetTemporaryWinner(ChallangeIdModel model)
        {
            var data = entities.Challanges.Where(x => x.ChallangeId == model.ChallangeId && x.IsAccepted == true).ToList();


            var TempWinUser = data.Where(x => x.TemporaryWinner == true).FirstOrDefault();

            if (TempWinUser == null)
            {
                string RandomUser = GeneralFunctions.GetRandomTemporaryUser(data.Count());
                int    count      = 0;
                foreach (var item in data)
                {
                    if (count == Convert.ToInt32(RandomUser))
                    {
                        item.TemporaryWinner = true;
                    }
                    else
                    {
                        item.TemporaryWinner = false;
                    }
                    entities.SaveChanges();
                    count++;
                }
            }
            TempWinUser = data.Where(x => x.TemporaryWinner == true).FirstOrDefault();
            return(new WinnerUserModel()
            {
                Phone = TempWinUser.Phone
            });
        }
        public ChallangeListsModel GetChallangersList(ChallangeIdModel model)
        {
            var data = entities.Challanges.Where(x => x.ChallangeId == model.ChallangeId).ToList();
            ChallangeListsModel        challangeListsModel  = new ChallangeListsModel();
            List <ChallangesListModel> challangesListModels = new List <ChallangesListModel>();
            int TotalPoints = 0;

            foreach (var item in data)
            {
                var CLD = new ChallangesListModel();
                CLD.UserId      = item.UserId;
                CLD.ChallangeId = item.ChallangeId;
                CLD.Name        = item.Name;
                CLD.Phone       = item.Phone;
                CLD.IsAdmin     = item.IsAdmin;
                CLD.IsAccepted  = item.IsAccepted;
                CLD.IsRejected  = item.IsRejected;
                CLD.Points      = item.Points;
                TotalPoints     = Convert.ToInt32(TotalPoints + item.Points);
                challangesListModels.Add(CLD);
                if ((bool)item.IsAdmin)
                {
                    challangeListsModel.AdminPoints        = (int)item.Points;
                    challangeListsModel.MinimumEntryPoints = item.MinimumEntryPoints != null ? (int)item.MinimumEntryPoints : 0;
                }
            }
            GeneralFunctions general     = new GeneralFunctions();
            EaningHeadModel  Challangers = new EaningHeadModel();

            Challangers = general.getEarningHeads();
            challangeListsModel.challangesLists        = challangesListModels;
            challangeListsModel.TotalPoints            = TotalPoints;
            challangeListsModel.MinimumChallangerUsers = Challangers.MinimumChallangerUsers;
            return(challangeListsModel);
        }
        public bool DeleteSavedChallenge(ChallangeIdModel model)
        {
            var data = entities.Database.ExecuteSqlCommand("Delete Challange where ChallangeId=" + model.ChallangeId);

            if (data > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public string SetStartingChallengeTime(ChallangeIdModel model)
        {
            var ChallengeStartDateTime = DateTime.UtcNow.AddHours(5.00).AddMinutes(32.00);
            var data = entities.Database.ExecuteSqlCommand("Update Challange  set ChallangeStartDateTime='" + ChallengeStartDateTime + "'where ChallangeId=" + model.ChallangeId);

            if (data > 0)
            {
                return(string.Format("{0:dd MMMM, yyyy hh:mm tt}", ChallengeStartDateTime));
            }
            else
            {
                return(null);
            }
        }
        public WinnerUserModel SetWinnerUser(ChallangeIdModel model)
        {
            var data   = entities.Challanges.Where(x => x.ChallangeId == model.ChallangeId && x.TemporaryWinner == true).FirstOrDefault();
            var winner = new WinnerUserModel();

            if (data.IsWinner != true)
            {
                SetChallangeResult(new ChallangeModel()
                {
                    UserId      = data.UserId,
                    ChallangeId = data.ChallangeId
                });
                winner.IsStatus = true;
            }

            winner.ChallangeStartDateTime = string.Format("{0:dd MMMM, yyyy HH:mm:ss}", data.ChallangeStartDateTime);
            winner.Phone = data.Phone;
            winner.Name  = data.Name;
            return(winner);
        }