private string GetFieldPermission(PERMISSION_RES per_type)
 {
     switch (per_type)
     {
         case PERMISSION_RES.CREATE:
             return "ISCREATE_BIT";
         case PERMISSION_RES.READ:
             return "ISREAD_BIT";
         case PERMISSION_RES.UPDATE:
             return "ISUPDATE_BIT";
         case PERMISSION_RES.DELETE:
             return "ISDELETE_BIT";
         default:
             return "ISREAD_BIT";
     }
 }
 /// <summary>
 /// Trả về danh sách tài nguyên theo ID mà người dùng chỉ định có quyền.
 /// </summary>
 /// <param name="UserID">ID người dùng</param>
 /// <param name="per_type">Loại quyền</param>
 /// <returns></returns>
 public long[] _getPermissionResIDs(long UserID, PERMISSION_RES per_type)
 {
     try
     {
         DataSet ds = new DataSet();
         ds = HelpDB.getDatabase().LoadDataSet(
             @"select id
             from (select tn.id from " + this._DMTableResName + @" tn
                 inner join " + this._PerTableResGroupName + " u_ntn on tn."
                              + this._RefFieldDMResName + "=u_ntn."
                              + this._RefFieldPerResGroupName
             + @" where " + GetFieldPermission(per_type) + @"='Y' and userid=" + UserID + @"
             union
             select u_tn." + this._RefFieldPerResName + @" as id
             from " + this._PerTableResName + @" u_tn
             where " + GetFieldPermission(per_type) + @"='Y' and userid=" + UserID + ")");
         if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
         {
             List<long> list = new List<long>();
             foreach (DataRow row in ds.Tables[0].Rows)
                 list.Add(HelpNumber.ParseInt64(row[0]));
             return list.ToArray();
         }
         return null;
     }
     catch
     {
         return null;
     }
 }
 /// <summary>
 /// Trả về danh sách tài nguyên theo ID mà người dùng hiện hành có quyền.
 /// </summary>
 /// <param name="per_type">Loại quyền</param>
 /// <returns></returns>
 public long[] _getPermissionResIDs(PERMISSION_RES per_type)
 {
     switch (per_type)
     {
         case PERMISSION_RES.CREATE:
             return _PerRes_CREATE_Ids;
         case PERMISSION_RES.READ:
             return _PerRes_READ_Ids;
         case PERMISSION_RES.UPDATE:
             return _PerRes_UPDATE_Ids;
         case PERMISSION_RES.DELETE:
             return _PerRes_DELETE_Ids;
         default:
             return _PerRes_READ_Ids;
     }
 }
 /// <summary>
 /// Trả về danh sách nhóm tài nguyên theo ID mà người dùng chỉ định có quyền.
 /// </summary>
 /// <param name="UserID">ID người dùng</param>
 /// <param name="per_type">Loại quyền</param>
 /// <returns></returns>
 public long[] _getPermissionResGroupIDs(long UserID, PERMISSION_RES per_type)
 {
     try
     {
         DataSet ds = new DataSet();
         ds = HelpDB.getDatabase().LoadDataSet(
             "select " + this._RefFieldPerResGroupName + " from " + this._PerTableResGroupName
             + " where userid=" + UserID + " and " + GetFieldPermission(per_type) + "='Y'");
         if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
         {
             List<long> list = new List<long>();
             foreach (DataRow row in ds.Tables[0].Rows)
                 list.Add(HelpNumber.ParseInt64(row[0]));
             return list.ToArray();
         }
         return null;
     }
     catch
     {
         return null;
     }
 }
 /// <summary>
 /// Kiểm tra người dùng chỉ định có quyền trên 1 nhóm tài nguyên cụ thể hay không.
 /// </summary>
 /// <param name="UserID">ID người dùng</param>
 /// <param name="ResGroupID">ID nhóm tài nguyên</param>
 /// <param name="per_type">Loại quyền</param>
 /// <returns></returns>
 public bool _checkPermissionResGroup(long UserID, long ResGroupID, PERMISSION_RES per_type)
 {
     try
     {
         DataSet ds = new DataSet();
         ds = HelpDB.getDatabase().LoadDataSet(
             "select * from " + this._PerTableResGroupName
             + " where userid=" + UserID
             + " and " + this._RefFieldPerResGroupName + "=" + ResGroupID
             + " and " + GetFieldPermission(per_type) + "='Y'");
         if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
             return true;
         return false;
     }
     catch
     {
         return false;
     }
 }
 /// <summary>
 /// Kiểm tra người dùng hiện hành có quyền trên 1 nhóm tài nguyên cụ thể hay không.
 /// </summary>
 /// <param name="ResGroupID">ID nhóm tài nguyên</param>
 /// <param name="per_type">Loại quyền</param>
 /// <returns></returns>
 public bool _checkPermissionResGroup(long ResGroupID, PERMISSION_RES per_type)
 {
     return _checkPermissionResGroup(FrameworkParams.currentUser.id, ResGroupID, per_type);
 }