import{a as B}from"./chunk-JGH6I3KN.js";import{c as U,d as P,g as j,k as z,l as H,n as W,t as $}from"./chunk-UDFQV3WY.js";import{a as _}from"./chunk-MBEC6LK4.js";import{Bb as N,Eb as n,Fa as r,Fb as d,Hb as M,Hc as O,Jb as E,Kb as C,Lb as h,M as T,R as x,S as u,Ta as I,Tb as k,Vb as A,Ya as b,ca as f,jb as c,kb as e,lb as t,mb as w,pc as R,qb as v,qc as V,rb as g,rc as L,sb as p,vc as D,xc as F}from"./chunk-TVKQFRWX.js";import{a as y,b as S}from"./chunk-DAQOROHW.js";function G(l,a){if(l&1&&(e(0,"div",17),n(1),t()),l&2){let i=p();r(),d(i.message())}}function J(l,a){l&1&&(e(0,"div",18),n(1,"Chargement\u2026"),t())}function K(l,a){l&1&&(e(0,"div",18),n(1,"Aucune demande dans cette cat\xE9gorie."),t())}function Q(l,a){if(l&1){let i=v();e(0,"tr",26)(1,"td",27),n(2),t(),e(3,"td",22)(4,"strong",28),n(5),t(),e(6,"span",29),n(7),t()(),e(8,"td",22)(9,"strong",30),n(10),t(),e(11,"span",29),n(12),t()(),e(13,"td",22)(14,"span",31),n(15),t()(),e(16,"td",32),n(17),k(18,"date"),t(),e(19,"td",23)(20,"button",33),g("click",function(){let o=x(i).$implicit,m=p(2);return u(m.open(o))}),n(21,"Voir et traiter"),t()()()}if(l&2){let i=a.$implicit,s=p(2);N("bg-red-50",i.status===s.ContactStatus.NON_LU),r(2),d(i.referenceNumber||"\u2014"),r(3),d(i.name),r(2),d(i.email),r(3),d(s.typeLabel(i.type)),r(2),d(i.category),r(2),c("ngClass",s.statusClass(i.status)),r(),d(s.statusLabel(i.status)),r(2),d(A(18,10,i.createdAt,"dd/MM/yyyy HH:mm"))}}function X(l,a){if(l&1&&(e(0,"div",19)(1,"table",20)(2,"thead",21)(3,"tr")(4,"th",22),n(5,"R\xE9f\xE9rence"),t(),e(6,"th",22),n(7,"Demandeur"),t(),e(8,"th",22),n(9,"Type et motif"),t(),e(10,"th",22),n(11,"Statut"),t(),e(12,"th",22),n(13,"Date"),t(),e(14,"th",23),n(15,"Action"),t()()(),e(16,"tbody",24),b(17,Q,22,13,"tr",25),t()()()),l&2){let i=p();r(17),c("ngForOf",i.filtered())}}function Y(l,a){if(l&1){let i=v();e(0,"div",34)(1,"div",35)(2,"header",36)(3,"div")(4,"p",37),n(5),t(),e(6,"h2",38),n(7),t()(),e(8,"button",39),g("click",function(){x(i);let o=p();return u(o.close())}),n(9,"\xD7"),t()(),e(10,"div",40)(11,"div",41)(12,"div")(13,"p",42),n(14,"Demandeur"),t(),e(15,"p",43),n(16),t(),e(17,"p",44),n(18),w(19,"br"),n(20),t()(),e(21,"div")(22,"p",42),n(23,"Informations"),t(),e(24,"p",45),n(25),t(),e(26,"span",46),n(27),t()()(),e(28,"div")(29,"p",42),n(30,"Description"),t(),e(31,"p",47),n(32),t()(),e(33,"div",48)(34,"button",49),g("click",function(){let o=x(i).ngIf,m=p();return u(m.changeStatus(o,"EN_TRAITEMENT"))}),n(35,"Mettre en traitement"),t(),e(36,"button",50),g("click",function(){let o=x(i).ngIf,m=p();return u(m.changeStatus(o,"TRAITE"))}),n(37,"Marquer trait\xE9e"),t(),e(38,"button",51),g("click",function(){let o=x(i).ngIf,m=p();return u(m.changeStatus(o,"ARCHIVE",!0))}),n(39,"Archiver"),t()(),e(40,"div")(41,"label",52),n(42,"R\xE9ponse ou note de traitement"),t(),e(43,"textarea",53),h("ngModelChange",function(o){x(i);let m=p();return C(m.responseText,o)||(m.responseText=o),u(o)}),t(),e(44,"p",54),n(45,"L\u2019enregistrement de cette r\xE9ponse classe automatiquement la demande comme trait\xE9e."),t()(),e(46,"div",55)(47,"button",56),g("click",function(){let o=x(i).ngIf,m=p();return u(m.remove(o))}),n(48,"Supprimer"),t(),e(49,"button",57),g("click",function(){x(i);let o=p();return u(o.saveResponse())}),n(50),t()()()()()}if(l&2){let i=a.ngIf,s=p();r(5),d(i.referenceNumber),r(2),M("",s.typeLabel(i.type)," \u2014 ",i.subject),r(9),d(i.name),r(2),d(i.email),r(2),d(i.phone||"T\xE9l\xE9phone non renseign\xE9"),r(5),d(i.category),r(),c("ngClass",s.statusClass(i.status)),r(),d(s.statusLabel(i.status)),r(5),d(i.message),r(11),E("ngModel",s.responseText),r(6),c("disabled",s.saving()||!s.responseText.trim()),r(),d(s.saving()?"Enregistrement\u2026":"Enregistrer le traitement")}}var q=class l{http=T(O);complaints=f([]);loading=f(!0);selected=f(null);saving=f(!1);message=f("");statusFilter="";responseText="";ContactStatus=B;constructor(){this.load()}load(){this.loading.set(!0),this.http.get(`${_.apiUrl}/contacts/complaints`,{params:{page:0,size:100}}).subscribe({next:a=>{this.complaints.set(a.data?.content??[]),this.loading.set(!1)},error:()=>{this.message.set("Impossible de charger les plaintes."),this.loading.set(!1)}})}filtered(){return this.statusFilter?this.complaints().filter(a=>a.status===this.statusFilter):this.complaints()}open(a){this.selected.set(a),this.responseText=a.response||"",a.status==="NON_LU"&&this.changeStatus(a,"LU",!1)}close(){this.selected.set(null),this.responseText=""}changeStatus(a,i,s=!1){this.http.put(`${_.apiUrl}/contacts/${a.id}/status`,{status:i}).subscribe({next:()=>{this.load(),s?this.close():this.selected.update(o=>o?S(y({},o),{status:i}):null)}})}saveResponse(){let a=this.selected();!a||!this.responseText.trim()||(this.saving.set(!0),this.http.post(`${_.apiUrl}/contacts/${a.id}/respond`,{response:this.responseText.trim()}).subscribe({next:()=>{this.message.set("R\xE9ponse et traitement enregistr\xE9s."),this.saving.set(!1),this.close(),this.load()},error:()=>{this.message.set("L\u2019enregistrement de la r\xE9ponse a \xE9chou\xE9."),this.saving.set(!1)}}))}remove(a){confirm(`Supprimer la demande ${a.referenceNumber||a.id} ?`)&&this.http.delete(`${_.apiUrl}/contacts/${a.id}`).subscribe({next:()=>{this.close(),this.load()}})}typeLabel(a){return{PLAINTE:"Plainte",RECLAMATION:"R\xE9clamation",DEMANDE_INFORMATION:"Demande d\u2019information"}[a||""]||"Demande"}statusLabel(a){return{NON_LU:"Nouvelle",LU:"Lue",EN_TRAITEMENT:"En traitement",TRAITE:"Trait\xE9e",ARCHIVE:"Archiv\xE9e"}[a]||a}statusClass(a){return{NON_LU:"bg-red-100 text-red-700",LU:"bg-blue-100 text-blue-700",EN_TRAITEMENT:"bg-amber-100 text-amber-700",TRAITE:"bg-emerald-100 text-emerald-700",ARCHIVE:"bg-slate-100 text-slate-600"}[a]||"bg-slate-100"}static \u0275fac=function(i){return new(i||l)};static \u0275cmp=I({type:l,selectors:[["app-complaints"]],decls:29,vars:6,consts:[[1,"space-y-6"],[1,"flex","flex-col","gap-4","sm:flex-row","sm:items-end","sm:justify-between"],[1,"text-2xl","font-bold","text-slate-900"],[1,"mt-1","text-slate-500"],[1,"mb-1","block","text-xs","font-semibold","text-slate-500"],[1,"input","min-w-52",3,"ngModelChange","ngModel"],["value",""],["value","NON_LU"],["value","LU"],["value","EN_TRAITEMENT"],["value","TRAITE"],["value","ARCHIVE"],["class","rounded-xl border border-primary-200 bg-primary-50 px-4 py-3 text-sm text-primary-800",4,"ngIf"],[1,"overflow-hidden","rounded-2xl","border","border-slate-200","bg-white","shadow-sm"],["class","p-10 text-center text-slate-500",4,"ngIf"],["class","overflow-x-auto",4,"ngIf"],["class","fixed inset-0 z-50 flex items-center justify-center bg-slate-950/55 p-4",4,"ngIf"],[1,"rounded-xl","border","border-primary-200","bg-primary-50","px-4","py-3","text-sm","text-primary-800"],[1,"p-10","text-center","text-slate-500"],[1,"overflow-x-auto"],[1,"w-full","min-w-[850px]","text-left","text-sm"],[1,"bg-slate-50","text-xs","uppercase","tracking-wide","text-slate-500"],[1,"px-5","py-4"],[1,"px-5","py-4","text-right"],[1,"divide-y","divide-slate-100"],["class","hover:bg-slate-50",3,"bg-red-50",4,"ngFor","ngForOf"],[1,"hover:bg-slate-50"],[1,"px-5","py-4","font-mono","text-xs","font-bold","text-primary-800"],[1,"block","text-slate-900"],[1,"text-xs","text-slate-500"],[1,"block"],[1,"rounded-full","px-2.5","py-1","text-xs","font-bold",3,"ngClass"],[1,"px-5","py-4","text-slate-500"],["type","button",1,"rounded-lg","border","border-primary-300","px-3.5","py-2","font-semibold","text-primary-700","hover:bg-primary-50",3,"click"],[1,"fixed","inset-0","z-50","flex","items-center","justify-center","bg-slate-950/55","p-4"],[1,"max-h-[94vh]","w-full","max-w-3xl","overflow-y-auto","rounded-2xl","bg-white","shadow-2xl"],[1,"flex","items-center","justify-between","border-b","border-slate-200","p-6"],[1,"font-mono","text-xs","font-bold","text-primary-700"],[1,"mt-1","text-xl","font-bold"],["type","button",1,"flex","h-10","w-10","items-center","justify-center","rounded-full","bg-slate-100","text-2xl",3,"click"],[1,"space-y-6","p-6"],[1,"grid","gap-4","rounded-xl","bg-slate-50","p-5","sm:grid-cols-2"],[1,"text-xs","font-semibold","uppercase","text-slate-400"],[1,"mt-1","font-semibold"],[1,"text-sm","text-slate-600"],[1,"mt-1"],[1,"mt-2","inline-block","rounded-full","px-2.5","py-1","text-xs","font-bold",3,"ngClass"],[1,"mt-2","whitespace-pre-wrap","leading-7","text-slate-700"],[1,"flex","flex-wrap","gap-2","border-y","border-slate-200","py-4"],["type","button",1,"rounded-lg","bg-amber-100","px-4","py-2","text-sm","font-bold","text-amber-800",3,"click"],["type","button",1,"rounded-lg","bg-emerald-100","px-4","py-2","text-sm","font-bold","text-emerald-800",3,"click"],["type","button",1,"rounded-lg","bg-slate-100","px-4","py-2","text-sm","font-bold","text-slate-700",3,"click"],["for","processing-response",1,"label"],["id","processing-response","placeholder","Saisissez la r\xE9ponse apport\xE9e ou les actions r\xE9alis\xE9es...",1,"input","min-h-32",3,"ngModelChange","ngModel"],[1,"mt-1","text-xs","text-slate-500"],[1,"flex","justify-between","gap-3"],["type","button",1,"rounded-lg","border","border-red-300","px-4","py-2.5","font-semibold","text-red-600",3,"click"],["type","button",1,"btn-primary","disabled:opacity-50",3,"click","disabled"]],template:function(i,s){i&1&&(e(0,"div",0)(1,"div",1)(2,"div")(3,"h1",2),n(4,"Plaintes et r\xE9clamations"),t(),e(5,"p",3),n(6,"Consultez, traitez et archivez les demandes re\xE7ues depuis le site."),t()(),e(7,"div")(8,"label",4),n(9,"Filtrer par statut"),t(),e(10,"select",5),h("ngModelChange",function(m){return C(s.statusFilter,m)||(s.statusFilter=m),m}),e(11,"option",6),n(12,"Toutes les demandes"),t(),e(13,"option",7),n(14,"Nouvelles"),t(),e(15,"option",8),n(16,"Lues"),t(),e(17,"option",9),n(18,"En traitement"),t(),e(19,"option",10),n(20,"Trait\xE9es"),t(),e(21,"option",11),n(22,"Archiv\xE9es"),t()()()(),b(23,G,2,1,"div",12),e(24,"div",13),b(25,J,2,0,"div",14)(26,K,2,0,"div",14)(27,X,18,1,"div",15),t()(),b(28,Y,51,13,"div",16)),i&2&&(r(10),E("ngModel",s.statusFilter),r(13),c("ngIf",s.message()),r(2),c("ngIf",s.loading()),r(),c("ngIf",!s.loading()&&s.filtered().length===0),r(),c("ngIf",!s.loading()&&s.filtered().length),r(),c("ngIf",s.selected()))},dependencies:[F,R,V,L,$,H,W,U,z,P,j,D],encapsulation:2})};export{q as ComplaintsComponent};