import os
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm

def gerar_lista_verificacao_grupo2(pdf_path):
    doc = SimpleDocTemplate(
        pdf_path,
        pagesize=A4,
        leftMargin=1.5*cm,
        rightMargin=1.5*cm,
        topMargin=1.2*cm,
        bottomMargin=1.2*cm
    )
    
    styles = getSampleStyleSheet()
    azul_brana = colors.HexColor('#002B49')
    azul_claro = colors.HexColor('#EBF3F8')
    cinza_fundo = colors.HexColor('#F4F6F8')
    cinza_borda = colors.HexColor('#D1D5DB')
    texto_escuro = colors.HexColor('#1F2937')
    vermelho = colors.HexColor('#9A3231')
    verde = colors.HexColor('#166534')
    
    title_style = ParagraphStyle(
        'DocTitle', parent=styles['Heading1'],
        fontName='Helvetica-Bold', fontSize=13, leading=16,
        textColor=azul_brana, spaceAfter=2, alignment=1
    )
    sub_style = ParagraphStyle(
        'DocSub', parent=styles['Normal'],
        fontName='Helvetica', fontSize=8, leading=10.5,
        textColor=colors.HexColor('#4B5563'), alignment=1
    )
    aviso_style = ParagraphStyle(
        'Aviso', parent=styles['Normal'],
        fontName='Helvetica-Oblique', fontSize=6.5, leading=8.5,
        textColor=colors.HexColor('#6B7280'), alignment=1
    )
    table_hdr = ParagraphStyle(
        'TableHdr', parent=styles['Normal'],
        fontName='Helvetica-Bold', fontSize=7.5, leading=9,
        textColor=colors.white, alignment=1
    )
    table_cell = ParagraphStyle(
        'TableCell', parent=styles['Normal'],
        fontName='Helvetica', fontSize=7.2, leading=9,
        textColor=texto_escuro
    )
    table_cell_c = ParagraphStyle(
        'TableCellC', parent=styles['Normal'],
        fontName='Helvetica', fontSize=7.2, leading=9,
        textColor=texto_escuro, alignment=1
    )
    table_cell_b = ParagraphStyle(
        'TableCellB', parent=styles['Normal'],
        fontName='Helvetica-Bold', fontSize=7.2, leading=9,
        textColor=azul_brana
    )
    table_cell_status = ParagraphStyle(
        'TableCellStatus', parent=styles['Normal'],
        fontName='Helvetica-Bold', fontSize=7.2, leading=9,
        textColor=verde, alignment=1
    )

    story = []
    
    # Aviso de Direitos Autorais e Cabeçalho do Brana
    story.append(Paragraph("O conteúdo deste material é de uso exclusivo dos alunos matriculados nos cursos do Brana. Este não pode ser reproduzido, copiado, vendido ou transferido. A reprodução total ou parcial de qualquer conteúdo é expressamente proibida e constitui crime de violação de Direito Autoral.", aviso_style))
    story.append(Spacer(1, 0.2*cm))
    story.append(Paragraph("LISTA DE VERIFICAÇÃO — PASTA DE ENTREGA DE DOCUMENTOS DO PROJETO FINAL", title_style))
    story.append(Paragraph("<b>GRUPO 2:</b> Carlos Silva, Cauã e Alessandra Feitosa | <b>EMBARCAÇÃO:</b> Saveiro Tradicional 'Tesouro da Baía' (12,00 m)", sub_style))
    story.append(Paragraph("<b>INSTITUIÇÃO:</b> Estaleiro Escola Embrião (EEE) & Brana Projetos Navais | <b>DATA:</b> 15/10/2026", sub_style))
    story.append(Spacer(1, 0.15*cm))
    story.append(HRFlowable(width="100%", thickness=1.5, color=azul_brana, spaceBefore=1, spaceAfter=5))
    
    headers = [
        Paragraph("<b>DOCUMENTO</b>", table_hdr),
        Paragraph("<b>O QUE É?</b>", table_hdr),
        Paragraph("<b>FORMATO</b>", table_hdr),
        Paragraph("<b>ARQUIVO DO GRUPO 2 / DADOS DO PROJETO</b>", table_hdr),
        Paragraph("<b>STATUS</b>", table_hdr)
    ]
    t_data = [headers]
    
    linhas = [
        ("Caso de Uso", 
         "Documento formal descrevendo a missão operacional, rotas na BTS, perfil dos 12 passageiros e requisitos.", 
         "Digital / DOCX", 
         "Caso_de_Uso_Saveiro_Tesouro_da_Baia.docx (e consolidado no Projeto_Naval_Integral.pdf)", 
         "PRONTO"),
        ("Tabela Similares e Dimensões Principais", 
         "Tabela comparativa preenchida no padrão Brana com os 6 similares (Day Use, É a Vida, IP 38, Shannon, Dhow, Rabelo).", 
         "Papel / PDF", 
         "estudo_similares_grupo_2.pdf / Tabela_Similares_Pesos_Centros_Grupo2.pdf", 
         "PRONTO"),
        ("Plano de Linhas do Projeto do Grupo", 
         "Prancha técnica oficial A3 com as 3 vistas (Perfil, Topo e Balizas) gerada a partir da Tabela V4.", 
         "Papel / PDF", 
         "Plano-de-Linhas-Tesouro-da-Baia-Alessandra-Feitosa.pdf (Escala A3)", 
         "PRONTO"),
        ("Similar 1 - Arranjo Geral", 
         "Layout de convés e planta baixa do Saveiro Day Use (12,0 m).", 
         "Papel / Img", 
         "Arranjo de convés com casaria tradicional de popa e porão aberto", 
         "PRONTO"),
        ("Similar 1 - Perfil", 
         "Vista lateral / perfil do Saveiro Day Use na BTS.", 
         "Papel / Img", 
         "croqui_12m_350m_190m.jpg (Perfil de tosado e cavername)", 
         "PRONTO"),
        ("Similar 2 - Arranjo Geral", 
         "Planta baixa do Saveiro tradicional 'É a Vida' (12,2 m - Valença).", 
         "Papel / Img", 
         "croqui_cotado_12m_380m.jpg (Arranjo de mastreação e praça de carga)", 
         "PRONTO"),
        ("Similar 2 - Perfil", 
         "Perfil longitudinal do Saveiro 'É a Vida'.", 
         "Papel / Img", 
         "FOTO DO RASCUNHO.jpg (Perfil de linhas de água e quilha corrida)", 
         "PRONTO"),
        ("Similar 3 - Arranjo Geral", 
         "Layout de convés do Island Packet 38 / Dhow tradicional.", 
         "Papel / PDF", 
         "preview_similares-1.png (Plantas baixas dos similares catalogados)", 
         "PRONTO"),
        ("Similar 3 - Perfil", 
         "Vista lateral do Island Packet 38 / Shannon 38.", 
         "Papel / PDF", 
         "tabela_estudo_similares_original.jpg (Fichas e perfis de referência)", 
         "PRONTO"),
        ("Arranjo Geral do Projeto do Grupo", 
         "Esboço cotado e planta do Tesouro da Baía (12,0 m x 4,36 m): tijupá de popa, praça de carga e carlinga do mastro.", 
         "Papel / JPG", 
         "croqui_papel_milimetrado_tesouro_da_baia.jpg (Rascunho oficial em escala)", 
         "PRONTO"),
        ("Relatório de Predição de Velocidade", 
         "Painel interativo e memória de cálculo de velocidade pelos métodos de Dave Gerr e John Teale.", 
         "Digital / HTML", 
         "Estimativa-Velocidade-Caua.html (Cruzeiro 6,8 nós / Máx 7,7 nós com 40 HP)", 
         "PRONTO"),
        ("Condição Pesos e Centros - Leve", 
         "Quadro de pesos da estrutura nua (chapa 25/28 mm, 30 cavernas, quilha corrida): Lightship = 3.881 kg.", 
         "Papel / PDF", 
         "Memoria_Calculo_Pesos_Arranjo_Estrutural_Tesouro_da_Baia.pdf", 
         "PRONTO"),
        ("Condição Pesos e Centros - Carregado", 
         "Quadro de carga plena (14.500 kg): lastro de 550 kg (z=0,08 m), motor 40 HP, tanques e carga útil.", 
         "Papel / PDF", 
         "Exercicio_Pesos_e_Centros_CG_Grupo2.pdf (LCG=5,31 m | VCG=1,18 m | Trim 0°)", 
         "PRONTO"),
        ("Relatório Estruturas", 
         "Memória de cálculo de escantilhões e painel interativo pelo ABS Guide (1994) e regra de Dave Gerr.", 
         "Digital / HTML", 
         "Arranjo-Estrutural-Redondo-Caua.html (Fundo 25 mm, FS=2,77 | Costado 28 mm, FS=2,95)", 
         "PRONTO"),
        ("Relatório Balanço Vélico", 
         "Painel interativo de plano vélico: vela de pena de 95 m², mastro de 14,5 m, lead de 11,2% e Dellenbaugh 14,8°.", 
         "Digital / HTML", 
         "Plano Velico - Caua.html (Estabilidade até 180° e rig tradicional da Bahia)", 
         "PRONTO"),
        ("Apresentação Final do Projeto", 
         "Dossiê / Memorial Técnico completo reunindo missão, linhas, hidrostática, pesos, estrutura e rigging.", 
         "Digital / PDF", 
         "Projeto_Naval_Integral_Tesouro_da_Baia_Grupo_2.pdf (Memorial Consolidado)", 
         "PRONTO")
    ]
    
    for doc_nome, oque, fmt, arq, status in linhas:
        t_data.append([
            Paragraph(f"<b>{doc_nome}</b>", table_cell_b),
            Paragraph(oque, table_cell),
            Paragraph(fmt, table_cell_c),
            Paragraph(arq, table_cell),
            Paragraph(status, table_cell_status)
        ])
        
    col_widths = [3.8*cm, 4.4*cm, 1.8*cm, 6.4*cm, 1.6*cm]
    t = Table(t_data, colWidths=col_widths)
    t.setStyle(TableStyle([
        ('BACKGROUND', (0,0), (-1,0), azul_brana),
        ('GRID', (0,0), (-1,-1), 0.5, cinza_borda),
        ('ROWBACKGROUNDS', (0,1), (-1,-1), [colors.white, cinza_fundo]),
        ('TOPPADDING', (0,0), (-1,-1), 2.5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 2.5),
        ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
        ('BACKGROUND', (4,1), (4,-1), colors.HexColor('#DCFCE7')),
    ]))
    story.append(t)
    story.append(Spacer(1, 0.2*cm))
    
    # Rodapé institucional
    story.append(HRFlowable(width="100%", thickness=0.8, color=cinza_borda, spaceBefore=2, spaceAfter=4))
    story.append(Paragraph("<i>Lista de Verificação Oficial preenchida para o Grupo 2 — Curso de Design Profissional de Embarcações (Brana / Estaleiro Escola Embrião).</i>", ParagraphStyle('RodFinal', parent=sub_style, fontSize=7, textColor=colors.HexColor('#6B7280'), alignment=1)))
    
    doc.build(story)

if __name__ == '__main__':
    gerar_lista_verificacao_grupo2('/home/magdalena/eee/alunos/carlos-silva/grupo-2-tesouro-da-baia/Lista_Verificacao_Entregas_Grupo2.pdf')
