<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="pwc.taxtech.atms.dao.UserRoleMapper">

    <resultMap id="UserRoleQuery" type="pwc.taxtech.atms.dpo.UserRoleQuery">
        <id column="ID" jdbcType="VARCHAR" property="id"/>
        <result column="USER_ID" jdbcType="VARCHAR" property="userId"/>
        <result column="USER_NAME" jdbcType="VARCHAR" property="userName"/>
        <result column="ROLE_ID" jdbcType="VARCHAR" property="roleId"/>
        <result column="ROLE_NAME" jdbcType="VARCHAR" property="roleName"/>
        <result column="SERVICE_TYPE_NAME" jdbcType="VARCHAR" property="serviceTypeName"/>
        <result column="SERVICE_TYPE_ID" jdbcType="VARCHAR" property="serviceTypeId"/>
        <result column="ROLE_CATEGORY_ID" jdbcType="VARCHAR" property="roleCategoryId"/>
        <result column="ROLE_CATETORY_NAME" jdbcType="VARCHAR" property="roleCatetoryName"/>
        <result column="ORG_ID" jdbcType="VARCHAR" property="orgId"/>
        <result column="ORG_NAME" jdbcType="VARCHAR" property="orgName"/>
        <result column="EMAIL" jdbcType="VARCHAR" property="email"/>
        <result column="STATUS" jdbcType="INTEGER" property="status"/>
    </resultMap>

    <select id="selectUserRoleQueryByServiceTypeId" parameterType="java.lang.String" resultMap="UserRoleQuery">
        SELECT
        UR.id AS ID,
        U.id AS USER_ID,
        U.user_name AS USER_NAME,
        UR.role_id AS ROLE_ID,
        R.name AS ROLE_NAME,
        S.name AS SERVICE_TYPE_NAME,
        S.id AS SERVICE_TYPE_ID,
        RC.id AS ROLE_CATEGORY_ID,
        RC.name AS ROLE_CATETORY_NAME,
        ORG.id AS ORG_ID,
        ORG.name AS ORG_NAME,
        U.email AS EMAIL,
        U.status AS STATUS
        FROM
        user U
        LEFT JOIN
        user_role UR
        ON
        U.id = UR.user_id
        LEFT JOIN
        role R
        ON UR.role_id = R.id
        LEFT JOIN
        service_type S
        ON
        S.id = R.service_type_id
        AND S.is_active = 1
        AND S.id = #{serviceTypeID}
        LEFT JOIN
        role_category RC
        ON
        RC.id = R.role_category_id
        AND RC.is_active = 1
        LEFT JOIN
        organization ORG
        ON
        U.organization_id = ORG.id
        WHERE
        U.status = 1
        AND U.is_super_admin = 0
        ORDER BY
        user_name
    </select>

    <resultMap id="UserOrgRoleDto" type="pwc.taxtech.atms.dpo.UserOrgRoleDto">
        <id column="ID" jdbcType="VARCHAR" property="id"/>
        <result column="USER_ID" jdbcType="VARCHAR" property="userId"/>
        <result column="ROLE_ID" jdbcType="VARCHAR" property="roleId"/>
        <result column="ROLE_NAME" jdbcType="VARCHAR" property="roleName"/>
    </resultMap>

    <select id="getOriginalRoleList" resultMap="UserOrgRoleDto">
        SELECT
        UR.user_id AS USER_ID,
        R.id AS ROLE_ID,
        R.name AS ROLE_NAME
        FROM
        user_role UR
        JOIN
        role R
        ON UR.role_id = R.id
    </select>

</mapper>