Cette documentation présente les prérequis et les étapes d'installation pour créer l'environnement.
## Prérequis

Pour assurer le bon fonctionnement de l'applicatif, il conviendra d'installer les éléments suivants :
- Apache (ou HTTPD) version 2.4
- PHP 8.2 mini
- composer
- Symfony CLI
- MySQL ou MariaDB
- Git
- WSL2 (si windows) et Docker Desktop

Il est possible d'utiliser un autre SGBD, il faudra cependant regénérer les fichiers de migration pour la base de données.

Des fichiers d'aide à l'installation sont disponibles dans le dossier "Aide à l'installation" en fonction de l'environnement utilisateur (Windows ou Linux).

Les applicatifs PHP, MariaDB (MySQL), et Apache devront être configurés.
Apache devra pointer sur le dossier public du projet Symfony.
## Installation de l'application

Pour installer l'application et assurer son bon fonctionnement :
- Cloner le projet avec la commande Git ou utiliser un utilitaire (gitTree ou gitKraken) pour cloner le projet dans le dossier choisi
- dans le fichier docker-compose.yml, modifier les informations sur le volume de stockage de la BDD (template_data), le nom de la base de données (templateBDD) ainsi que le port (3306) => attention à ne pas avoir ce port occupé sur la machine (vérifiable avec la commande "netstat -an")
- Créer le container docker de base de données (et phpmyadmin) avec la commande "docker-compose up -d --build" à la racine du projet
- à la racine du projet, exécuter la commande "composer install". De cette manière toutes les dépendances nécessaires au projet seront installées.
<br>
**ATTENTION : lors de l'installation des dépendances, il faudra répondre "n" pour le recipe "google/recaptcha" et "y" pour le recipe "victor-prdh/recaptcha-bundle"**
- Copier le fichier .env en .env.local
- Modifier le champ DATABASE_URL
- Dans le sous répertoire src/DataFixtures/XSLX, se trouve un fichier baseImport.xslx. Il s'agit d'un fichier Excel traité lors de l'initialisation du projet pour créer les menus utilisateurs et données de base de l'application. il permet notamment de créer un utilisateur admin par défaut (login: admin, mot de passe : admin). Après l'initialisation, il sera possible de modifier les informations de ce compte administrateur.
- Exécuter ensuite la commande suivante à la racine du projet "php bin/console init:bdd". Ce script permet de créer la base de données, les schémas SQL correspondant au projet ainsi que l'insertion des données contenues dans le fichier baseImport.xslx.

Pour lancer le projet plusieurs solutions :<br>
1. Lancer avec le serveur symfony embarqué, via la commande "symfony serve" à la racine du projet
2. Configurer un serveur apache2 ou Nginx (recommandé en production)
3. pour le dev on peut également ajouter un pod dans docker desktop. Pour cela, éditer le fichier docker compose et ajouter (en adaptant les variables) les informations suivantes dans la partie "services" (sans la ligne "services:" qui sert ici d'indication pour l'indentation du fichier docker-compose.yml) :
```
services:
  web:
    build:
      context: ./docker
    volumes:
      - ./:/var/www/html
    ports:
      - "8080:80"
    depends_on:
      - db
    deploy:
      resources:
        limits:
          cpus: '2.5'
          memory: '2G'
        reservations:
          cpus: '0.5'
          memory: '1024M'
```


Tout est OK. On peut maintenant se connecter à l'application (port indiqué par la commande pour le cas 1, port 80 ou 443 en production (si apache2 ou nginx), port 8080 (ou autre si modifié) dans le cas de la configuration Docker).

## Connexion à l'application

Ouvrir simplement un navigateur.
Taper https://ip_serveur_ou_nom_domaine
La page d'index devrait s'afficher.
Dans la barre d'adresse, ajouter simplement "/login" à la fin.
La mire de connexion s'affiche.
Se connecter avec les identifiants suivants :
- login : admin
- mot de passe : admin

Il est donc maintenant possible de gérer l'intégralité de l'application depuis l'interface d'administration, en navigant par le menu de gauche.
Attention, il est conseillé de ne rien modifier de la base d'import (fichier Excel, sinon des pans entier de l'application pourraient ne plus fonctionner).

Penser également dans la gestion des configuration à renseigner les informations SMTP nécessaires à l'envoi des mails de l'application.





