identity_merge.ftl

 1   <#--
 2     Macro: identityMerge
 3   
 4     Renders the UI for merging identities.
 5   
 6     The macro generates a column with actions and UI elements allowing the user to merge identities. 
 7     This macro makes use of filtered attributes and certain conditions to render buttons and 
 8     other UI components for each identity attribute.
 9   
 10     @param identity_to_keep The primary identity data object.
 11     @param identity_to_merge The secondary identity data object to be potentially merged into the primary identity.
 12     @param current_rule_code The code of the current rule in context.
 13     @param current_page The current page reference.
 14     @param service_contract A reference containing attribute definitions and other related data.
 15     
 16     @returns A rendered column for merging actions between identities.
 17     
 18     Usage:
 19       <@identityMerge />
 20   -->
 21   <#macro identityMerge>
 22       <div id="lutece-merge" class="p-0 m-0 position-absolute start-50 translate-middle-x z-2" style="width:100px;">
 23           <ul class="list-group list-group-flush">
 24               <li class="position-relative d-flex justify-content-center align-items-center" style="height:155px;">
 25                   <div class="position-absolute top-50 start-0 end-0 bg-dark border-top border-primary-subtle mediation-line-merge" style="z-index:-1"></div>
 26                   <div class="text-center w-100">
 27                       <a href="jsp/admin/plugins/identitymediation/IdentityDuplicate.jsp?action_swapIdentities&cuid=${identity_to_keep.customerId}&code=${current_rule_code}&page=${current_page}&identity-cuid-1=${identity_to_keep.customerId}&identity-cuid-2=${identity_to_merge.customerId}" class="btn btn-rounded border-primary-subtle btn-light m-auto mediation-btn-merge" data-bs-toggle="tooltip" data-bs-placement="top" title="Inverser">
 28                           <i class="ti ti-switch-horizontal"></i>
 29                       </a>
 30                   </div>
 31               </li>
 32               <#list service_contract.attributeDefinitions?filter(a -> a.attributeRight.readable) as readableAttr>
 33                   <li class="list-group-item text-center d-flex justify-content-center align-items-center border-0" data-name="${readableAttr.name}" style="min-height:55px">
 34                       <#if readableAttr.attributeRight.writable >
 35                           <#list identity_to_merge.attributes?filter(a -> a.key == readableAttr.keyName) as attrToMerge>
 36                               <#assign attrToKeep = (identity_to_keep.attributes?filter(a -> a.key == readableAttr.keyName)?first)!{} >
 37                               <#if ( !identity_to_keep.monParisActive && !identity_to_merge.monParisActive && ( attrToMerge.certificationLevel gte (attrToKeep.certificationLevel)!0 ) && ( !(attrToKeep?has_content) || (attrToKeep.value != attrToMerge.value) ) )
 38                                    || !(attrToKeep?has_content) >
 39                                   <div class="position-absolute top-50 start-0 end-0 bg-dark border-top border-primary-subtle mediation-line-merge" style="z-index:-1"></div>
 40                                   <div class="text-center w-100">
 41                                       <@button class='btn btn-rounded border-primary-subtle btn-light m-auto mediation-btn-merge' color='-' buttonIcon='arrow-left' params=' data-name="${readableAttr.name}" data-key="${attrToMerge.key}" data-value="${attrToMerge.value}" data-certif="${attrToMerge.certifier}" data-certifdate="${attrToMerge.certificationDate?date}" data-timestamp-certif="${attrToMerge.certificationDate?long}"' />
 42                                   </div>
 43                               </#if>
 44                           </#list>
 45                       </#if>
 46                   </li>
 47               </#list>
 48           </ul>
 49       </div>
 50   </#macro>