public ActionResult Group(int id = 0)
 {
     using (var db = new Entities())
     {
         var model = new CreateGroupModel();
         model.roles = db.asp_Role.Select(x => new RoleData { name = x.name, description = x.description }).ToList();
         var data = db.asp_Group.FirstOrDefault(x => x.id == id);
         if (data != null)
         {
             model.id = data.id;
             model.name = data.name;
             model.description = data.description;
             foreach (var item in model.roles)
             {
                 if (data.asp_Role.Any(x => x.name == item.name))
                 {
                     item.check = true;
                 }
             }
         }
         return PartialView(model);
     }
 }
 public ActionResult Group(CreateGroupModel model)
 {
     if (ModelState.IsValid)
     {
         using (var db = new Entities())
         {
             var data = db.asp_Group.FirstOrDefault(x => x.id == model.id);
             if (data == null)
             {
                 data = new asp_Group
                 {
                     name = model.name,
                     description = model.description,
                     status = 0
                 };
                 foreach (var item in model.roles)
                 {
                     if (item.check && !data.asp_Role.Any(x => x.name == item.name))
                     {
                         var roleItem = db.asp_Role.FirstOrDefault(x => x.name == item.name);
                         if (roleItem != null)
                         {
                             data.asp_Role.Add(roleItem);
                         }
                     }
                     else if (!item.check && data.asp_Role.Any(x => x.name == item.name))
                     {
                         var roleItem = db.asp_Role.FirstOrDefault(x => x.name == item.name);
                         if (roleItem != null)
                         {
                             data.asp_Role.Remove(roleItem);
                         }
                     }
                 }
                 db.asp_Group.Add(data);
                 db.SaveChanges();                        
                 TempData["mess"] = "Đã thêm dữ liệu thành công";
             }
             else
             {
                 data.name = model.name;
                 data.description = model.description;
                 foreach (var item in model.roles)
                 {
                     if (item.check && !data.asp_Role.Any(x => x.name == item.name))
                     {
                         var roleItem = db.asp_Role.FirstOrDefault(x => x.name == item.name);
                         if (roleItem != null)
                         {
                             data.asp_Role.Add(roleItem);
                         }
                     }
                     else if (!item.check && data.asp_Role.Any(x => x.name == item.name))
                     {
                         var roleItem = db.asp_Role.FirstOrDefault(x => x.name == item.name);
                         if (roleItem != null)
                         {
                             data.asp_Role.Remove(roleItem);
                         }
                     }
                 }
                 db.SaveChanges();                        
                 TempData["mess"] = "Đã cập nhật dữ liệu thành công";
             }
         }
     }
     return RedirectToAction("ListGroup", new { id = model.id });
 }