public JsonResult EditUserGroupPrivilege(UserGroupPrivilegeViewModel request)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                var privileges = _context.UserGroupPrivileges.FirstOrDefault(p => p.Id == request.Id);
                if (privileges == null)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        Message = "Could not find the privilege"
                    }));
                }
                privileges.Action        = request.Action;
                privileges.PrivilegeName = request.PrivilegeName;
                privileges.Role          = request.Role;

                _context.Update(privileges);
                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Successful"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Server Error, Please try again",
                    Error = new Error(ex)
                }));
            }
        }
        public JsonResult SaveUserGroupPrivilege(UserGroupPrivilegeViewModel request)
        {
            try
            {
                var token = _tokenValidator.Validate(HttpContext);
                if (!token.Success)
                {
                    return(Json(new ReturnData <string>
                    {
                        Success = false,
                        NotAuthenticated = true,
                        Message = $"Unauthorized:-{token.Message}",
                    }));
                }
                if (!string.IsNullOrEmpty(request.PrivilegeName))
                {
                    var userGroupPrivilege = new UserGroupPrivilege
                    {
                        PrivilegeName = request.PrivilegeName,
                        Action        = request.Action,
                        Role          = request.Role
                    };
                    var privilegeExists = _context.UserGroupPrivileges.Any(p => p.Action == request.Action);
                    if (privilegeExists)
                    {
                        return(Json(new ReturnData <string>
                        {
                            Success = false,
                            Message = "Both privilege name and action must be unique"
                        }));
                    }

                    var message = "";
                    if (request.Id.HasValue && request.Id.Value > 0)
                    {
                        userGroupPrivilege.Id = request.Id.Value;
                        _context.UserGroupPrivileges.Update(userGroupPrivilege);
                        message = "User group privilege updated successfully";
                    }
                    else
                    {
                        _context.UserGroupPrivileges.Add(userGroupPrivilege);
                        message = "User group privilege saved successfully";
                    }

                    _context.SaveChanges();

                    return(Json(new ReturnData <string>
                    {
                        Success = true,
                        Message = message
                    }));
                }

                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Privilege name can not be empty"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }