public ActionResult Create()
        {
            //Get Permissions
            var v = from b in db.Permissions
                    select new
            {
                b.ID,
                b.GroupName,
                Name    = b.ControllerName + " - " + b.ActionName,
                Checked = false,
                b.OnlyAdminHidden
            };

            v = v.Where(b => b.OnlyAdminHidden == false);
            v = v.OrderBy("Name asc");
            var Permissions            = v.ToList();
            var PermissionCheckBoxList = new List <CheckBoxViewModel>();

            foreach (var item in Permissions)
            {
                PermissionCheckBoxList.Add(new CheckBoxViewModel {
                    ID = item.ID, GroupName = item.GroupName, Name = item.Name, Checked = item.Checked
                });
            }

            //Add data to the SecurityTemplateViewModel
            SecurityTemplateViewModel stvm = new SecurityTemplateViewModel
            {
                Permissions = PermissionCheckBoxList
            };

            return(View(stvm));
        }
        public ActionResult Edit(long?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            SecurityTemplate securityTemplate = db.SecurityTemplates.Where(st => st.ID == id && st.ID > 1).SingleOrDefault();

            if (securityTemplate == null)
            {
                return(HttpNotFound());
            }

            //Get Permissions
            var v = from b in db.Permissions
                    select new
            {
                b.ID,
                b.GroupName,
                Name = b.ControllerName + " - " + b.ActionName,
                b.OnlyAdminHidden,
                Checked = ((from bou in db.SecurityTemplatePermissions
                            where (bou.SecurityTemplateID == id) & (bou.PermissionID == b.ID)
                            select bou).Count() > 0)
            };

            v = v.Where(b => b.OnlyAdminHidden == false);
            v = v.OrderBy("Name asc");
            var Permissions            = v.ToList();
            var PermissionCheckBoxList = new List <CheckBoxViewModel>();

            foreach (var item in Permissions)
            {
                PermissionCheckBoxList.Add(new CheckBoxViewModel {
                    ID = item.ID, GroupName = item.GroupName, Name = item.Name, Checked = item.Checked
                });
            }

            //Add data to the SecurityTemplateViewModel
            SecurityTemplateViewModel stvm = new SecurityTemplateViewModel
            {
                SecurityTemplateName = securityTemplate.SecurityTemplateName,
                IsActive             = securityTemplate.IsActive,
                Permissions          = PermissionCheckBoxList
            };

            return(View(stvm));
        }
        public ActionResult Edit([Bind(Include = "ID,SecurityTemplateName,IsActive,Permissions")] SecurityTemplateViewModel securityTemplateVM)
        {
            //Get the SecurityTemplate we were editting
            SecurityTemplate securityTemplate = db.SecurityTemplates.Find(securityTemplateVM.ID);

            if (ModelState.IsValid)
            {
                //Update the actual SecurityTemplate
                securityTemplate.SecurityTemplateName = securityTemplateVM.SecurityTemplateName;
                securityTemplate.IsActive             = securityTemplateVM.IsActive;

                if (db.Permissions.Count() > 0)
                {
                    //delete existing record relations
                    foreach (var item in db.SecurityTemplatePermissions.Where(bu => bu.SecurityTemplateID == securityTemplateVM.ID))
                    {
                        db.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                    }

                    //Permissions Add
                    foreach (var item in securityTemplateVM.Permissions)
                    {
                        if (item.Checked)
                        {
                            db.SecurityTemplatePermissions.Add(new SecurityTemplatePermission {
                                SecurityTemplateID = securityTemplate.ID, PermissionID = item.ID, CreatedDate = DateTime.Now
                            });
                        }
                    }
                }

                //db.Entry(user).State = EntityState.Modified;
                db.SaveChanges();

                Session["siteMsgTyp"] = "success";
                Session["siteMsg"]    = "The Security Template was modified successfully.";
                return(RedirectToAction("Index"));
            }

            //Get Permissions
            var v = from b in db.Permissions
                    select new
            {
                b.ID,
                b.GroupName,
                Name = b.ControllerName + " - " + b.ActionName,
                b.OnlyAdminHidden,
                Checked = ((from bou in db.SecurityTemplatePermissions
                            where (bou.SecurityTemplateID == securityTemplateVM.ID) & (bou.PermissionID == b.ID)
                            select bou).Count() > 0)
            };

            v = v.Where(b => b.OnlyAdminHidden == false);
            v = v.OrderBy("Name asc");
            var Permissions            = v.ToList();
            var PermissionCheckBoxList = new List <CheckBoxViewModel>();

            foreach (var item in Permissions)
            {
                PermissionCheckBoxList.Add(new CheckBoxViewModel {
                    ID = item.ID, GroupName = item.GroupName, Name = item.Name, Checked = item.Checked
                });
            }

            //Add data to the SecurityTemplateViewModel
            SecurityTemplateViewModel stvm = new SecurityTemplateViewModel
            {
                SecurityTemplateName = securityTemplateVM.SecurityTemplateName,
                IsActive             = securityTemplateVM.IsActive,
                Permissions          = PermissionCheckBoxList
            };

            return(View(stvm));
        }
        public ActionResult Create([Bind(Include = "ID,SecurityTemplateName,IsActive,Permissions")] SecurityTemplateViewModel securityTemplateVM)
        {
            if (ModelState.IsValid)
            {
                //Create the SecurityTemplate
                SecurityTemplate securityTemplate = new SecurityTemplate
                {
                    SecurityTemplateName = securityTemplateVM.SecurityTemplateName,
                    IsActive             = securityTemplateVM.IsActive
                };

                db.SecurityTemplates.Add(securityTemplate);
                db.SaveChanges();

                if (db.Permissions.Count() > 0)
                {
                    //Permissions Add
                    foreach (var item in securityTemplateVM.Permissions)
                    {
                        if (item.Checked)
                        {
                            db.SecurityTemplatePermissions.Add(new SecurityTemplatePermission {
                                SecurityTemplateID = securityTemplate.ID, PermissionID = item.ID, CreatedDate = DateTime.Now
                            });
                        }
                    }
                }

                //db.Entry(user).State = EntityState.Modified;
                db.SaveChanges();

                Session["siteMsgTyp"] = "success";
                Session["siteMsg"]    = "The Security Template was added successfully.";
                return(RedirectToAction("Index"));
            }

            //Get Permissions
            var v = from b in db.Permissions
                    select new
            {
                b.ID,
                b.GroupName,
                Name    = b.ControllerName + " - " + b.ActionName,
                Checked = false,
                b.OnlyAdminHidden
            };

            v = v.Where(b => b.OnlyAdminHidden == false);
            v = v.OrderBy("Name asc");
            var Permissions            = v.ToList();
            var PermissionCheckBoxList = new List <CheckBoxViewModel>();

            foreach (var item in Permissions)
            {
                PermissionCheckBoxList.Add(new CheckBoxViewModel {
                    ID = item.ID, GroupName = item.GroupName, Name = item.Name, Checked = item.Checked
                });
            }

            //Add data to the SecurityTemplateViewModel
            SecurityTemplateViewModel stvm = new SecurityTemplateViewModel
            {
                Permissions = PermissionCheckBoxList
            };

            return(View(stvm));
        }