import sys
import smtplib
import mysql.connector
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime

# Configurações de Log (Opcional)
import logging
# logging.basicConfig(filename='/var/www/html/balanca/saida.log', level=logging.INFO)

# Verifica se o script recebeu o argumento ticket_pesagem
if len(sys.argv) < 2:
    print("Erro: Argumento ticket_pesagem não fornecido.")
    sys.exit(1)

ticket_pesagem = sys.argv[1]

# Configurações do banco de dados
db_config = {
    'host': 'localhost',
    'user': 'ti',
    'password': '@vale.123',
    'database': 'balanca'
}

def format_date(dt_obj):
    """Função auxiliar para formatar datas ou retornar N/A"""
    if dt_obj:
        return dt_obj.strftime("%d/%m/%Y %H:%M:%S")
    return "N/A"

def format_number(num):
    """Função auxiliar para formatar pesos"""
    if num is not None:
        return f"{float(num):.2f} KG"
    return "0.00 KG"

# Função para obter os detalhes do ticket de pesagem
def get_ticket_details(ticket_pesagem):
    try:
        conn = mysql.connector.connect(**db_config)
        cursor = conn.cursor(dictionary=True)

        query = """
            SELECT id, driver_name, plate_number, carrier, arrival_time, status, entry_authorized_by,
                   entry_authorized_time, enter_vehicle_time, entry_weighed_time, entry_weighed_by, carreta, 
                   tara, peso_bruto, romaneio, notafiscal, book, carga, loading_started_time,
                   loading_started_by, arrival_time_by, loading_completed_time, loading_completed_by, 
                   exit_weighed_time, exit_weighed_by, peso_final
            FROM entrada_veiculo
            WHERE id = %s
        """
        cursor.execute(query, (ticket_pesagem,))
        ticket = cursor.fetchone()
        conn.close()

        if ticket:
            return ticket
        else:
            print(f"Erro: Ticket de pesagem {ticket_pesagem} não encontrado.")
            sys.exit(1)

    except mysql.connector.Error as err:
        print(f"Erro ao conectar ao banco de dados: {err}")
        sys.exit(1)

# Enviar o e-mail
def send_email(subject, body, to_email):
    from_email = "ticocodovale@gmail.com"
    from_password = "xnpo tcss xkug phrr" 
    smtp_server = "smtp.gmail.com"
    smtp_port = 587

    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'html'))

    try:
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()
        server.login(from_email, from_password)
        server.sendmail(from_email, to_email, msg.as_string())
        server.quit()
        print(f"E-mail enviado para {to_email} com sucesso!")
    except Exception as e:
        print(f"Erro ao enviar o e-mail para {to_email}: {e}")

