fix: Affichage des CDI et activation Super Staff
- Support complet des contrats CDI dans l'onglet Régime général - Correction du filtrage pour inclure type_de_contrat = 'CDI' - Gestion des CDI sans date de fin (end_date null) - Les CDI apparaissent maintenant dans 'En cours' - Redirection vers /contrats-rg/[id] pour les CDI - Ajout du type 'CDI' dans les types TypeScript - Correction du lien d'activation pour les Super Staff - Ajout de /activate aux pages publiques dans middleware.ts - Les nouveaux Super Staff peuvent maintenant activer leur compte sans erreur 404 - Nettoyage du code - Retrait des logs de debug temporaires
This commit is contained in:
parent
88ad651557
commit
64299cd9a5
5 changed files with 30 additions and 12 deletions
|
|
@ -21,7 +21,7 @@ export type Contrat = {
|
|||
date_fin: string; // ISO
|
||||
etat: "pre-demande" | "Reçue" | "envoye" | "signe" | "modification" | "traitee" | "en_cours";
|
||||
is_multi_mois?: boolean; // drapeau listé par l'API
|
||||
regime?: "CDDU_MONO" | "CDDU_MULTI" | "RG" | string; // si l'API renvoie directement le régime
|
||||
regime?: "CDDU_MONO" | "CDDU_MULTI" | "RG" | "CDI" | string; // si l'API renvoie directement le régime
|
||||
};
|
||||
|
||||
// --- Hook d'accès API - MODIFIÉ pour utiliser clientInfo
|
||||
|
|
@ -113,6 +113,11 @@ function safeEtat(etat?: string){
|
|||
|
||||
function detailHref(c: Contrat){
|
||||
const isMulti = c.is_multi_mois === true || (c.regime && c.regime.toUpperCase() === "CDDU_MULTI");
|
||||
const isRG = c.regime && (c.regime.toUpperCase() === "RG" || c.regime.toUpperCase() === "CDI");
|
||||
|
||||
if (isRG) {
|
||||
return `/contrats-rg/${c.id}`;
|
||||
}
|
||||
return isMulti ? `/contrats-multi/${c.id}` : `/contrats/${c.id}`;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ export type Contrat = {
|
|||
date_fin: string; // ISO
|
||||
etat: "pre-demande" | "Reçue" | "envoye" | "signe" | "modification" | "traitee" | "en_cours";
|
||||
is_multi_mois?: boolean; // drapeau listé par l'API
|
||||
regime?: "CDDU_MONO" | "CDDU_MULTI" | "RG" | string; // si l'API renvoie directement le régime
|
||||
regime?: "CDDU_MONO" | "CDDU_MULTI" | "RG" | "CDI" | string; // si l'API renvoie directement le régime
|
||||
};
|
||||
|
||||
type ClientInfo = {
|
||||
|
|
@ -239,12 +239,12 @@ export default function PageContrats(){
|
|||
return `/contrats/demo`;
|
||||
}
|
||||
|
||||
// Si l'utilisateur est sur l'onglet Régime général, on envoie vers la page RG
|
||||
if (regime === "RG") {
|
||||
// Si c'est un contrat RG ou CDI, on envoie vers la page RG
|
||||
const regimeUpper = (c.regime || "").toUpperCase();
|
||||
if (regime === "RG" || regimeUpper === "RG" || regimeUpper === "CDI") {
|
||||
return `/contrats-rg/${c.id}`;
|
||||
}
|
||||
// Sinon, on applique la logique CDDU / multi-mois
|
||||
const regimeUpper = (c.regime || "").toUpperCase();
|
||||
if (c.is_multi_mois === true || regimeUpper === "CDDU_MULTI") {
|
||||
return `/contrats-multi/${c.id}`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -240,7 +240,14 @@ export async function GET(req: Request) {
|
|||
}
|
||||
let filtered = (data || []).filter((row: any) => {
|
||||
const end = row.end_date || row.date_fin;
|
||||
if (!end) return false;
|
||||
|
||||
// Pour les CDI (pas de date de fin), toujours les considérer comme "en_cours"
|
||||
if (!end) {
|
||||
if (status === "en_cours") return true;
|
||||
if (status === "termines") return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
const endDate = new Date(end);
|
||||
if (isNaN(endDate.getTime())) return false;
|
||||
endDate.setHours(0,0,0,0);
|
||||
|
|
@ -261,12 +268,16 @@ export async function GET(req: Request) {
|
|||
if (regime === 'RG') {
|
||||
filtered = filtered.filter((row: any) => {
|
||||
const td = normalize(row.type_d_embauche);
|
||||
return td.includes('régime général') || td.includes('regime general') || td === 'rg';
|
||||
const tc = normalize(row.type_de_contrat);
|
||||
// Inclure les contrats avec type_d_embauche = "Régime général" OU type_de_contrat = "CDI"
|
||||
return td.includes('régime général') || td.includes('regime general') || td === 'rg' || tc === 'cdi';
|
||||
});
|
||||
} else if (regime === 'CDDU') {
|
||||
filtered = filtered.filter((row: any) => {
|
||||
const td = normalize(row.type_d_embauche);
|
||||
return !(td.includes('régime général') || td.includes('regime general') || td === 'rg');
|
||||
const tc = normalize(row.type_de_contrat);
|
||||
// Exclure les contrats RG et CDI de l'onglet CDDU
|
||||
return !(td.includes('régime général') || td.includes('regime general') || td === 'rg' || tc === 'cdi');
|
||||
});
|
||||
}
|
||||
// Si regime === null/undefined, on garde tous les contrats (pas de filtrage)
|
||||
|
|
@ -295,7 +306,8 @@ export async function GET(req: Request) {
|
|||
const items = paged.map((row: any) => {
|
||||
const isMulti = row.multi_mois === "Oui" || row.multi_mois === true;
|
||||
const td = String(row.type_d_embauche || "").toLowerCase();
|
||||
const isRG = td.includes("régime général") || td.includes("regime general") || td === "rg";
|
||||
const tc = String(row.type_de_contrat || "").toLowerCase();
|
||||
const isRG = td.includes("régime général") || td.includes("regime general") || td === "rg" || tc === "cdi";
|
||||
|
||||
// Déterminer l'état à afficher
|
||||
let displayEtat = (row.etat_de_la_demande || row.etat || "en_cours");
|
||||
|
|
@ -336,7 +348,7 @@ export async function GET(req: Request) {
|
|||
date_fin: row.end_date,
|
||||
etat: displayEtat,
|
||||
is_multi_mois: isMulti,
|
||||
regime: isRG ? "RG" : (isMulti ? "CDDU_MULTI" : "CDDU_MONO"),
|
||||
regime: isRG ? (tc === "cdi" ? "CDI" : "RG") : (isMulti ? "CDDU_MULTI" : "CDDU_MONO"),
|
||||
};
|
||||
});
|
||||
return NextResponse.json({
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ export async function POST(request: NextRequest) {
|
|||
// Marquer explicitement que c'est un contrat RG
|
||||
regime: "RG",
|
||||
// Définir les champs de type de contrat pour RG (CDI ou CDD de droit commun)
|
||||
type_de_contrat: body.type_contrat || "CDD de droit commun",
|
||||
type_de_contrat: body.type_contrat || body.type_contrat_rg || "CDD de droit commun",
|
||||
type_d_embauche: "Régime général",
|
||||
// Les champs production ne sont pas utilisés en RG
|
||||
spectacle: "N/A - Régime Général",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export async function middleware(req: NextRequest) {
|
|||
path.startsWith('/dl-contrat-signe') ||
|
||||
path.startsWith('/signature-salarie') ||
|
||||
path === '/politique-confidentialite' ||
|
||||
path === '/mentions-legales';
|
||||
path === '/mentions-legales' ||
|
||||
path === '/activate';
|
||||
|
||||
// Ne pas impacter l'environnement local/dev par le mode maintenance
|
||||
const hostname = req.nextUrl.hostname || '';
|
||||
|
|
|
|||
Loading…
Reference in a new issue