export enum StatutPhaseChantier {
    PLANIFIEE = 'PLANIFIEE',
    EN_ATTENTE = 'EN_ATTENTE',
    EN_COURS = 'EN_COURS',
    SUSPENDUE = 'SUSPENDUE',
    EN_CONTROLE = 'EN_CONTROLE',
    TERMINEE = 'TERMINEE',
    BLOQUEE = 'BLOQUEE',
    ABANDONNEE = 'ABANDONNEE',
    REPORTEE = 'REPORTEE'
}

export enum TypePhaseChantier {
    PREPARATION = 'PREPARATION',
    TERRASSEMENT = 'TERRASSEMENT',
    FONDATIONS = 'FONDATIONS',
    GROS_OEUVRE = 'GROS_OEUVRE',
    CHARPENTE = 'CHARPENTE',
    COUVERTURE = 'COUVERTURE',
    CLOISONS = 'CLOISONS',
    MENUISERIE_EXTERIEURE = 'MENUISERIE_EXTERIEURE',
    ISOLATION = 'ISOLATION',
    PLOMBERIE = 'PLOMBERIE',
    ELECTRICITE = 'ELECTRICITE',
    CHAUFFAGE = 'CHAUFFAGE',
    VENTILATION = 'VENTILATION',
    CLIMATISATION = 'CLIMATISATION',
    MENUISERIE_INTERIEURE = 'MENUISERIE_INTERIEURE',
    REVETEMENTS_SOLS = 'REVETEMENTS_SOLS',
    REVETEMENTS_MURS = 'REVETEMENTS_MURS',
    PEINTURE = 'PEINTURE',
    CARRELAGE = 'CARRELAGE',
    SANITAIRES = 'SANITAIRES',
    CUISINE = 'CUISINE',
    PLACARDS = 'PLACARDS',
    FINITIONS = 'FINITIONS',
    VRD = 'VRD',
    ESPACES_VERTS = 'ESPACES_VERTS',
    NETTOYAGE = 'NETTOYAGE',
    RECEPTION = 'RECEPTION',
    GARANTIE = 'GARANTIE',
    AUTRE = 'AUTRE'
}

export enum PrioritePhase {
    TRES_BASSE = 'TRES_BASSE',
    BASSE = 'BASSE',
    NORMALE = 'NORMALE',
    HAUTE = 'HAUTE',
    CRITIQUE = 'CRITIQUE'
}

export interface PhaseChantier {
    id?: string;
    nom: string;
    description?: string;
    type?: TypePhaseChantier;
    chantier: {
        id: string;
        nom: string;
    };
    statut: StatutPhaseChantier;
    ordreExecution: number;
    dateDebutPrevue?: string;
    dateFinPrevue?: string;
    dateDebutReelle?: string;
    dateFinReelle?: string;
    dureePrevueJours?: number;
    dureeReelleJours?: number;
    pourcentageAvancement?: number;
    budgetPrevu?: number;
    coutReel?: number;
    priorite?: PrioritePhase;
    equipeResponsable?: {
        id: string;
        nom: string;
    };
    chefEquipe?: {
        id: string;
        nom: string;
        prenom: string;
    };
    prerequis?: string;
    livrablesAttendus?: string;
    commentaires?: string;
    risquesIdentifies?: string;
    mesuresSecurite?: string;
    materielRequis?: string;
    competencesRequises?: string;
    conditionsMeteoRequises?: string;
    bloquante?: boolean;
    facturable?: boolean;
    dateCreation?: string;
    dateModification?: string;
    creePar?: string;
    modifiePar?: string;
}

export interface PhaseStatistiques {
    total: number;
    parStatut: Record<StatutPhaseChantier, number>;
    parType: Record<TypePhaseChantier, number>;
    enRetard: number;
    critiques: number;
    avancementMoyen: number;
}