1import{cy as j,co as _,ci as t,C as b,Z as C}from"./vendor_react-BSZ3ZSnj.js";import{a3 as w,al as x,w as m,E as A,A as S}from"./index-BN1ca3Vx.js";import{u as v}from"./useCurrentStudent-CTn1qrdz.js";import{b as E,S as y}from"./desempenhoService-CnE44fLy.js";import{a as I}from"./StatusBadge-BRrzJbNr.js";import{L as T}from"./ListRow-CdSJH841.js";import{P as R}from"./ProgressRing-CHhC1a40.js";import{S as q}from"./SectionHeader-DNGJbtsl.js";import{a as g}from"./frequencia-BYTFPIDh.js";import"./vendor_supabase-knI-Pje1.js";import"./badge-yJoinezF.js";async function L(a){try{return await M(a)}catch(r){throw w.error("Erro ao carregar frequência:",r),r}}async function M(a){const{data:r,error:o}=await x.from("attendance").select(` 2 attendance_date, 3 status, 4 class_id, 5 notes, 6 document_url 7 `).eq("student_id",a).order("attendance_date",{ascending:!1});if(o)throw o;const{data:i}=await x.from("inscricoes").select(` 8 turma_id, 9 curso_id, 10 cursos(nome_curso), 11 turmas(nome, curso_id) 12 `).eq("aluno_id",a).in("status",["matriculada","em_andamento","concluida","reprovado"]),n=new Map;i?.forEach(e=>{const c=Array.isArray(e.cursos)?e.cursos[0]:e.cursos,l=Array.isArray(e.turmas)?e.turmas[0]:e.turmas,p=e.curso_id||l?.curso_id,f={courseName:c?.n
12ome_curso||"Curso",turmaName:l?.nome||"Turma",turmaId:e.turma_id||""};p&&n.set(p,f),e.turma_id&&n.set(e.turma_id,f)});const s=(r||[]).map(e=>{const c=n.get(e.class_id)||{courseName:"Curso",turmaName:"Turma"};return{date:e.attendance_date,status:e.status,notes:e.notes||void 0,documentUrl:e.document_url||void 0,courseName:c.courseName,turmaName:c.turmaName}}),d=(await E({alunoId:a})).filter(e=>!!e.turma_id&&e.aulas>0&&y.has(e.status)).map(e=>{const c=n.get(e.turma_id);return{turmaId:e.turma_id,turmaName:c?.turmaName||"Turma",courseName:c?.courseName||"Curso",totalClasses:e.aulas,presentCount:e.presentes-e.justificadas,absentCount:e.faltas,justifiedCount:e.justificadas,percentage:e.frequencia}});return{records:s,summaries:d}}function U(){const{student:a,loading:r}=v(),{data:o,isLoading:i,refetch:n}=j({queryKey:["student-attendance",a?.id],queryFn:()=>L(a.id),enabled:!!a?.id,meta:{persist:!1}});return{records:o?.records??[],summaries:o?.summaries??[],loading:r||!!a?.id&&i,refresh:async()=>{await n()}}}const N=20,h=["bg-tint-2","bg-tint-3","bg-tint-1"];function H(){const{records:a,summaries:r,loading:o}=U(),[i,n]=_.useState(N);return o?t.jsxs("div",{className:"space-y-4 pt-2","aria-live":"polite",children:[t.jsx(m,{className:"h-28 w-full rounded-3xl"}),t.jsx(m,{className:"h-14 w-full rounded-xl"}),t.jsx(m,{className:"h-14 w-full rounded-xl"})]}):r.length===0?t.jsx("div",{className:"pt-2",children:t.jsx("div",{className:"rounded-3xl bg-tint-4",children:t.jsx(A,{icon:b,title:"Nenhum registro de frequência",description:"Ainda não há registros de presença para os seus cursos.",size:"compact"})})}):t.jsxs("div",{className:"space-y-5 pb-2",children:[t.jsx("section",{className:"space-y-3 md:card-grid md:items-start md:gap-3 md:space-y-0",children:r.map((s,u)=>
12t.jsxs("div",{className:S("flex items-center gap-4 rounded-3xl p-4",h[u%h.length]),children:[t.jsx(R,{value:s.percentage,size:56}),t.jsxs("div",{className:"min-w-0 flex-1",children:[t.jsx("p",{className:"text-sm font-semibold leading-tight break-words",children:s.courseName}),t.jsx("p",{className:"mt-0.5 text-xs text-muted-foreground break-words",children:s.turmaName}),t.jsxs("p",{className:"mt-1.5 text-xs text-muted-foreground tabular-nums",children:[t.jsxs("span",{className:"text-success-strong font-medium",children:[s.presentCount," P"]})," · ",t.jsxs("span",{className:"text-destructive-strong font-medium",children:[s.absentCount," F"]})," · ",t.jsxs("span",{className:"font-medium",children:[s.justifiedCount," J"]})," · ",s.totalClasses," aulas"]}),s.percentage<g&&t.jsxs("p",{className:"mt-1 text-xs font-medium text-warning-strong",children:["Frequência abaixo de ",g,"%"]})]})]},s.turmaId))}),t.jsxs("section",{children:[t.jsx(q,{title:"Registros"}),t.jsx("div",{className:"space-y-1 md:card-grid md:gap-x-8 md:space-y-0",children:a.slice(0,i).map((s,u)=>t.jsx(T,{title:new Date(s.date+"T12:00:00").toLocaleDateString("pt-BR"),subtitle:`${s.courseName} · ${s.turmaName}${s.notes?` â ${s.notes}`:""}`,trailing:t.jsxs("span",{className:"flex items-center gap-2",children:[s.documentUrl&&t.jsx("a",{href:s.documentUrl,target:"_blank",rel:"noopener noreferrer","aria-label":"Abrir anexo",className:"flex size-9 items-center justify-center rounded-full transition-colors active:bg-accent/60",onClick:d=>d.stopPropagation(),children:t.jsx(C,{className:"size-4 text-primary"})}),t.jsx(I,{domain:"attendance",status:s.status})]})},`${s.date}-${u}`))}),a.length>i&&t.jsxs("button",{type:"button",onClick:()=>n(s=>s+N),className:"mt-2 h-11 w-full rounded-full border bg-card text-sm font-medium transition-colors active:bg-accent/60",children:["Mostrar mais (",a.length-i," restantes)"]})]})]})}export{H as MobileStudentAttendance};
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.