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

def gerar_pdf():
    pdf_path = "/home/magdalena/eee/alunos/alessandra-feitosa/analise_area_navegacao_alpha_centauri.pdf"
    doc = SimpleDocTemplate(
        pdf_path,
        pagesize=letter,
        rightMargin=40,
        leftMargin=40,
        topMargin=40,
        bottomMargin=40
    )
    
    styles = getSampleStyleSheet()
    
    # Estilos customizados
    title_style = ParagraphStyle(
        'DocTitle',
        parent=styles['Heading1'],
        fontName='Helvetica-Bold',
        fontSize=20,
        leading=24,
        textColor=colors.HexColor('#0B2545'),
        alignment=0,
        spaceAfter=6
    )
    
    subtitle_style = ParagraphStyle(
        'DocSubtitle',
        parent=styles['Normal'],
        fontName='Helvetica',
        fontSize=11,
        leading=15,
        textColor=colors.HexColor('#134074'),
        spaceAfter=15
    )
    
    h2_style = ParagraphStyle(
        'SectionH2',
        parent=styles['Heading2'],
        fontName='Helvetica-Bold',
        fontSize=13,
        leading=17,
        textColor=colors.HexColor('#0B2545'),
        spaceBefore=12,
        spaceAfter=6
    )
    
    body_style = ParagraphStyle(
        'BodyDark',
        parent=styles['Normal'],
        fontName='Helvetica',
        fontSize=10,
        leading=14,
        textColor=colors.HexColor('#1D2D44'),
        spaceAfter=6
    )
    
    bullet_style = ParagraphStyle(
        'BulletText',
        parent=body_style,
        leftIndent=15,
        firstLineIndent=-10,
        spaceAfter=4
    )
    
    table_header_style = ParagraphStyle(
        'TableHeader',
        parent=styles['Normal'],
        fontName='Helvetica-Bold',
        fontSize=9,
        leading=11,
        textColor=colors.white
    )
    
    table_cell_style = ParagraphStyle(
        'TableCell',
        parent=styles['Normal'],
        fontName='Helvetica',
        fontSize=9,
        leading=12,
        textColor=colors.HexColor('#1D2D44')
    )

    story = []

    # Cabeçalho
    story.append(Paragraph("PARECER TÉCNICO: ANÁLISE DE ÁREA DE NAVEGAÇÃO", title_style))
    story.append(Paragraph("<b>Embarcação:</b> Veleiro Alpha Centauri &nbsp;|&nbsp; <b>Rota:</b> Bahia (BA) → Pará (PA) &nbsp;|&nbsp; <b>Normativa:</b> NORMAM / Marinha do Brasil", subtitle_style))
    story.append(HRFlowable(width="100%", thickness=1.5, color=colors.HexColor('#0B2545'), spaceAfter=15))

    # 1. Caracterização da Embarcação
    story.append(Paragraph("1. Caracterização da Embarcação", h2_style))
    story.append(Paragraph(
        "A partir da análise das linhas e características visuais do projeto, o veleiro <b>Alpha Centauri</b> apresenta casco monocasco moderno de cruzeiro, cabine protegida em estilo <i>Deck Saloon</i>, mastro fracionado/tope com 3 níveis de cruzetas, alta borda livre e guarda-mancebo contínuo de segurança. Trata-se de uma concepção voltada para navegabilidade segura em águas abertas.",
        body_style
    ))
    story.append(Spacer(1, 6))

    # 2. Enquadramento da Rota nas Áreas de Navegação (NORMAM)
    story.append(Paragraph("2. Enquadramento da Rota (Bahia ao Pará)", h2_style))
    story.append(Paragraph(
        "A rota de subida pela costa nordestina e norte brasileira exige a classificação da embarcação em diferentes ambientes regulatórios:",
        body_style
    ))

    # Tabela de Áreas
    table_data = [
        [
            Paragraph("Trecho / Ambiente", table_header_style),
            Paragraph("Classificação NORMAM", table_header_style),
            Paragraph("Enquadramento & Requisitos", table_header_style)
        ],
        [
            Paragraph("<b>Costa Aberta (Rota Principal)</b><br/>Salvador/BA ao litoral do Pará", table_cell_style),
            Paragraph("<b>Mar Aberto - Costeira</b><br/>(ou Oceânica)", table_cell_style),
            Paragraph("• Limite de até 20 milhas náuticas da costa.<br/>• Habilitação mínima: <b>Mestre-Amador</b>.<br/>• Salvatagem: Pirotécnicos classe mar aberto, VHF, coletes NORMAM.", table_cell_style)
        ],
        [
            Paragraph("<b>Pernas Diretas por Fora</b><br/>Cortes de rota em alto-mar (offshore)", table_cell_style),
            Paragraph("<b>Mar Aberto - Oceânica</b><br/>(Sem limite de afastamento)", table_cell_style),
            Paragraph("• Afastamento superior a 20 milhas náuticas.<br/>• Habilitação mínima: <b>Capitão-Amador</b>.<br/>• Salvatagem adicional: Balsa salva-vidas auto-inflável, EPIRB, rádio HF/satélite.", table_cell_style)
        ],
        [
            Paragraph("<b>Pontos de Saída e Escalas</b><br/>Baía de Todos-os-Santos, portos e enseadas", table_cell_style),
            Paragraph("<b>Navegação Interior</b><br/>(Área 1 / Área 2)", table_cell_style),
            Paragraph("• Águas abrigadas ou parcialmente abrigadas.<br/>• Manobras de partida, reabastecimento e abrigo meteorológico.", table_cell_style)
        ],
        [
            Paragraph("<b>Aproximação e Chegada (PA)</b><br/>Baía de Marajó, Rio Pará, Guajará (Belém)", table_cell_style),
            Paragraph("<b>Navegação Interior</b><br/>(Área 2 / Hidrovias)", table_cell_style),
            Paragraph("• Atenção severa à variação de maré (4 a 6 metros), fortes correntes estuarinas e restrições de calado/bancos de areia.", table_cell_style)
        ]
    ]

    t = Table(table_data, colWidths=[130, 130, 270])
    t.setStyle(TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.HexColor('#0B2545')),
        ('ALIGN', (0, 0), (-1, -1), 'LEFT'),
        ('VALIGN', (0, 0), (-1, -1), 'TOP'),
        ('GRID', (0, 0), (-1, -1), 0.5, colors.HexColor('#CBD5E1')),
        ('ROWBACKGROUNDS', (0, 1), (-1, -1), [colors.HexColor('#F8FAFC'), colors.white]),
        ('TOPPADDING', (0, 0), (-1, -1), 6),
        ('BOTTOMPADDING', (0, 0), (-1, -1), 6),
        ('LEFTPADDING', (0, 0), (-1, -1), 6),
        ('RIGHTPADDING', (0, 0), (-1, -1), 6),
    ]))
    story.append(t)
    story.append(Spacer(1, 10))

    # 3. Conclusão e Recomendação Técnica
    story.append(Paragraph("3. Conclusão e Recomendações", h2_style))
    story.append(Paragraph(
        "• <b>Classificação Indicada no TIE/TIEM:</b> O veleiro <i>Alpha Centauri</i> deve ser registrado na Capitania dos Portos como <b>Mar Aberto - Costeira</b> (no mínimo) ou <b>Mar Aberto - Oceânica</b> para permitir a realização integral da rota BA → PA com total conformidade legal.",
        bullet_style
    ))
    story.append(Paragraph(
        "• <b>Pontos de Atenção na Rota:</b> A passagem pelo Cabo de São Roque (RN), Delta do Parnaíba (PI/MA) e a entrada na Baía de Marajó (PA) exigem planejamento prévio de marés, monitoramento de calado e previsão de ventos alísios.",
        bullet_style
    ))
    story.append(Paragraph(
        "• <b>Equipamentos de Segurança:</b> Dotar a embarcação com o conjunto completo de salvatagem correspondente à classe de Mar Aberto pretendida, garantindo redundância de comunicação e navegação autônoma.",
        bullet_style
    ))

    story.append(Spacer(1, 15))
    story.append(HRFlowable(width="100%", thickness=0.8, color=colors.HexColor('#94A3B8'), spaceAfter=8))
    
    footer_style = ParagraphStyle(
        'Footer',
        parent=styles['Normal'],
        fontName='Helvetica-Oblique',
        fontSize=8,
        leading=10,
        textColor=colors.HexColor('#64748B'),
        alignment=1
    )
    story.append(Paragraph("Elaborado por Magdalena (Mada) — Assistente de Arquitetura e Engenharia Naval | EEE / Brana", footer_style))

    doc.build(story)
    print("PDF gerado com sucesso em:", pdf_path)

if __name__ == "__main__":
    gerar_pdf()
