import type {
  DeadlineTypeDef,
  DeadlineCategory,
  RegistryDirection,
} from "../types";

export const DEADLINE_CATALOG: DeadlineTypeDef[] = [
  // ═══════════════════════════════════════════════════════════════
  // CERTIFICAT DE URBANISM
  // ═══════════════════════════════════════════════════════════════

  // ── Auto-tracked (system creates automatically, not user-selectable) ──

  {
    id: "cu-verificare",
    label: "Verificare cerere CU",
    description:
      "Verificare operativa a documentatiei depuse. Dupa acest termen institutia nu mai are dreptul legal sa solicite clarificari sau sa returneze documentatia.",
    days: 10,
    dayType: "working",
    startDateLabel: "Data depunerii cererii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 50/1991, art. 6^1 alin. (1)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },
  {
    id: "cu-suport-tehnic",
    label: "Suport tehnic interinstitutional",
    description:
      "Termen in care autoritatile locale acorda suport tehnic de specialitate institutiilor din SNAOPSN — stabilirea cerintelor urbanistice.",
    days: 10,
    dayType: "working",
    startDateLabel: "Data solicitarii",
    requiresCustomStartDate: true,
    startDateHint: "Data la care institutia SNAOPSN a solicitat suportul tehnic",
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 50/1991, art. 8 alin. (2)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },

  // ── CJ sub-deadlines (auto-created when CJ toggle is on) ──

  {
    id: "cu-cj-solicitare-aviz",
    label: "Arhitect-sef solicita aviz primar",
    description:
      "La depunerea cererii CU la Consiliul Judetean, arhitectul-sef solicita avizul structurii de specialitate a primariei in 3 zile calendaristice.",
    days: 3,
    dayType: "calendar",
    startDateLabel: "Data depunerii cererii CU la CJ",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    chainNextTypeId: "cu-cj-aviz-primar",
    chainNextActionLabel: "Adauga termen emitere aviz primar (5 zile)",
    category: "certificat",
    legalReference: "Legea 50/1991, art. 4 alin. (1^1)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },
  {
    id: "cu-cj-aviz-primar",
    label: "Primar emite aviz",
    description:
      "Primarul emite avizul structurii de specialitate in 5 zile calendaristice de la solicitarea arhitectului-sef.",
    days: 5,
    dayType: "calendar",
    startDateLabel: "Data solicitarii avizului",
    requiresCustomStartDate: true,
    startDateHint: "Data la care arhitectul-sef a solicitat avizul",
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 50/1991, art. 4 alin. (1^1)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },

  // ── Comunicare — auto-tracked for all deadline types ──

  {
    id: "comunicare-aviz-beneficiar",
    label: "Comunicare documente catre beneficiar",
    description:
      "Entitatile emitente de avize au obligatia sa transmita beneficiarului avizele, solicitarile de completare sau respingerea prin mijloace electronice, in ziua eliberarii actului.",
    days: 1,
    dayType: "calendar",
    startDateLabel: "Data eliberarii actului",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    autoTrack: true,
    backgroundOnly: true,
    directionFilter: ["iesit"],
  },

  // ── User-selectable CU deadlines ──

  {
    id: "cu-emitere-l50",
    label: "Emitere CU (constructii — L50)",
    description:
      "Termen de emitere a Certificatului de Urbanism pentru documentatii de constructii. NU se aplica avizarea tacita.",
    days: 15,
    dayType: "working",
    startDateLabel: "Data inregistrarii cererii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 50/1991, art. 6^1 alin. (1)",
    directionFilter: ["iesit"],
  },
  {
    id: "cu-emitere-l350",
    label: "Emitere CU (urbanism — L350)",
    description:
      "Termen de emitere a Certificatului de Urbanism pentru documentatii de urbanism (PUG/PUZ/PUD). NU se aplica avizarea tacita.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data inregistrarii cererii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Legea 350/2001, art. 29 alin. (2)",
    directionFilter: ["iesit"],
  },
  {
    id: "cu-prelungire-emitere",
    label: "Emitere prelungire CU",
    description:
      "Termen de emitere a prelungirii CU de la depunerea cererii de prelungire. Termen din practica administrativa (nu e explicit in lege).",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii cererii de prelungire",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-a depus cererea de prelungire a CU",
    tacitApprovalApplicable: false,
    category: "certificat",
    legalReference: "Practica administrativa",
    directionFilter: ["iesit"],
  },

  // ═══════════════════════════════════════════════════════════════
  // AVIZE
  // ═══════════════════════════════════════════════════════════════

  // ── Auto-tracked avize (system creates automatically) ──

  {
    id: "aviz-completari-limit",
    label: "Limita solicitare completari (fara comisie)",
    description:
      "Dupa primele 5 zile lucratoare de la depunerea documentatiei, institutia avizatoare nu mai are dreptul sa solicite completari. Se aplica doar pentru avize care NU trec prin comisie de specialitate.",
    days: 5,
    dayType: "working",
    startDateLabel: "Data depunerii documentatiei",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Norme metodologice Legea 50/1991",
    autoTrack: true,
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-emitere-dupa-completari",
    label: "Emitere aviz dupa completari",
    description:
      "Dupa depunerea completarilor/clarificarilor/modificarilor solicitate, institutia are un nou termen maxim de 15 zile calendaristice pentru emiterea (sau respingerea) avizului. Se aplica avizarea tacita.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data depunerii completarilor",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-au depus completarile/clarificarile solicitate de institutie (dovada prin comunicare conexa cererii de aviz)",
    tacitApprovalApplicable: true,
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (1)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-cultura-depunere-comisie",
    label: "Cultura — depunere la comisie",
    description:
      "In maximum 30 zile calendaristice de la depunerea documentatiei, aceasta trebuie supusa analizei comisiei nationale/zonale a monumentelor istorice. Se inchide cu eveniment de tip 'Convocare sedinta'.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii documentatiei",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    autoTrack: true,
    directionFilter: ["iesit"],
  },

  // ── User-selectable avize ──

  {
    id: "aviz-ac-15",
    label: "Aviz pt AC (standard — L50)",
    description:
      "Termen de emitere a avizelor si acordurilor necesare Autorizatiei de Construire (Legea 50). Termenul incepe de la data transmiterii documentatiei (se ataseaza dovada: mail, confirmare primire). Se aplica avizarea tacita daca nu se primeste raspuns sau solicitare de completari.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data transmiterii documentatiei",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (1)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-urbanism-30",
    label: "Aviz pt urbanism (PUG/PUZ/PUD — L350)",
    description:
      "Termen de emitere a avizelor/acordurilor pentru documentatii de urbanism (Legea 350). Termenul incepe de la data transmiterii documentatiei (se ataseaza dovada). Se aplica avizarea tacita daca nu se primeste raspuns sau solicitare de completari.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data transmiterii documentatiei",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-mediu",
    label: "Aviz Protectia Mediului",
    description:
      "Actul administrativ de mediu se emite in maximum 15 zile calendaristice de la data incheierii procedurilor specifice de mediu. Termenul NU incepe de la depunere, ci de la un eveniment ulterior (sedinta CAT, adresa primita, apel telefonic) care confirma incheierea procedurii. Leaga de un eveniment conex in thread.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data finalizare proceduri mediu",
    requiresCustomStartDate: true,
    startDateHint:
      "Data evenimentului care confirma inchiderea procedurii de mediu (sedinta CAT, adresa primita, apel telefonic). Leaga de un eveniment conex in thread.",
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-cultura-comisie",
    label: "Aviz Cultura — emitere dupa comisie",
    description:
      "Faza 2: Termen de 30 zile calendaristice pentru emiterea avizului, care incepe DUPA primirea convocarii sedintei sau evenimentului completari finale. Se creeaza automat si un termen de 30 zile (faza 1) pentru depunerea la comisia de specialitate.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data sedinta comisie / completari finale",
    requiresCustomStartDate: true,
    startDateHint:
      "Data sedintei comisiei monumentelor istorice sau data primirii adresei de completari finale",
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-cultura-mc",
    label: "Aviz Min. Culturii (faza AC)",
    description:
      "Termen de emitere a avizului Ministerului Culturii la faza de autorizare, de la primirea documentatiei complete.",
    days: 30,
    dayType: "working",
    startDateLabel: "Data primirii documentatiei complete",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care Min. Culturii a primit documentatia completa",
    tacitApprovalApplicable: true,
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3^1)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-aeronautica",
    label: "Aviz Aeronautica Civila",
    description:
      "Termen de emitere a avizului de la Autoritatea Aeronautica Civila Romana.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii documentatiei",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-isu",
    label: "Aviz ISU (Situatii de Urgenta)",
    description:
      "Termen de emitere a avizului ISU pentru documentatii de urbanism.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-transport-eu",
    label: "Aviz infrastructura transeuropeana",
    description:
      "Avize/acorduri de principiu sau de amplasament pentru proiecte de infrastructura transeuropeana de transport.",
    days: 10,
    dayType: "calendar",
    startDateLabel: "Data solicitarii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: true,
    chainNextTypeId: "aviz-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere dupa completari (15 zile cal.)",
    category: "avize",
    legalReference: "Legea 50/1991, art. 7 alin. (3)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-comisie-agenda",
    label: "Punere pe agenda comisie",
    description:
      "Institutiile care emit avize prin comisie de specialitate sunt obligate sa introduca documentatia pe agenda si sa o analizeze in acest termen.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii solicitarii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-comisie-emitere",
    label: "Emitere dupa comisie (autoritati centrale)",
    description:
      "Pentru autoritatile centrale, avizul se emite in maximum 15 zile de la data analizarii in comisie.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data analizarii in comisie",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care documentatia a fost analizata in comisia de specialitate",
    tacitApprovalApplicable: true,
    category: "avize",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-oportunitate-comisie",
    label: "Aviz oportunitate — analiza",
    description:
      "Termen de analiza in comisia tehnica si/sau verificare completari pentru avizul de oportunitate (initiere PUZ). NU se aplica avizarea tacita!",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Legea 350/2001, art. 32 alin. (1^1)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-oportunitate-emitere",
    label: "Aviz oportunitate — emitere",
    description:
      "Termen de emitere a avizului de oportunitate de la data analizarii in comisie. NU se aplica avizarea tacita!",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data analizarii in comisie",
    requiresCustomStartDate: true,
    startDateHint: "Data sedintei comisiei tehnice in care s-a analizat",
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Legea 350/2001, art. 32 alin. (1^1)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-reconfirmare",
    label: "Reconfirmare avize PUZ/PUD",
    description:
      "Termen de reconfirmare a avizelor (fara modificari la solutia tehnica). Lipsa raspunsului inseamna reconfirmare tacita.",
    days: 5,
    dayType: "working",
    startDateLabel: "Data solicitarii reconfirmarii",
    requiresCustomStartDate: true,
    startDateHint: "Data la care s-a solicitat reconfirmarea avizelor",
    tacitApprovalApplicable: true,
    category: "avize",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-primar",
    label: "Aviz primar (cand CJ emite)",
    description:
      "Cand Consiliul Judetean emite certificatul/autorizatia, arhitectul-sef il solicita in 3 zile, iar primarul il emite in 5 zile.",
    days: 5,
    dayType: "calendar",
    startDateLabel: "Data primirii solicitarii de catre primar",
    requiresCustomStartDate: true,
    startDateHint: "Data la care primarul a primit solicitarea de aviz",
    tacitApprovalApplicable: false,
    category: "avize",
    legalReference: "Legea 50/1991, art. 4 alin. (1^1)",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-monument-fara-ac",
    label: "Acord lucrari minore la monumente",
    description:
      "Acord scris al serviciului deconcentrat de cultura pentru lucrari minore la monumente ce nu necesita AC. Depasirea termenului = acord tacit.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data notificarii",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-a notificat serviciul deconcentrat de cultura",
    tacitApprovalApplicable: true,
    category: "avize",
    legalReference: "Legea 50/1991, art. 11 alin. (1)",
    directionFilter: ["iesit"],
  },

  // ═══════════════════════════════════════════════════════════════
  // COMPLETARI — reminder-uri pt beneficiar (termen depunere completari)
  // ═══════════════════════════════════════════════════════════════
  {
    id: "completare-beneficiar-l350",
    label: "Termen completari beneficiar (L350 — 60 zile)",
    description:
      "Solicitantul are la dispozitie maximum 60 de zile de la primirea notificarii pentru a depune completarile solicitate. Depasirea termenului inchide dosarul si necesita reluarea procesului. Se aplica documentatiilor de urbanism (Legea 350).",
    days: 60,
    dayType: "calendar",
    startDateLabel: "Data notificarii de completare",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care beneficiarul a primit notificarea de completare de la autoritate (adresa/email)",
    tacitApprovalApplicable: false,
    category: "completari",
    legalReference: "Legea 350/2001, art. 44 alin. (4)",
    directionFilter: ["iesit", "intrat"],
  },
  {
    id: "completare-beneficiar-l50",
    label: "Termen completari beneficiar (L50 — 3 luni)",
    description:
      "Solicitantul are la dispozitie maximum 3 luni (90 de zile calendaristice) de la primirea notificarii pentru a depune completarile/modificarile solicitate. In caz contrar, documentatia se restituie. Se aplica documentatiilor de constructii (Legea 50).",
    days: 90,
    dayType: "calendar",
    startDateLabel: "Data notificarii de completare",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care beneficiarul a primit notificarea de completare de la autoritate (adresa/email)",
    tacitApprovalApplicable: false,
    category: "completari",
    legalReference: "Legea 50/1991, art. 7 alin. (1^1)",
    directionFilter: ["iesit", "intrat"],
  },

  // ═══════════════════════════════════════════════════════════════
  // URBANISM (PUD/PUZ/PUG) — nu se aplica acordul tacit
  // ═══════════════════════════════════════════════════════════════
  {
    id: "retele-furnizare-date",
    label: "Furnizare date detinatori retele",
    description:
      "Detinatorii de retele tehnico-edilitare furnizeaza gratuit datele solicitate de autoritate, in 15 zile de la solicitare. Aplicabil doar proiectelor cu autoritati publice.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data solicitarii de la autoritate",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care autoritatea a solicitat datele de la detinatorii de retele",
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
  },

  // ── Aviz de oportunitate (PUZ privat) ──
  {
    id: "aviz-oportunitate-verificare",
    label: "Aviz oportunitate — verificare / completare",
    description:
      "Autoritatea verifica documentatia si solicita completari in max. 30 de zile de la depunere. Daca nu solicita completari, documentatia intra in comisie.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
  },
  {
    id: "aviz-oportunitate-ctatu",
    label: "Aviz oportunitate — convocare CTATU",
    description:
      "Documentatia trebuie introdusa in Comisia Tehnica (CTATU) in maximum 30 de zile de la depunere. Se inchide cu event de tip Convocare sedinta.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
    chainNextTypeId: "aviz-oportunitate-emitere",
    chainNextActionLabel:
      "Adauga termen emitere aviz oportunitate (15 zile cal.)",
  },
  {
    id: "aviz-oportunitate-emitere",
    label: "Aviz oportunitate — emitere dupa comisie",
    description:
      "Se emite avizul de oportunitate in maximum 15 zile de la analiza favorabila in comisia tehnica CTATU.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data analizei in comisie",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care comisia CTATU a analizat favorabil documentatia",
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
    autoTrack: true,
  },

  // ── Aviz arhitect sef PUD/PUZ ──
  {
    id: "aviz-arh-sef-ctatu",
    label: "Aviz arhitect sef — convocare CTATU",
    description:
      "Documentatia PUD/PUZ trebuie introdusa in Comisia Tehnica (CTATU) in maximum 30 de zile de la depunere. Se inchide cu event de tip Convocare sedinta.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
    chainNextTypeId: "aviz-arh-sef-emitere",
    chainNextActionLabel: "Adauga termen emitere aviz arh. sef (15 zile cal.)",
  },
  {
    id: "aviz-arh-sef-emitere",
    label: "Aviz arhitect sef — emitere dupa comisie",
    description:
      "Se emite avizul arhitectului sef in maximum 15 zile de la analiza in comisia tehnica CTATU.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data analizei in comisie",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care comisia CTATU a analizat documentatia PUD/PUZ",
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
    autoTrack: true,
  },

  // ── Consiliul Local ──
  {
    id: "consiliu-promovare",
    label: "Promovare Consiliu Local",
    description:
      "Primarul promoveaza documentatia completa si avizata catre Consiliul Local in maximum 30 de zile de la inregistrare.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data inregistrarii documentatiei complete",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
  },
  {
    id: "consiliu-vot",
    label: "Vot Consiliu Local",
    description:
      "Consiliul Local emite hotararea (aprobare sau respingere) in maximum 45 de zile de la finalizarea dezbaterii publice si inaintarea rapoartelor.",
    days: 45,
    dayType: "calendar",
    startDateLabel: "Data finalizare dezbatere publica",
    requiresCustomStartDate: true,
    startDateHint:
      "Data finalizarii dezbaterii publice si inaintarii rapoartelor catre Consiliu",
    tacitApprovalApplicable: false,
    category: "urbanism",
    legalReference: "Legea 350/2001",
    directionFilter: ["iesit"],
  },

  // ═══════════════════════════════════════════════════════════════
  // AUTORIZARE (AD/AC) — nu se aproba tacit
  // ═══════════════════════════════════════════════════════════════

  // ── Auto-track: verificare dosar (informativ) ──
  {
    id: "ac-verificare",
    label: "Verificare documentatie AC",
    description:
      "Documentatia este verificata in 5 zile lucratoare de la inregistrare. In acest termen se notifica solicitantul daca dosarul este incomplet.",
    days: 5,
    dayType: "working",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (1)",
    directionFilter: ["iesit"],
    autoTrack: true,
  },

  // ── Emitere AC (user-selectable) ──
  {
    id: "ac-emitere",
    label: "Emitere AC (standard — 30 zile cal.)",
    description:
      "Cel mult 30 de zile calendaristice de la depunerea documentatiei complete. Daca autoritatea a cerut completari, termenul se recalculeaza de la data depunerii completarilor.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii documentatiei complete",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (1)",
    directionFilter: ["iesit"],
    chainNextTypeId: "ac-emitere-dupa-completari",
    chainNextActionLabel:
      "Adauga termen emitere AC dupa completari (30 zile cal.)",
  },
  {
    id: "ac-emitere-dupa-completari",
    label: "Emitere AC dupa completari",
    description:
      "Termenul de 30 de zile calendaristice se recalculeaza de la data la care s-au depus completarile/modificarile solicitate de autoritate.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data depunerii completarilor",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-au depus completarile/modificarile solicitate de autoritate",
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (1)",
    directionFilter: ["iesit"],
    autoTrack: true,
  },
  {
    id: "ac-emitere-urgenta",
    label: "Emitere AC (urgenta — 7 zile lucr.)",
    description:
      "Regim de urgenta, la solicitarea beneficiarului si cu perceperea unei taxe suplimentare stabilite de consiliul local/judetean. Maximum 7 zile lucratoare.",
    days: 7,
    dayType: "working",
    startDateLabel: "Data depunerii (urgenta)",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (1^2)",
    directionFilter: ["iesit"],
  },
  {
    id: "ac-emitere-anexe",
    label: "Emitere AC (anexe — 15 zile cal.)",
    description:
      "Termen de emitere a AC pentru constructii reprezentand anexe gospodaresti ale exploatatiilor agricole.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data depunerii",
    requiresCustomStartDate: false,
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (1^3)",
    directionFilter: ["iesit"],
  },

  // ── Prelungire AC ──
  {
    id: "ac-prelungire-emitere",
    label: "Emitere decizie prelungire AC (15 zile lucr.)",
    description:
      "Emitentul comunica decizia privind prelungirea valabilitatii AC in 15 zile lucratoare de la depunerea cererii de prelungire.",
    days: 15,
    dayType: "working",
    startDateLabel: "Data depunerii cererii de prelungire",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-a depus cererea de prelungire a AC",
    tacitApprovalApplicable: false,
    category: "autorizare",
    legalReference: "Legea 50/1991, art. 7 alin. (8)",
    directionFilter: ["iesit"],
  },

  // ═══════════════════════════════════════════════════════════════
  // LITIGII / SANCTIUNI / CONTESTATII
  // ═══════════════════════════════════════════════════════════════
  {
    id: "plangere-prealabila",
    label: "Plangere prealabila (contencios AC)",
    description:
      "Inainte de a va adresa instantei, trebuie sa solicitati autoritatii revocarea actului. Termenul curge de la aducerea la cunostinta publicului. Procedura este scutita de taxa de timbru.",
    days: 30,
    dayType: "calendar",
    startDateLabel: "Data ultimei publicitati",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care actul a fost adus la cunostinta publicului (ultima operatiune de publicitate: notare in CF, ziar, panou etc.)",
    tacitApprovalApplicable: false,
    chainNextTypeId: "contestare-ac",
    chainNextActionLabel: "Adauga termen actiune in instanta (60 zile)",
    category: "litigii",
    legalReference: "Legea 554/2004, art. 7",
    directionFilter: ["intrat"],
  },
  {
    id: "contestare-ac",
    label: "Actiune in instanta (contencios AC)",
    description:
      "Cererea de anulare/suspendare la instanta de contencios administrativ. Termenul curge de la primirea raspunsului la plangerea prealabila sau de la expirarea termenului de raspuns.",
    days: 60,
    dayType: "calendar",
    startDateLabel: "Data raspuns plangere / expirare termen",
    requiresCustomStartDate: true,
    startDateHint:
      "Data primirii raspunsului la plangerea prealabila (sau data la care a expirat termenul de raspuns)",
    tacitApprovalApplicable: false,
    category: "litigii",
    legalReference: "Legea 50/1991, art. 12",
    directionFilter: ["intrat"],
  },
  {
    id: "contestare-urbanism",
    label: "Atacare documentatii urbanism PUZ/PUG (5 ani)",
    description:
      "Dreptul de a ataca in instanta hotararile de aprobare PUG/PUZ/PUD se prescrie in 5 ani de la data aprobarii. Exceptie: 1 an pentru ONG-uri (organizatii neguvernamentale).",
    days: 1825,
    dayType: "calendar",
    startDateLabel: "Data aprobarii HCL/HCJ",
    requiresCustomStartDate: true,
    startDateHint: "Data hotararii de aprobare a documentatiei de urbanism",
    tacitApprovalApplicable: false,
    category: "litigii",
    legalReference: "Legea 350/2001, art. 64 alin. (3)",
    directionFilter: ["intrat"],
  },
  {
    id: "prescriptie-contraventie",
    label: "Prescriptie contraventie (3 ani)",
    description:
      "Dreptul de a constata contraventia si de a aplica sanctiunea se prescrie in termen de 3 ani de la data savarsirii faptei.",
    days: 1095,
    dayType: "calendar",
    startDateLabel: "Data savarsirii faptei",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care s-a savarsit fapta contraventionala (ex: inceperea lucrarilor fara autorizatie)",
    tacitApprovalApplicable: false,
    category: "litigii",
    legalReference: "Legea 50/1991, art. 31",
    directionFilter: ["intrat"],
  },
  {
    id: "plangere-pv",
    label: "Plangere impotriva procesului-verbal (15 zile)",
    description:
      "Plangere impotriva PV de contraventie la judecatorie. Suspenda obligatia platii amenzii, dar NU suspenda masura opririi/desfiintarii lucrarilor.",
    days: 15,
    dayType: "calendar",
    startDateLabel: "Data comunicarii PV",
    requiresCustomStartDate: true,
    startDateHint:
      "Data inmanarii sau comunicarii procesului-verbal de contraventie",
    tacitApprovalApplicable: false,
    category: "litigii",
    legalReference: "OG 2/2001, art. 31 alin. (1)",
    directionFilter: ["intrat"],
  },
  {
    id: "contestatie-cnsc",
    label: "Contestatie CNSC licitatie (10 zile)",
    description:
      "Contestatie la Consiliul National de Solutionare a Contestatiilor (CNSC) impotriva unui act emis in cadrul procedurii de achizitie publica.",
    days: 10,
    dayType: "calendar",
    startDateLabel: "Data comunicarii actului contestat",
    requiresCustomStartDate: true,
    startDateHint:
      "Data la care a fost comunicat actul contestat in cadrul procedurii de achizitie publica",
    tacitApprovalApplicable: false,
    category: "litigii",
    legalReference: "Legea 101/2016, art. 8",
    directionFilter: ["intrat"],
  },
];

export const CATEGORY_LABELS: Record<DeadlineCategory, string> = {
  certificat: "Certificat de Urbanism",
  avize: "Avize",
  completari: "Completari",
  urbanism: "Urbanism (PUD/PUZ/PUG)",
  autorizare: "Autorizare (AD/AC)",
  litigii: "Litigii / Sanctiuni / Contestatii",
};

/** Full categories available per direction (before doc type filtering) */
export const DIRECTION_CATEGORIES: Record<
  RegistryDirection,
  DeadlineCategory[]
> = {
  iesit: ["certificat", "avize", "urbanism", "autorizare", "completari"],
  intrat: ["completari", "litigii"],
};

/**
 * Document types that unlock the full set of construction permitting categories.
 * Other doc types (scrisoare, notificare, etc.) only get completari + litigii.
 */
const FULL_DEADLINE_DOC_TYPES = new Set(["cerere", "aviz"]);

/**
 * Get the ordered list of deadline categories for a given direction + document type.
 * - iesit + cerere/aviz → full set (certificat, avize, urbanism, autorizare, completari)
 * - intrat → completari + litigii (always, regardless of doc type)
 * - iesit + other doc types → only completari
 */
export function getCategoriesForDirection(
  direction: RegistryDirection,
  documentType?: string,
): DeadlineCategory[] {
  const all = DIRECTION_CATEGORIES[direction];
  // If doc type triggers full permitting flow, show all categories for this direction
  if (!documentType || FULL_DEADLINE_DOC_TYPES.has(documentType)) {
    return all;
  }
  // Otherwise, only completari + litigii
  return all.filter((c) => c === "completari" || c === "litigii");
}

/**
 * Get user-selectable deadlines for a category (excludes autoTrack deadlines).
 */
export function getSelectableDeadlines(
  category: DeadlineCategory,
): DeadlineTypeDef[] {
  return DEADLINE_CATALOG.filter(
    (d) => d.category === category && !d.autoTrack,
  );
}

/**
 * Get auto-track deadlines that should be created automatically.
 */
export function getAutoTrackDeadlines(
  category: DeadlineCategory,
): DeadlineTypeDef[] {
  return DEADLINE_CATALOG.filter(
    (d) => d.category === category && d.autoTrack === true,
  );
}

export function getDeadlineType(typeId: string): DeadlineTypeDef | undefined {
  return DEADLINE_CATALOG.find((d) => d.id === typeId);
}

export function getDeadlinesByCategory(
  category: DeadlineCategory,
): DeadlineTypeDef[] {
  return DEADLINE_CATALOG.filter((d) => d.category === category);
}
