<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://xmlns.jcp.org/jsf/html"
                xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

    <!--
        Composant réutilisable: Barre de Recherche Utilisateur (WOU/DRY Pattern)
        
        Auteur: Lions User Manager
        Version: 1.0.0
        Description: Barre de recherche avancée pour utilisateurs
        
        Paramètres:
        - searchCriteria: UserSearchCriteriaDTO (requis) - Critères de recherche
        - searchAction: String (requis) - Action à exécuter lors de la recherche
        - update: String (défaut: "@form") - Composants à mettre à jour
        - showAdvanced: Boolean (défaut: false) - Afficher les options avancées
        - showRealmFilter: Boolean (défaut: true) - Afficher le filtre realm
        - showStatusFilter: Boolean (défaut: true) - Afficher le filtre statut
        - showRoleFilter: Boolean (défaut: true) - Afficher le filtre rôle
        - formId: String (défaut: "searchForm") - ID du formulaire
        - useParentForm: Boolean (défaut: false) - Si true, n'crée pas de formulaire (utilise le formulaire parent)
        
        Exemples d'utilisation:
        
        1. Recherche simple:
        <ui:include src="/templates/components/user-management/user-search-bar.xhtml">
            <ui:param name="searchCriteria" value="#{userBean.searchCriteria}" />
            <ui:param name="searchAction" value="#{userBean.search}" />
            <ui:param name="update" value="userTable" />
        </ui:include>
        
        2. Recherche avec formulaire parent:
        <h:form id="formUsers">
            <ui:include src="/templates/components/user-management/user-search-bar.xhtml">
                <ui:param name="searchCriteria" value="#{userBean.searchCriteria}" />
                <ui:param name="searchAction" value="#{userBean.search}" />
                <ui:param name="update" value="userTable" />
                <ui:param name="useParentForm" value="true" />
            </ui:include>
        </h:form>
    -->
    
    <c:set var="formId" value="#{empty formId ? 'searchForm' : formId}" />
    <c:set var="update" value="#{empty update ? '@form' : update}" />
    <c:set var="showAdvanced" value="#{empty showAdvanced ? false : showAdvanced}" />
    <c:set var="showRealmFilter" value="#{empty showRealmFilter ? true : showRealmFilter}" />
    <c:set var="showStatusFilter" value="#{empty showStatusFilter ? true : showStatusFilter}" />
    <c:set var="showRoleFilter" value="#{empty showRoleFilter ? true : showRoleFilter}" />
    <c:set var="useParentForm" value="#{empty useParentForm ? false : useParentForm}" />
    
    <c:choose>
        <c:when test="#{useParentForm}">
            <!-- Utiliser le formulaire parent - pas de formulaire ici -->
            <ui:include src="/templates/components/user-management/user-search-bar-content.xhtml">
                <ui:param name="searchCriteria" value="#{searchCriteria}" />
                <ui:param name="searchAction" value="#{searchAction}" />
                <ui:param name="update" value="#{update}" />
                <ui:param name="showAdvanced" value="#{showAdvanced}" />
                <ui:param name="showRealmFilter" value="#{showRealmFilter}" />
                <ui:param name="showStatusFilter" value="#{showStatusFilter}" />
                <ui:param name="showRoleFilter" value="#{showRoleFilter}" />
            </ui:include>
        </c:when>
        <c:otherwise>
            <!-- Créer son propre formulaire -->
            <h:form id="#{formId}">
                <ui:include src="/templates/components/user-management/user-search-bar-content.xhtml">
                    <ui:param name="searchCriteria" value="#{searchCriteria}" />
                    <ui:param name="searchAction" value="#{searchAction}" />
                    <ui:param name="update" value="#{update}" />
                    <ui:param name="showAdvanced" value="#{showAdvanced}" />
                    <ui:param name="showRealmFilter" value="#{showRealmFilter}" />
                    <ui:param name="showStatusFilter" value="#{showStatusFilter}" />
                    <ui:param name="showRoleFilter" value="#{showRoleFilter}" />
                </ui:include>
            </h:form>
        </c:otherwise>
    </c:choose>
    
</ui:composition>
