public List <vmWeeklyActivity> GetWeeklyActivityData(long PlayerID, DateTime ActivityDate, Controller ctrl)
        {
            var StartDateOfWeek = DateTimeExtensions.StartOfWeek(ActivityDate, DayOfWeek.Monday);
            var EndDateOfWeek   = StartDateOfWeek.AddDays(6);

            List <vmWeeklyActivity> ListOfViewModel = new List <vmWeeklyActivity>();

            for (DateTime loopDate = StartDateOfWeek; loopDate <= EndDateOfWeek; loopDate = loopDate.AddDays(1))
            {
                var data = db.PlayerWeeklyActivities.Where(m => m.PlayerID == PlayerID && m.ActivityDate == loopDate).OrderBy(o => o.PlayerWeeklyActivityID);
                if (data.Count() == 0)
                {
                    //Add it into DB and Load in the GUI after getting PlayerWeeklyActivityID

                    PlayerWeeklyActivityExt m = new PlayerWeeklyActivityExt()
                    {
                        PlayerID     = PlayerID,
                        ActivityDate = loopDate
                    };
                    string Msg    = "";
                    bool   status = true;

                    m.PlayerWeeklyActivityID = CreateOrUpdate(m, ref Msg, ref status, ctrl);

                    vmWeeklyActivity vmWeeklyAct = new vmWeeklyActivity()
                    {
                        PlayerWeeklyActivityID = m.PlayerWeeklyActivityID,
                        PlayerID     = m.PlayerID,
                        ActivityDate = m.ActivityDate
                    };

                    PlayerWeeklyActivityExt mAct = new PlayerWeeklyActivityExt()
                    {
                        PlayerWeeklyActivityID = m.PlayerWeeklyActivityID,
                        ActivityDate           = m.ActivityDate,
                        Activity     = "",
                        ActivityTime = 0,
                        Completed    = false
                    };

                    vmWeeklyAct.ListOfWeeklyActivities.Add(mAct);

                    ListOfViewModel.Add(vmWeeklyAct);
                }
                else
                {
                    foreach (var item in data)
                    {
                        if (ListOfViewModel.Any(m => m.ActivityDate == item.ActivityDate))
                        {
                            var model = ListOfViewModel.FirstOrDefault(m => m.ActivityDate == item.ActivityDate);

                            PlayerWeeklyActivityExt mAct = new PlayerWeeklyActivityExt()
                            {
                                PlayerWeeklyActivityID = item.PlayerWeeklyActivityID,
                                ActivityDate           = item.ActivityDate,
                                Activity     = item.Activity,
                                ActivityTime = item.ActivityTime,
                                Completed    = item.Completed
                            };

                            model.ListOfWeeklyActivities.Add(mAct);
                        }
                        else
                        {
                            vmWeeklyActivity m = new vmWeeklyActivity()
                            {
                                PlayerWeeklyActivityID = item.PlayerWeeklyActivityID,
                                PlayerID     = item.PlayerID,
                                ActivityDate = item.ActivityDate
                            };

                            PlayerWeeklyActivityExt mAct = new PlayerWeeklyActivityExt()
                            {
                                PlayerWeeklyActivityID = item.PlayerWeeklyActivityID,
                                ActivityDate           = item.ActivityDate,
                                Activity     = item.Activity,
                                ActivityTime = item.ActivityTime,
                                Completed    = item.Completed
                            };

                            m.ListOfWeeklyActivities.Add(mAct);

                            ListOfViewModel.Add(m);
                        }
                    }
                }
            }

            return(ListOfViewModel);
        }
        public List <WeeklyActivityCSV> CreateListOfActivities(ShareActivity model, Controller ctrl)
        {
            List <WeeklyActivityCSV> ListOfActivitiesCSV = new List <WeeklyActivityCSV>();

            if (model.ShareFrequencyID == 1) //Today
            {
                DateTime TodayDate = DateTime.Now.Date;

                var StartDateOfWeek = DateTimeExtensions.StartOfWeek(TodayDate, DayOfWeek.Monday);
                var EndDateOfWeek   = StartDateOfWeek.AddDays(6);

                var Activities = db.PlayerWeeklyActivities.Where(m => m.PlayerID == model.PlayerID && (m.ActivityDate >= StartDateOfWeek && m.ActivityDate <= EndDateOfWeek)).OrderBy(o => o.ActivityDate).ToList().Select(m => MAP_To_CSV(m)).ToList();

                for (DateTime loopDate = StartDateOfWeek; loopDate <= EndDateOfWeek; loopDate = loopDate.AddDays(1))
                {
                    if (Activities.Any(m => IsDateMatched(m.ActivityDate, loopDate)) == false)
                    {
                        WeeklyActivityCSV m = new WeeklyActivityCSV()
                        {
                            ActivityDate = loopDate.ToString("dd/MM/yyyy"),
                            Activity     = "",
                            ActivityTime = "",
                            Completed    = ""
                        };

                        Activities.Add(m);
                    }
                }

                ListOfActivitiesCSV.AddRange(Activities);
            }
            else if (model.ShareFrequencyID == 2) //Last 7 Days
            {
                var StartDateOfWeek = DateTimeExtensions.StartOfWeek(DateTime.Now.Date.AddDays(-7), DayOfWeek.Monday);
                var EndDateOfWeek   = StartDateOfWeek.AddDays(6);

                var Activities = db.PlayerWeeklyActivities.Where(m => m.PlayerID == model.PlayerID && (m.ActivityDate >= StartDateOfWeek && m.ActivityDate <= EndDateOfWeek)).OrderBy(o => o.ActivityDate).ToList().Select(m => MAP_To_CSV(m)).ToList();

                for (DateTime loopDate = StartDateOfWeek; loopDate <= EndDateOfWeek; loopDate = loopDate.AddDays(1))
                {
                    if (Activities.Any(m => IsDateMatched(m.ActivityDate, loopDate)) == false)
                    {
                        WeeklyActivityCSV m = new WeeklyActivityCSV()
                        {
                            ActivityDate = loopDate.ToString("dd/MM/yyyy"),
                            Activity     = "",
                            ActivityTime = "",
                            Completed    = ""
                        };

                        Activities.Add(m);
                    }
                }

                ListOfActivitiesCSV.AddRange(Activities);
            }
            else if (model.ShareFrequencyID == 3) //Last Month
            {
                var StartDateOfWeek = DateTimeExtensions.StartOfWeek(DateTime.Now.Date.AddDays(-30), DayOfWeek.Monday);
                var EndDateOfWeek   = DateTime.Now.Date;

                var Activities = db.PlayerWeeklyActivities.Where(m => m.PlayerID == model.PlayerID && (m.ActivityDate >= StartDateOfWeek && m.ActivityDate <= EndDateOfWeek)).OrderBy(o => o.ActivityDate).ToList().Select(m => MAP_To_CSV(m)).ToList();

                for (DateTime loopDate = StartDateOfWeek; loopDate <= EndDateOfWeek; loopDate = loopDate.AddDays(1))
                {
                    if (Activities.Any(m => IsDateMatched(m.ActivityDate, loopDate)) == false)
                    {
                        WeeklyActivityCSV m = new WeeklyActivityCSV()
                        {
                            ActivityDate = loopDate.ToString("dd/MM/yyyy"),
                            Activity     = "",
                            ActivityTime = "",
                            Completed    = ""
                        };

                        Activities.Add(m);
                    }
                }

                ListOfActivitiesCSV.AddRange(Activities);
            }
            else if (model.ShareFrequencyID == 4) //Date Range
            {
                var StartDate = model.Activity_ShareDateFrom.Value;
                var EndDate   = model.Activity_ShareDateTo.Value;

                var Activities = db.PlayerWeeklyActivities.Where(m => m.PlayerID == model.PlayerID && (m.ActivityDate >= StartDate && m.ActivityDate <= EndDate)).OrderBy(o => o.ActivityDate).ToList().Select(m => MAP_To_CSV(m)).ToList();

                for (DateTime loopDate = StartDate; loopDate <= EndDate; loopDate = loopDate.AddDays(1))
                {
                    if (Activities.Any(m => IsDateMatched(m.ActivityDate, loopDate)) == false)
                    {
                        WeeklyActivityCSV m = new WeeklyActivityCSV()
                        {
                            ActivityDate = loopDate.ToString("dd/MM/yyyy"),
                            Activity     = "",
                            ActivityTime = "",
                            Completed    = ""
                        };

                        Activities.Add(m);
                    }
                }

                ListOfActivitiesCSV.AddRange(Activities);
            }

            return(ListOfActivitiesCSV);
        }