feat: add affiliation pdf generator

This commit is contained in:
2025-07-07 13:16:42 +02:00
parent 280a8fa3f3
commit 34be19fbed
16 changed files with 429 additions and 78 deletions

View File

@@ -2,13 +2,15 @@ import {useLoadingSwitcher} from "../../../hooks/useLoading.jsx";
import {useFetch} from "../../../hooks/useFetch.js";
import {useEffect, useReducer, useState} from "react";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faEye, faPen} from "@fortawesome/free-solid-svg-icons";
import {faEye, faFilePdf, faPen} from "@fortawesome/free-solid-svg-icons";
import {AxiosError} from "../../../components/AxiosError.jsx";
import {apiAxios, errFormater, getSaison} from "../../../utils/Tools.js";
import {toast} from "react-toastify";
import {SimpleReducer} from "../../../utils/SimpleReducer.jsx";
import {useNavigate} from "react-router-dom";
const vite_url = import.meta.env.VITE_URL;
export function AffiliationCard({clubData}) {
const setLoading = useLoadingSwitcher()
const {data, error} = useFetch(`/affiliation/${clubData.id}`, setLoading, 1)
@@ -49,6 +51,13 @@ export function AffiliationCard({clubData}) {
})}
{error && <AxiosError error={error}/>}
</ul>
<a href={`${vite_url}/api/club/${clubData.id}/affiliation`} target='#'>
<button className="btn btn-primary" type="button" id="button-addon1" style={{marginTop: '1em'}}
onClick={e => null}>
Téléchargée l'attestation d'affiliation <FontAwesomeIcon icon={faFilePdf}></FontAwesomeIcon>
</button>
</a>
</div>
<div className="modal fade" id="AffiliationModal" tabIndex="-1" aria-labelledby="AffiliationModalLabel"
@@ -153,4 +162,4 @@ function ModalContent({affiliation, dispatch}) {
onClick={() => removeAffiliation(affiliation.id, dispatch)}>Supprimer</button>}
</div>
</form>
}
}

View File

@@ -2,13 +2,15 @@ import {useLoadingSwitcher} from "../../../hooks/useLoading.jsx";
import {useFetch} from "../../../hooks/useFetch.js";
import {useEffect, useReducer, useState} from "react";
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faEye, faPen} from "@fortawesome/free-solid-svg-icons";
import {faEye, faFilePdf, faPen} from "@fortawesome/free-solid-svg-icons";
import {AxiosError} from "../../../components/AxiosError.jsx";
import {apiAxios, getSaison} from "../../../utils/Tools.js";
import {toast} from "react-toastify";
import {SimpleReducer} from "../../../utils/SimpleReducer.jsx";
import {useNavigate} from "react-router-dom";
const vite_url = import.meta.env.VITE_URL;
export function AffiliationCard({clubData}) {
const setLoading = useLoadingSwitcher()
const {data, error} = useFetch(`/affiliation/${clubData.id}`, setLoading, 1)
@@ -37,6 +39,13 @@ export function AffiliationCard({clubData}) {
})}
{error && <AxiosError error={error}/>}
</ul>
<a href={`${vite_url}/api/club/me/affiliation`} target='#'>
<button className="btn btn-primary" type="button" id="button-addon1" style={{marginTop: '1em'}}
onClick={e => null}>
Téléchargée l'attestation d'affiliation <FontAwesomeIcon icon={faFilePdf}></FontAwesomeIcon>
</button>
</a>
</div>
<div className="modal fade" id="AffiliationModal" tabIndex="-1" aria-labelledby="AffiliationModalLabel"
@@ -166,4 +175,4 @@ function ModalContent2({clubData, data}) {
<button type="submit" className="btn btn-primary" data-bs-dismiss="modal">Suivant</button>
</div>
</form>
}
}