/**
   * Search categories.
   *
   * @param key the key word
   */
  public static List<ReportingCategory> getReportingCategoryAsListByKeywords(String key) {

    String sql =
        "SELECT rc.id FROM `reporting_category` rc LEFT OUTER JOIN `i18n_messages` im ON im.key = rc.name WHERE rc.deleted = 0";

    sql +=
        " AND (im.language = '"
            + Http.Context.current().lang().code()
            + "' OR im.language IS NULL)";

    sql += " AND (rc.name LIKE \"" + key + "%\" OR im.value LIKE \"" + key + "%\") ";

    RawSql rawSql = RawSqlBuilder.parse(sql).columnMapping("rc.id", "id").create();

    return findReportingCategory.query().setRawSql(rawSql).findList();
  }