<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="https://jakarta.ee/xml/ns/jakartaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
                                  https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd"
              version="4.0">

    <name>Lions User Manager</name>

    <factory>
        <exception-handler-factory>dev.lions.user.manager.client.exception.ViewExpiredExceptionHandlerFactory</exception-handler-factory>
    </factory>

    <application>
        <locale-config>
            <default-locale>fr</default-locale>
            <supported-locale>fr</supported-locale>
            <supported-locale>en</supported-locale>
        </locale-config>
    </application>

    <navigation-rule>
        <from-view-id>*</from-view-id>

        <!-- ================================================================
             DASHBOARD & ACCUEIL
             ================================================================ -->
        <navigation-case>
            <description>Page d'accueil / Dashboard</description>
            <from-outcome>userManagerDashboardPage</from-outcome>
            <to-view-id>/pages/user-manager/dashboard.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers dashboard</description>
            <from-outcome>/pages/user-manager/dashboard</from-outcome>
            <to-view-id>/pages/user-manager/dashboard.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <!-- ================================================================
             GESTION DES UTILISATEURS
             ================================================================ -->
        <navigation-case>
            <description>Page de liste des utilisateurs</description>
            <from-outcome>userListPage</from-outcome>
            <to-view-id>/pages/user-manager/users/list.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers liste utilisateurs</description>
            <from-outcome>/pages/user-manager/users/list</from-outcome>
            <to-view-id>/pages/user-manager/users/list.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Page de création d'utilisateur</description>
            <from-outcome>userCreatePage</from-outcome>
            <to-view-id>/pages/user-manager/users/create.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers création utilisateur</description>
            <from-outcome>/pages/user-manager/users/create</from-outcome>
            <to-view-id>/pages/user-manager/users/create.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Page de profil utilisateur</description>
            <from-outcome>userProfilePage</from-outcome>
            <to-view-id>/pages/user-manager/users/profile.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers profil utilisateur</description>
            <from-outcome>/pages/user-manager/users/profile</from-outcome>
            <to-view-id>/pages/user-manager/users/profile.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Page d'édition utilisateur</description>
            <from-outcome>userEditPage</from-outcome>
            <to-view-id>/pages/user-manager/users/edit.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers édition utilisateur</description>
            <from-outcome>/pages/user-manager/users/edit</from-outcome>
            <to-view-id>/pages/user-manager/users/edit.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <!-- ================================================================
             GESTION DES RÔLES
             ================================================================ -->
        <navigation-case>
            <description>Page de liste des rôles</description>
            <from-outcome>roleListPage</from-outcome>
            <to-view-id>/pages/user-manager/roles/list.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers liste rôles</description>
            <from-outcome>/pages/user-manager/roles/list</from-outcome>
            <to-view-id>/pages/user-manager/roles/list.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Page d'attribution de rôles</description>
            <from-outcome>roleAssignPage</from-outcome>
            <to-view-id>/pages/user-manager/roles/assign.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers attribution rôles</description>
            <from-outcome>/pages/user-manager/roles/assign</from-outcome>
            <to-view-id>/pages/user-manager/roles/assign.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <!-- ================================================================
             AUDIT
             ================================================================ -->
        <navigation-case>
            <description>Page de journal d'audit</description>
            <from-outcome>auditLogsPage</from-outcome>
            <to-view-id>/pages/user-manager/audit/logs.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers journal d'audit</description>
            <from-outcome>/pages/user-manager/audit/logs</from-outcome>
            <to-view-id>/pages/user-manager/audit/logs.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <!-- ================================================================
             SYNCHRONISATION
             ================================================================ -->
        <navigation-case>
            <description>Page de dashboard synchronisation</description>
            <from-outcome>syncDashboardPage</from-outcome>
            <to-view-id>/pages/user-manager/sync/dashboard.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers dashboard synchronisation</description>
            <from-outcome>/pages/user-manager/sync/dashboard</from-outcome>
            <to-view-id>/pages/user-manager/sync/dashboard.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <!-- ================================================================
             PARAMÈTRES & PROFIL
             ================================================================ -->
        <navigation-case>
            <description>Page de paramètres utilisateur</description>
            <from-outcome>settingsPage</from-outcome>
            <to-view-id>/pages/user-manager/settings.xhtml</to-view-id>
            <redirect />
        </navigation-case>

        <navigation-case>
            <description>Navigation directe vers paramètres</description>
            <from-outcome>/pages/user-manager/settings</from-outcome>
            <to-view-id>/pages/user-manager/settings.xhtml</to-view-id>
            <redirect />
        </navigation-case>

    </navigation-rule>
</faces-config>

