public void MapUpdate(ref PlayerWeeklyActivities dbmodel, PlayerWeeklyActivityExt model)
        {
            dbmodel.PlayerWeeklyActivityID = model.PlayerWeeklyActivityID;
            //dbmodel.PlayerID = model.PlayerID;
            //dbmodel.ActivityDate = model.ActivityDate;

            dbmodel.Activity     = model.Activity;
            dbmodel.ActivityTime = model.ActivityTime;
            dbmodel.Completed    = model.Completed;
        }
        public long CreateOrUpdate(PlayerWeeklyActivityExt model, ref string Msg, ref bool status, Controller ctrl)
        {
            long PlayerWeeklyActivityID = 0;

            //Remove the last commna
            model.Activity = string.IsNullOrEmpty(model.Activity) == false?model.Activity.TrimEnd().TrimEnd(',') : null;

            if (model.PlayerWeeklyActivityID == 0)
            {
                try
                {
                    //TODO: Map to DB Object
                    var dbmodel = Map(model);
                    //TODO: Save DB Changes and Set the Return Primary Key ID
                    db.PlayerWeeklyActivities.Add(dbmodel);
                    db.SaveChanges();
                    //TOD: Add to Audit Log
                    AuditLog(ctrl, AuditAction.Create, model, null);

                    PlayerWeeklyActivityID = dbmodel.PlayerWeeklyActivityID;
                }
                catch (Exception ex)
                {
                    Msg    = ErrorHandling.HandleException(ex);
                    status = false;
                }
            }
            else
            {
                try
                {
                    var dbmodel     = db.PlayerWeeklyActivities.FirstOrDefault(p => p.PlayerWeeklyActivityID == model.PlayerWeeklyActivityID);
                    var ForAuditLog = Map(dbmodel);
                    //TODO: Map to DB Object
                    MapUpdate(ref dbmodel, model);
                    //TODO: Update DB Changes
                    db.SaveChanges();

                    //TOD: Add to Audit Log
                    AuditLog(ctrl, AuditAction.Update, ForAuditLog, model);

                    PlayerWeeklyActivityID = dbmodel.PlayerWeeklyActivityID;
                }
                catch (Exception ex)
                {
                    Msg    = ErrorHandling.HandleException(ex);
                    status = false;
                }
            }

            return(PlayerWeeklyActivityID);
        }
        public PlayerWeeklyActivityExt Map(PlayerWeeklyActivities model)
        {
            PlayerWeeklyActivityExt tblModel = new PlayerWeeklyActivityExt()
            {
                PlayerWeeklyActivityID = model.PlayerWeeklyActivityID,
                PlayerID     = model.PlayerID,
                ActivityDate = model.ActivityDate,
                Activity     = model.Activity,
                ActivityTime = model.ActivityTime,
                Completed    = model.Completed
            };

            return(tblModel);
        }
        /// <summary>
        /// Add the Action to Audit Log
        /// </summary>
        /// <param name="model">The Object for which this Auditlog took place</param>
        /// <param name="Action">"Added New User OR Updated User Details OR Deleted User"</param>

        private void AuditLog(Controller ctrl, AuditAction auditAction, PlayerWeeklyActivityExt dbmodel = null, PlayerWeeklyActivityExt model = null)
        {
            string AuditLogShortDesc = "", AuditLogLongDesc = "";

            StringBuilder sb = new StringBuilder();

            if (auditAction == AuditAction.Create) //Creating new Record
            {
                AuditLogShortDesc = AuditLogLongDesc = "New Player Weekly Activity has been Added PlayerID = " + dbmodel.PlayerID + " Activity Date = " + dbmodel.ActivityDate.ToString("dd/MM/yyyy");
            }
            else if (auditAction == AuditAction.Update)
            {
                AuditLogShortDesc = AuditLogLongDesc = "Player Weekly Activity has been Updated PlayerID = " + model.PlayerID + " DashboardURL = " + model.ActivityDate.ToString("dd/MM/yyyy");
            }
            else if (auditAction == AuditAction.Delete)
            {
                AuditLogShortDesc = AuditLogLongDesc = "Player Weekly Activity has been Deleted PlayerID = " + model.PlayerID + " DashboardURL = " + model.ActivityDate.ToString("dd/MM/yyyy");
            }

            SecurityUtils.AddAuditLog(AuditLogShortDesc, AuditLogLongDesc, ctrl);
        }
        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);
        }