public ActionResult _Accesses(AccessViewModel AVM, int group_id) // term id
        {
            checkLogin();

            AVM.groupUserlist = new List <GroupUserView>();
            AVM.groupRights   = new List <USER_GROUP_RIGHT>();
            AVM.SelectedGroup = group_id;

            List <GROUP_RIGHT> rights = DBS.findALLRecords <GROUP_RIGHT>();
            List <QE_USER>     user   = DBS.findActiveRecords <QE_USER>();

            //gen user list
            List <USER_GROUP_USER_LIST> groupUserList = DBS.findALLRecords <USER_GROUP_USER_LIST>();

            foreach (var u in user)
            {
                GroupUserView view = new GroupUserView(u);
                view.USER_GROUP = group_id;
                view.QE_USER    = u.ID;
                view.user_name  = u.USER_NAME;
                if (groupUserList != null)
                {
                    if (groupUserList.Exists(g => (g.USER_GROUP == group_id) && (g.QE_USER == u.ID)))
                    {
                        USER_GROUP_USER_LIST foundList = groupUserList.Where(g => (g.USER_GROUP == group_id) && (g.QE_USER == u.ID)).FirstOrDefault();
                        view.ID         = foundList.ID;
                        view.QE_USER    = foundList.QE_USER;
                        view.user_name  = u.USER_NAME;
                        view.USER_GROUP = foundList.USER_GROUP;
                        view.contain    = true;
                    }
                }
                AVM.groupUserlist.Add(view);
            }

            //gen right list
            List <USER_GROUP_RIGHT> groupRightList = DBS.findALLRecords <USER_GROUP_RIGHT>();

            foreach (var r in rights)
            {
                USER_GROUP_RIGHT right = new USER_GROUP_RIGHT();
                right.RIGHT_ID   = r.ID;
                right.RIGHT_NAME = r.RIGHT_NAME;
                right.USER_GROUP = group_id;
                if (groupRightList != null)
                {
                    if (groupRightList.Exists(g => (g.USER_GROUP == group_id) && (g.RIGHT_ID == r.ID)))
                    {
                        right = groupRightList.Where(g => g.USER_GROUP == group_id && (g.RIGHT_ID == r.ID)).FirstOrDefault();
                    }
                }
                AVM.groupRights.Add(right);
            }


            ModelState.Clear();
            return(View("Accesses", AVM));
        }
        public ActionResult Accesses(AccessViewModel AVM)
        {
            checkLogin();

            bool result = true;

            //delete unwanted group
            foreach (var g in AVM.inactiveList)
            {
                if (result && g > 0)
                {
                    result = false;
                    result = DBS.removeRecord <USER_GROUP>(g);
                    result = DBS.removeRecord <USER_GROUP_RIGHT>(g);
                    result = DBS.removeRecord <USER_GROUP_USER_LIST>(g);
                }
            }

            //add new group
            if (result)
            {
                foreach (var g in AVM.group)
                {
                    if (result && g.ID < 1)
                    {
                        g.ADD_BY   = CP.userID;
                        g.ADD_DATE = DateTime.Now;
                        result     = DBS.addRecord(g);
                    }
                }
            }

            //right change for the group
            if (result)
            {
                foreach (var r in AVM.groupRights)
                {
                    if (result)
                    {
                        if (r.ID < 1)
                        {
                            r.ADD_BY   = CP.userID;
                            r.ADD_DATE = DateTime.Now;
                            result     = DBS.addRecord(r);
                        }
                        else
                        {
                            r.MODIFY_BY   = CP.userID;
                            r.MODIFY_DATE = DateTime.Now;
                            result        = DBS.updateRecord(r);
                        }
                    }
                }
            }

            //change user for the group
            if (result)
            {
                foreach (var u in AVM.groupUserlist)
                {
                    if (result)
                    {
                        if (u.contain && u.ID < 1)
                        {
                            USER_GROUP_USER_LIST user = new USER_GROUP_USER_LIST()
                            {
                                QE_USER    = u.QE_USER,
                                USER_GROUP = u.USER_GROUP
                            };

                            result = DBS.addRecord(user);
                        }
                        else if (!u.contain && u.ID > 0)
                        {
                            result = DBS.removeRecord <USER_GROUP_USER_LIST>(u.ID);
                        }
                    }
                }
            }

            ModelState.Clear();
            if (result)
            {
                TempData[Constant.msg_success] = Constant.ChangeSucceed;
            }
            else
            {
                TempData[Constant.msg_error] = Constant.ChangeFailed;
            }
            return(_Accesses(AVM, AVM.SelectedGroup));
        }