PageSourceSearch

https://escortadvisor-b4fe68rl.manus.space/assets/AdminVerificationPanel-CwvlQD4G.js

js escortadvisor-b4fe68rl.manus.space collected 2026-10-03 05:02:19 UTC 15,435 bytes, 6 lines download raw bytes

1import{c as z,f as F,Q as _,r as g,t as d,q as n,j as e,P as y,B as a,_ as T,m as k,Y as U,a8 as E,aw as I,ai as M,M as $}from"./index-cscxoOf9.js";import{C as V}from"./circle-check-so_R1iP7.js";import{R as q}from"./refresh-cw-D0KbhpJJ.js";import{F as A}from"./file-image-CqtoslUB.js";import{V as R}from"./video-DWi6Vwbm.js";import{C as D}from"./circle-x-DHp6YeSD.js";/**
2 * @license lucide-react v0.453.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const S=z("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);function C({status:s}){const r={not_started:{label:"Non iniziato",color:"bg-[#0f1117]/10 text-white/40"},pending:{label:"In attesa",color:"bg-[#C28B2C]/20 text-[#C28B2C] border border-[#C28B2C]/30"},verified:{label:"Verificato",color:"bg-[#3D8B5A]/20 text-[#6DBF8A] border border-green-500/30"},approved:{label:"Approvato",color:"bg-[#3D8B5A]/20 text-[#6DBF8A] border border-green-500/30"},rejected:{label:"Rifiutato",color:"bg-red-500/20 text-red-400 border border-red-500/30"},failed:{label:"Fallito",color:"bg-red-500/20 text-red-400 border border-red-500/30"},in_progress:{label:"In corso",color:"bg-blue-500/20 text-blue-400 border border-blue-500/30"},fully_verified:{label:"Certificata",color:"bg-emerald-500/20 text-emerald-400 border border-emerald-500/30"}},x=r[s]??r.not_started;return e.jsx("span",{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-semibold ${x.color}`,children:x.label})}function Q({verif:s,level:r,onClose:x,onDone:b}){const[p,N]=g.useState(""),o=d.useUtils(),l=d.verification.adminReviewLevel2.useMutation({onSuccess:(i,u)=>{n.success(u.decision==="approved"?"Documento approvato!":"Documento rifiutato"),o.verification.adminList.invalidate(),o.verification.adminCountPending.invalidate(),b()},onError:i=>n.error(i.message)}),m=d.verification.adminReviewLevel3.useMutation({onSuccess:(i,u)=>{n.success(u.decision==="approved"?"🏅 Verifica completata! Escort certificata!":"Video rifiutato"),o.verification.adminList.invalidate(),o.verification.adminCountPending.invalidate(),b()},onError:i=>n.error(i.message)}),h=l.isPending||m.isPending,c=i=>{r===2?l.mutate({escortProfileId:s.escortProfileId,decision:i,note:p||void 0}):m.mutate({escortProfileId:s.escortProfileId,decision:i,note:p||void 0})};r===2||s.verificationVideoUrl;const f=s.selfieDocUrl,j=s.docFrontUrl;return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm",children:e.jsxs("div",{className:"bg-[#0f1117] border border-white/10 rounded-2xl w-full max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-white/8",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"font-['Nunito'] font-bold text-lg text-white",children:["Revisione Livello ",r,": ",r===2?"Documento":"Video"]}),e.jsxs("p",{className:"text-sm text-white/50 font-['Nunito'] mt-0.5",children:[s.profileName," · ",s.profileCity]})]}),e.jsx("button",{onClick:x,className:"text-white/40 hover:text-white/70 transition-colors",children:e.jsx(D,{className:"w-6 h-6"})})]}),e.jsxs("div",{className:"p-6 space-y-6",children:[r===2&&e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-['Nunito'] font-semibold text-white/60 mb-2",children:"Selfie con documento"}),f?e.jsx("a",{href:f,target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:f,alt:"Selfie",className:"w-full h-48 object-cover rounded-xl border border-white/10 hover:opacity-90 transition-opacity cursor-pointer"})}):e.jsx("div",{className:"h-48 bg-[#0f1117]/5 rounded-xl flex items-center justify-center",children:e.jsx("p",{className:"text-xs text-white/30",children:"Non disponibile"})})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-['Nunito'] font-semibold text-white/60 mb-2",children:"Documento fronte"}),j?e.jsx("a",{href:j,target:"_blank",rel:"noopener noreferrer",children:e.jsx("img",{src:j,alt:"Documento",className:"w-full h-48 object-cover rounded-xl border border-white/10 hover:opacity-90 transition-opacity cursor-pointer"})}):e.jsx("div",{className:"h-48 bg-[#0f1117]/5 rounded-xl flex items-center justify-center",children:e.jsx("p",{className:"text-xs text-white/30",children:"Non disponibile"})})]})]}),r===3&&s.verificationVideoUrl&&e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-['Nunito'] font-semibold text-white/60 mb-2",children:"Video di verifica"}),e.jsx("video",{src:s.verificationVideoUrl,controls:!0,className:"w-full rounded-xl border border-white/10 max-h-64"})]}),e.jsxs("div",{className:"bg-[#0f1117]/3 border border-white/8 rounded-xl p-4 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(y,{className:"w-4 h-4 text-white/40"}),e.jsx("span",{className:"text-white/60 font-['Nunito']",children:"Telefono verificato: "}),e.jsx("span",{className:"text-white font-semibold",children:s.phoneNumber??"N/D"})]}),e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[e.jsx(I,{className:"w-4 h-4 text-white/40"}),e.jsx("span",{className:"text-white/60 font-['Nunito']",children:"Profilo ID: "}),e.jsxs("span",{className:"text-white font-semibold",children:["#",s.escortProfileId]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-xs font-['Nunito'] font-semibold text-white/60 block mb-2",children:"Nota per l'escort (opzionale, visibile in caso di rifiuto)"}),e.jsx("textarea",{value:p,onChange:i=>
6N(i.target.value),placeholder:"Es: Le foto non sono chiare, ricarica con migliore illuminazione...",rows:3,className:"w-full bg-[#0f1117]/5 border border-white/10 rounded-xl px-4 py-3 text-sm text-white placeholder:text-white/30 font-['Nunito'] resize-none focus:outline-none focus:border-[#07793e]/40"})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(a,{onClick:()=>c("approved"),disabled:h,className:"flex-1 bg-[#3D8B5A] hover:bg-green-400 text-white font-['Nunito'] font-bold h-11",children:[e.jsx(V,{className:"w-4 h-4 mr-2"}),h?"Salvataggio...":r===3?"Approva — Certifica!":"Approva"]}),e.jsxs(a,{onClick:()=>c("rejected"),disabled:h,variant:"outline",className:"flex-1 border-red-500/30 text-red-400 hover:bg-red-500/10 font-['Nunito'] font-bold h-11",children:[e.jsx(D,{className:"w-4 h-4 mr-2"}),"Rifiuta"]})]})]})]})})}function K(){const{user:s,loading:r}=F(),[,x]=_(),[b,p]=g.useState("in_progress"),[N,o]=g.useState(null),[l,m]=g.useState(null),[h,c]=g.useState(""),{data:f,isLoading:j,refetch:i}=d.verification.adminList.useQuery({status:b,limit:50,offset:0}),{data:u}=d.verification.adminCountPending.useQuery(),P=d.verification.adminApprovePhone.useMutation({onSuccess:()=>{n.success("✅ Numero di telefono verificato manualmente!"),i(),m(null),c("")},onError:t=>n.error(t.message)}),L=d.verification.adminRevokeCertification.useMutation({onSuccess:()=>{n.success("Certificazione revocata"),i()},onError:t=>n.error(t.message)});return r?null:!s||s.role!=="admin"&&s.role!=="superadmin"?e.jsx("div",{className:"min-h-screen bg-[#0a0a14] flex items-center justify-center pb-nav",children:e.jsxs("div",{className:"text-center",children:[e.jsx(S,{className:"w-12 h-12 text-red-400 mx-auto mb-4"}),e.jsx("p",{className:"text-white font-['Nunito'] font-bold",children:"Accesso negato"})]})}):e.jsxs("div",{className:"min-h-screen bg-[#0a0a14] pt-20 pb-16",children:[N&&e.jsx(Q,{verif:N.verif,level:N.level,onClose:()=>o(null),onDone:()=>o(null)}),l&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm",children:e.jsxs("div",{className:"bg-[#0f1117] border border-blue-500/20 rounded-2xl w-full max-w-md p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[e.jsx(y,{className:"w-6 h-6 text-blue-400"}),e.jsxs("div",{children:[e.jsx("h2",{className:"font-['Nunito'] font-bold text-lg text-white",children:"Verifica Telefono Manuale"}),e.jsx("p",{className:"text-sm text-white/50 font-['Nunito'] mt-0.5",children:l.profileName??`Profilo #${l.escortProfileId}`})]})]}),e.jsxs("div",{className:"mb-4",children:[e.jsx("label",{className:"text-xs text-white/50 font-['Nunito'] mb-1.5 block",children:"Numero di telefono (lascia vuoto per usare quello del profilo)"}),e.jsx("input",{type:"tel",value:h,onChange:t=>c(t.target.value),placeholder:l.phoneNumber??"+39 333 000 0000",className:"w-full bg-[#0f1117]/5 border border-white/10 rounded-xl px-4 py-2.5 text-sm text-white placeholder:text-white/25 font-['Nunito'] focus:outline-none focus:border-blue-500/40"})]}),e.jsxs("p",{className:"text-xs text-white/40 font-['Nunito'] mb-5",children:["Confermando, il Livello 1 verrà marcato come ",e.jsx("span",{className:"text-blue-300 font-semibold",children:"Verificato"})," e l'escort riceverà una notifica in-app."]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsxs(a,{onClick:()=>P.mutate({escortProfileId:l.escortProfileId,phoneNumber:h.trim()||void 0}),disabled:P.isPending,className:"flex-1 bg-blue-600 hover:bg-blue-500 text-white font-['Nunito'] font-bold h-11",children:[e.jsx(V,{className:"w-4 h-4 mr-2"}),P.isPending?"Salvataggio...":"Conferma Verifica"]}),e.jsx(a,{onClick:()=>{m(null),c("")},variant:"outline",className:"border-white/10 text-white/60 font-['Nunito'] font-bold h-11",children:"Annulla"})]})]})}),e.jsxs("div",{className:"container max-w-5xl",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-8",children:[e.jsxs("button",{onClick:()=>x("/admin"),className:"flex items-center gap-2 text-sm text-white/40 hover:text-white/70 transition-colors font-['Nunito']",children:[e.jsx(T,{className:"w-4 h-4"}),"Admin"]}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("h1",{className:"font-['Nunito'] font-bold text-2xl text-white flex items-center gap-3",children:[e.jsx(k,{className:"w-7 h-7 text-[#07793e]"}),"Verifiche Identità",(u??0)>0&&e.jsxs("span",{className:"px-2.5 py-0.5 bg-[#C28B2C]/20 text-[#C28B2C] border border-[#C28B2C]/30 rounded-full text-sm font-semibold",children:[u," in attesa"]})]}),e.jsx("p",{className:"text-sm text-white/40 font-['Nunito'] mt-1",children:"Revisiona i documenti e i video delle escort che richiedono la certificazione"})]}),e.jsx(a,{onClick:()=>i(),variant:"outline",size:"sm",className:"border-white/10 text-white/60 hover:text-white",children:e.jsx(q,{className:"w-4 h-4"})})]}),e.jsx("div",{className:"flex gap-2 mb-6 overflow-x-auto pb-1",children:[{id:"in_progress",label:"In corso",icon:U},{id:"all",label:"Tutte",icon:E},{id:"fully_verified",label:"Certificate",icon:k},{id:"rejected",label:"Rifiutate",icon:S}].map(({id:t,label:v,icon:w})=>e.jsxs("button",{onClick:()=>p(t),className:`flex items-center gap-2 px-4 py-2 rounded-xl text-sm font-['Nunito'] font-semibold transition-all whitespace-nowrap ${b===t?"bg-gradient-to-r from-[#07793e] to-[#246068] text-white shadow-lg":"bg-[#0f1117]/5 text-white/40 hover:text-white/70 border border-white/8"}`,children:[e.jsx(w,{className:"w-4 h-4"}),v]},t))}),j?e.jsx("div",{className:"flex items-center justify-center py-16",children:e.jsx("div",{className:"w-8 h-8 border-2 border-[#07793e] border-t-transparent roun
6ded-full animate-spin"})}):f?.length?e.jsx("div",{className:"space-y-4",children:f.map(t=>{const v=t.level2Status==="pending",w=t.level3Status==="pending",B=t.overallStatus==="fully_verified";return e.jsx("div",{className:`bg-[#191D22] border rounded-2xl p-5 ${v||w?"border-[#C28B2C]/20":B?"border-green-500/15":"border-white/8"}`,children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"w-12 h-12 rounded-xl bg-[#0f1117]/5 overflow-hidden shrink-0",children:t.profileAvatarUrl?e.jsx("img",{src:t.profileAvatarUrl,alt:t.profileName,className:"w-full h-full object-cover"}):e.jsx("div",{className:"w-full h-full flex items-center justify-center",children:e.jsx(I,{className:"w-6 h-6 text-white/20"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-['Nunito'] font-bold text-white",children:t.profileName??`Profilo #${t.escortProfileId}`}),e.jsx(C,{status:t.overallStatus}),(v||w)&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 bg-[#C28B2C]/20 text-[#C28B2C] border border-[#C28B2C]/30 rounded-full text-xs font-semibold",children:[e.jsx(M,{className:"w-3 h-3"}),"Revisione richiesta"]})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-1 text-xs text-white/40 font-['Nunito']",children:[t.profileCity&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx($,{className:"w-3 h-3"}),t.profileCity]}),e.jsxs("span",{children:["Profilo #",t.escortProfileId]}),t.certifiedAt&&e.jsxs("span",{className:"text-[#6DBF8A]",children:["Certificata il ",new Date(t.certifiedAt).toLocaleDateString("it-IT")]})]}),e.jsxs("div",{className:"flex items-center gap-3 mt-3 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx(y,{className:"w-3.5 h-3.5 text-white/30"}),e.jsx("span",{className:"text-white/40 font-['Nunito']",children:"Tel:"}),e.jsx(C,{status:t.level1Status})]}),e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx(A,{className:"w-3.5 h-3.5 text-white/30"}),e.jsx("span",{className:"text-white/40 font-['Nunito']",children:"Doc:"}),e.jsx(C,{status:t.level2Status})]}),e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx(R,{className:"w-3.5 h-3.5 text-white/30"}),e.jsx("span",{className:"text-white/40 font-['Nunito']",children:"Video:"}),e.jsx(C,{status:t.level3Status})]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 shrink-0",children:[v&&e.jsxs(a,{size:"sm",onClick:()=>o({verif:t,level:2}),className:"bg-[#C28B2C]/20 hover:bg-[#C28B2C]/30 text-[#C28B2C] border border-[#C28B2C]/30 font-['Nunito'] font-semibold text-xs",children:[e.jsx(A,{className:"w-3.5 h-3.5 mr-1.5"}),"Revisiona Doc"]}),w&&e.jsxs(a,{size:"sm",onClick:()=>o({verif:t,level:3}),className:"bg-[#2F7F88]/20 hover:bg-[#2F7F88]/30 text-[#5BBAC5] border border-[#2F7F88]/30 font-['Nunito'] font-semibold text-xs",children:[e.jsx(R,{className:"w-3.5 h-3.5 mr-1.5"}),"Revisiona Video"]}),t.level1Status!=="verified"&&e.jsxs(a,{size:"sm",onClick:()=>{m(t),c(t.phoneNumber??"")},className:"bg-blue-500/15 hover:bg-blue-500/25 text-blue-300 border border-blue-500/25 font-['Nunito'] font-semibold text-xs",children:[e.jsx(y,{className:"w-3.5 h-3.5 mr-1.5"}),"Verifica Tel."]}),B&&e.jsxs(a,{size:"sm",variant:"outline",onClick:()=>{confirm("Revocare la certificazione di questa escort?")&&L.mutate({escortProfileId:t.escortProfileId,reason:"Revocata dall'amministratore"})},className:"border-red-500/20 text-red-400/60 hover:text-red-400 hover:bg-red-500/10 font-['Nunito'] font-semibold text-xs",children:[e.jsx(S,{className:"w-3.5 h-3.5 mr-1.5"}),"Revoca"]})]})]})},t.id)})}):e.jsxs("div",{className:"text-center py-16",children:[e.jsx(k,{className:"w-12 h-12 text-white/10 mx-auto mb-4"}),e.jsx("p",{className:"text-white/40 font-['Nunito']",children:"Nessuna verifica trovata"})]})]})]})}export{K as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.