PageSourceSearch

https://faf.co.ao/assets/AdminTickets-CFxZhbNg.js

js faf.co.ao collected 2026-10-02 19:10:00 UTC 5,636 bytes, 1 lines download raw bytes

1import{s as L,r as h,b as u,t as P,j as e,L as V}from"./vendor-react-core-_0sZDOLQ.js";import{c as K,B as c,b as n}from"./index-j07E1qHv.js";import{I as p}from"./input-rti45mgP.js";import{L as l}from"./label-7HT5__eZ.js";import{C as w,a as I}from"./card-DHmBnTdH.js";import{D as O,b as E,c as Q,d as z}from"./dialog-C9ty4md6.js";import{S as b,a as f,b as N,c as _,d}from"./select-DHshRvNJ.js";import{t as q}from"./index-CDqomOa1.js";import{h as C}from"./vendor-utils-BRu4i-LD.js";import{_ as H,a0 as G}from"./vendor-lucide-Ddz0eB7N.js";import{m as R}from"./vendor-framer-motion-C1oRD-X5.js";import"./vendor-radix-CFmJ1img.js";import"./vendor-supabase-Ca6cp8v2.js";function ne(){const S=L(),[D,j]=h.useState(!1),[o,g]=h.useState(null),[a,r]=h.useState({ticket_type:"geral",price:"",quantity_available:"",sector:""}),{data:y}=u({queryKey:["admin-matches"],queryFn:()=>n.entities.Match.filter({status:"scheduled"}),initialData:[]}),{data:k}=u({queryKey:["admin-all-tickets"],queryFn:()=>n.entities.Ticket.list(),initialData:[]}),{data:m}=u({queryKey:["admin-ticket-purchases"],queryFn:()=>n.entities.TicketPurchase.list(),initialData:[]}),B=P({mutationFn:t=>n.entities.Ticket.create(t),onSuccess:()=>{S.invalidateQueries(["admin-all-tickets"]),q.success("Bilhete criado"),x()}}),x=()=>{r({ticket_type:"geral",price:"",quantity_available:"",sector:""}),g(null),j(!1)},M=t=>{if(t.preventDefault(),!o){q.error("Selecione um jogo");return}B.mutate({match_id:o,ticket_type:a.ticket_type,price:parseFloat(a.price),quantity_available:parseInt(a.quantity_available),sector:a.sector})},T=m.reduce((t,i)=>t+i.price*i.quantity,0),Y=m.reduce((t,i)=>t+i.quantity,0);return e.jsx("main",{className:"min-h-screen bg-gray-50 py-12",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsx(V,{to:K("Admin"),children:e.jsxs(c,{variant:"ghost",className:"mb-6",children:[e.jsx(H,{className:"w-4 h-4 mr-2"}),"Voltar ao Dashboard"]})}),e.jsxs("div",{className:"mb-8",children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"Gestão de Bilhetes"}),e.jsxs("div",{className:"flex gap-6 mt-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-gray-600",children:"Bilhetes Vendidos"}),e.jsx("p",{className:"text-2xl font-bold text-gray-900",children:Y})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-gray-600",children:"Receita de Bilhetes"}),e.jsxs("p",{className:"text-2xl font-bold text-green-600",children:[T.toLocaleString("pt-AO")," Kz"]})]})]})]}),e.jsxs(c,{onClick:()=>j(!0),className:"mb-6 bg-red-600 hover:bg-red-700",children:[e.jsx(G,{className:"w-4 h-4 mr-2"}),"Adicionar Bilhetes"]}),e.jsx("div",{className:"space-y-6",children:y.map((t,i)=>{const v=k.filter(s=>s.match_id===t.id),A=m.filter(s=>s.match_id===t.id).reduce((s,F)=>s+F.quantity,0);return e.jsx(R.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:i*.05},children:e.jsx(w,{children:e.jsxs(I,{className:"p-6",children:[e.jsxs("div",{className:"mb-4",children:[e.jsxs("h3",{className:"text-xl font-bold text-gray-900 mb-1",children:[t.home_team," vs ",t.away_team]}),e.jsxs("p",{className:"text-sm text-gray-600",children:[C(t.match_date).format("DD/MM/YYYY HH:mm")," • ",t.venue]}),e.jsxs("p",{className:"text-sm text-gray-600 mt-1",children:["Vendidos: ",A," bilhetes"]})]}),v.length>0?e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:v.map(s=>e.jsxs("div",{className:"border rounded-lg p-4",children:[e.jsx("p",{className:"font-semibold text-gray-900 mb-1",children:s.ticket_type.toUpperCase()}),e.jsx("p",{className:"text-sm text-gray-600 mb-2",children:s.sector}),e.jsxs("p",{className:"text-lg font-bold text-red-600 mb-2",children:[s.price.toLocaleString("pt-AO")," Kz"]}),e.jsxs("p",{className:"text-sm text-gray-600",children:["Disponíveis: ",s.quantity_available]})]},s.id))}):e.jsx("p",{className:"text-sm text-gray-500",children:"Nenhum bilhete configurado"})]})})},t.id)})}),e.jsx(O,{open:D,onOpenChange:t=>!t&&x(),children:e.jsxs(E,{children:[e.jsx(Q,{children:e.jsx(z,{children:"Adicionar Bilhetes"})}),e.jsxs("form",{onSubmit:M,className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(l,{children:"Selecionar Jogo *"}),e.jsxs(b,{value:o,onValueChange:g,children:[e.jsx(f,{children:e.jsx(N,{placeholder:"Escolher jogo"})}),e.jsx(_,{children:y.map(t=>e.jsxs(d,{value:t.id,children:[t.home_team," vs ",t.away_team," - ",C(t.match_date).format("DD/MM/YYYY")]},t.id))})]})]}),e.jsxs("div",{children:[e.jsx(l,{children:"Tipo de Bilhete *"}),e.jsxs(b,{value:a.ticket_type,onValueChange:t=>r({...a,ticket_type:t}),children:[e.jsx(f,{children:e.jsx(N,{})}),e.jsxs(_,{children:[e.jsx(d,{value:"vip",children:"VIP"}),e.jsx(d,{value:"bancada",children:"Bancada"}),e.jsx(d,{value:"geral",children:"Geral"})]})]})]}),e.jsxs("div",{children:[e.jsx(l,{children:"Setor *"}),e.jsx(p,{value:a.sector,onChange:t=>r({...a,sector:t.target.value}),placeholder:"Ex: Bancada Norte",required:!0})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx(l,{children:"Preç
1o (Kz) *"}),e.jsx(p,{type:"number",value:a.price,onChange:t=>r({...a,price:t.target.value}),required:!0})]}),e.jsxs("div",{children:[e.jsx(l,{children:"Quantidade *"}),e.jsx(p,{type:"number",value:a.quantity_available,onChange:t=>r({...a,quantity_available:t.target.value}),required:!0})]})]}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(c,{type:"button",variant:"outline",onClick:x,className:"flex-1",children:"Cancelar"}),e.jsx(c,{type:"submit",className:"flex-1 bg-red-600 hover:bg-red-700",children:"Criar Bilhetes"})]})]})]})})]})})}export{ne 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.