def main():
    ticket = get_ticket_details(ticket_pesagem)

    if ticket:
        # --- Processamento de Datas e Tempos ---
        hora_entrada_brasileira = format_date(ticket['arrival_time'])
        hora_autorizacao = format_date(ticket['entry_authorized_time'])
        hora_entrada_veiculo = format_date(ticket['enter_vehicle_time'])
        hora_pesagem_inicial = format_date(ticket['entry_weighed_time'])
        hora_inicio_processo = format_date(ticket['loading_started_time'])
        hora_fim_processo = format_date(ticket['loading_completed_time'])
        hora_pesagem_final = format_date(ticket['exit_weighed_time'])

        # Cálculo de tempo gasto
        tempo_gasto_formatado = "N/A"
        if ticket['loading_started_time'] and ticket['loading_completed_time']:
            tempo_gasto = ticket['loading_completed_time'] - ticket['loading_started_time']
            tempo_gasto_formatado = str(tempo_gasto)

        # --- Lógica Condicional para Campos Opcionais (Book, Romaneio, Carreta) ---
        
        # 1. Romaneio
        row_romaneio = ""
        if ticket['romaneio']:
            row_romaneio = f"""
            <tr>
                <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Romaneio:</td>
                <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['romaneio']}</td>
            </tr>"""

        # 2. Book
        row_book = ""
        if ticket['book']:
            row_book = f"""
            <tr>
                <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Book:</td>
                <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['book']}</td>
            </tr>"""
            
        # 3. Carreta (Placa)
        # Verifica se existe valor e se não está vazio
        txt_carreta = ""
        if ticket['carreta']:
             txt_carreta = f" / {ticket['carreta']} (Carreta)"

        # --- Construção do Corpo do E-mail ---
        subject = f"Pesagem Finalizada: {ticket['carrier']} - Placa {ticket['plate_number']}"
        
        body = f"""
        <!DOCTYPE html>
        <html>
        <head>
            <meta charset="UTF-8">
            <style>
                body {{ font-family: 'Segoe UI', Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 0; }}
                .container {{ max-width: 650px; margin: 20px auto; background-color: #ffffff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }}
                .header {{ background-color: #006400; color: #ffffff; padding: 25px; text-align: center; }}
                .content {{ padding: 30px; color: #333333; }}
                .section-title {{ font-size: 14px; font-weight: bold; text-transform: uppercase; color: #006400; border-bottom: 2px solid #eee; padding-bottom: 8px; margin-top: 25px; margin-bottom: 10px; }}
                .data-table {{ width: 100%; border-collapse: collapse; }}
                .data-table td {{ padding: 8px; font-size: 14px; }}
                .label {{ color: #666666; width: 45%; }}
                .value {{ color: #000000; font-weight: bold; }}
                .highlight-box {{ background-color: #f1f8e9; border: 1px solid #c8e6c9; border-radius: 6px; padding: 15px; margin-bottom: 20px; }}
                .weight-display {{ font-size: 24px; color: #006400; font-weight: bold; display: block; }}
                .weight-label {{ font-size: 12px; color: #555; text-transform: uppercase; }}
                .footer {{ background-color: #f8f9fa; padding: 15px; text-align: center; font-size: 12px; color: #888888; border-top: 1px solid #eeeeee; }}
            </style>
        </head>
        <body style="font-family: 'Segoe UI', Arial, sans-serif; background-color: #f4f4f4; margin: 0; padding: 0;">
            
            <div class="container" style="max-width: 650px; margin: 20px auto; background-color: #ffffff; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1);">
                
                <div class="header" style="background-color: #006400; color: #ffffff; padding: 25px; text-align: center;">
                    <h2 style="margin: 0; font-size: 24px; font-weight: 600;">Controle de Pátio</h2>
                    <p style="margin: 5px 0 0; font-size: 14px; opacity: 0.9;">Relatório de Pesagem Final</p>
                </div>

                <div class="content" style="padding: 30px; color: #333333;">
                    
                    <div class="highlight-box" style="background-color: #f1f8e9; border: 1px solid #c8e6c9; border-radius: 6px; padding: 20px; text-align: center;">
                        <table style="width: 100%; text-align: center;">
                            <tr>
                                <td>
                                    <span class="weight-label" style="font-size: 11px; color: #555; text-transform: uppercase;">Peso Bruto</span><br>
                                    <span style="font-size: 18px; color: #333; font-weight: bold;">{format_number(ticket['peso_bruto'])}</span>
                                </td>
                                <td>
                                    <span class="weight-label" style="font-size: 11px; color: #555; text-transform: uppercase;">Tara</span><br>
                                    <span style="font-size: 18px; color: #333; font-weight: bold;">{format_number(ticket['tara'])}</span>
                                </td>
                                <td style="border-left: 2px solid #ccc;">
                                    <span class="weight-label" style="font-size: 12px; color: #006400; text-transform: uppercase; font-weight: bold;">Peso Líquido</span><br>
                                    <span class="weight-display" style="font-size: 22px; color: #006400; font-weight: bold;">{format_number(ticket['peso_final'])}</span>
                                </td>
                            </tr>
                        </table>
                    </div>

                    <div class="section-title" style="font-size: 14px; font-weight: bold; text-transform: uppercase; color: #006400; border-bottom: 2px solid #eee; padding-bottom: 8px; margin-top: 10px;">Dados da Carga e Transporte</div>
                    <table class="data-table" style="width: 100%; border-collapse: collapse;">
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Produto:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['carga']}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Ticket ID:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">#{ticket['id']}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Empresa:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['carrier']}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Motorista:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['driver_name']}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Placas:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['plate_number']} (Veículo){txt_carreta}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 10px; color: #666; border-bottom: 1px solid #eee;">Nota Fiscal:</td>
                            <td class="value" style="padding: 10px; color: #000; font-weight: bold; border-bottom: 1px solid #eee;">{ticket['notafiscal']}</td>
                        </tr>
                        {row_romaneio}
                        {row_book}
                    </table>

                    <div class="section-title" style="font-size: 14px; font-weight: bold; text-transform: uppercase; color: #006400; border-bottom: 2px solid #eee; padding-bottom: 8px; margin-top: 25px;">Timeline do Processo</div>
                    <table class="data-table" style="width: 100%; border-collapse: collapse;">
                        <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Chegada:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{hora_entrada_brasileira} <span style="font-size:11px; font-weight:normal; color:#777">({ticket['arrival_time_by']})</span></td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Autorização:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{hora_autorizacao} <span style="font-size:11px; font-weight:normal; color:#777">({ticket['entry_authorized_by']})</span></td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Pesagem Inicial:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{hora_pesagem_inicial} <span style="font-size:11px; font-weight:normal; color:#777">({ticket['entry_weighed_by']})</span></td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Carregamento:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{hora_inicio_processo} até {hora_fim_processo}</td>
                        </tr>
                         <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Duração Carregamento:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{tempo_gasto_formatado}</td>
                        </tr>
                         <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Conferentes:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{ticket['loading_started_by']} / {ticket['loading_completed_by']}</td>
                        </tr>
                        <tr>
                            <td class="label" style="padding: 8px; color: #666; border-bottom: 1px solid #eee;">Pesagem Final:</td>
                            <td class="value" style="padding: 8px; color: #333; border-bottom: 1px solid #eee;">{hora_pesagem_final} <span style="font-size:11px; font-weight:normal; color:#777">({ticket['exit_weighed_by']})</span></td>
                        </tr>
                    </table>

                </div>

                <div class="footer" style="background-color: #f8f9fa; padding: 15px; text-align: center; font-size: 12px; color: #888888; border-top: 1px solid #eeeeee;">
                    <p style="margin: 0;">&copy; {datetime.now().year} Coco do Vale - YMS Controle de pátio</p>
                    <p style="margin: 5px 0 0; font-size: 11px;">E-mail automático gerado pelo sistema.</p>
                    <p style="margin: 5px 0 0; font-size: 11px;">Desenvolvido por Joseildo França.</p>
                </div>
            </div>
        </body>
        </html>
        """

        # Enviar o e-mail
        to_email = "joseildo.franca@cocodovale.com.br"
        send_email(subject, body, to_email)

if __name__ == "__main__":
    main()