import sys
import smtplib
import mysql.connector
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime, timedelta

# 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
# (Mantive as credenciais do seu código atual, altere se necessário)
db_config = {
    'host': 'localhost',
    'user': 'root',
    'password': '',
    'database': 'balanca'
}

def format_date(dt_obj):
    """Formata data para string brasileira ou retorna N/A"""
    if dt_obj and isinstance(dt_obj, datetime):
        return dt_obj.strftime("%d/%m/%Y %H:%M:%S")
    return "N/A"

def format_timedelta(td_obj):
    """Remove os milissegundos do objeto timedelta para ficar mais limpo"""
    if td_obj and isinstance(td_obj, timedelta):
        # Arredonda para remover microssegundos
        return str(td_obj).split('.')[0]
    return "N/A"

# Função para obter os detalhes do ticket de pesagem
def get_ticket_details(ticket_pesagem):
    try:
        conn = mysql.connector.connect(**db_config)
        # Usando dictionary=True para acessar por nome (ticket['id'])
        cursor = conn.cursor(dictionary=True)

        query = """
            SELECT id, driver_name, plate_number, carrier, arrival_time, status, entry_authorized_by,
                        entry_authorized_time, enter_vehicle, 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, exit_authorized_by, exit_authorized_time
            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:
        # --- Formatação de Datas ---
        hora_chegada_veiculo = format_date(ticket['arrival_time'])
        hora_autorizacao_entrada = format_date(ticket['entry_authorized_time'])
        hora_saida_veiculo = format_date(ticket['exit_authorized_time'])
        inicio_processo = format_date(ticket['loading_started_time'])
        fim_processo = format_date(ticket['loading_completed_time'])

        # --- Cálculos de Tempo (Deltas) ---
        
        # 1. Tempo de Espera (Autorização - Chegada)
        tempo_espera_autorizacao = "N/A"
        if ticket['arrival_time'] and ticket['entry_authorized_time']:
            delta = ticket['entry_authorized_time'] - ticket['arrival_time']
            tempo_espera_autorizacao = format_timedelta(delta)

        # 2. Tempo Total Operação (Saída - Chegada)
        tempo_total_operacao = "N/A"
        if ticket['arrival_time'] and ticket['exit_authorized_time']:
            delta = ticket['exit_authorized_time'] - ticket['arrival_time']
            tempo_total_operacao = format_timedelta(delta)

        # 3. Tempo Gasto Carga (Fim Carga - Inicio Carga)
        tempo_gasto_carga = "N/A"
        if ticket['loading_started_time'] and ticket['loading_completed_time']:
            delta = ticket['loading_completed_time'] - ticket['loading_started_time']
            tempo_gasto_carga = format_timedelta(delta)

        # --- Montagem do E-mail ---
        subject = f"Saída de Veículo: {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%; border-bottom: 1px solid #eee; }}
                .value {{ color: #000000; font-weight: bold; border-bottom: 1px solid #eee; }}
                .highlight-box {{ background-color: #f1f8e9; border: 1px solid #c8e6c9; border-radius: 6px; padding: 15px; margin-bottom: 20px; }}
                .status-badge {{ background-color: #4caf50; color: white; padding: 4px 8px; border-radius: 4px; font-size: 12px; 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;">Notificação de Saída</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: 15px; text-align: center;">
                         <p style="margin: 0 0 10px 0; font-size: 12px; color: #555; text-transform: uppercase;">Tempo Total na Planta</p>
                         <p style="margin: 0; font-size: 24px; font-weight: bold; color: #006400;">{tempo_total_operacao}</p>
                         <div style="margin-top: 15px;">
                            <span class="status-badge">{ticket['status']}</span>
                         </div>
                    </div>

                    <div class="section-title" style="margin-top: 0;">Informações Gerais</div>
                    <table class="data-table" style="width: 100%; border-collapse: collapse;">
                        <tr>
                            <td class="label">ID Carga:</td>
                            <td class="value">#{ticket['id']}</td>
                        </tr>
                        <tr>
                            <td class="label">Empresa:</td>
                            <td class="value">{ticket['carrier']}</td>
                        </tr>
                        <tr>
                            <td class="label">Placa:</td>
                            <td class="value">{ticket['plate_number']}</td>
                        </tr>
                        <tr>
                            <td class="label">Inspetor de Saída:</td>
                            <td class="value">{ticket['exit_authorized_by']}</td>
                        </tr>
                        <tr>
                            <td class="label">Horário Chegada:</td>
                            <td class="value">{hora_chegada_veiculo}</td>
                        </tr>
                        <tr>
                            <td class="label">Horário Saída:</td>
                            <td class="value">{hora_saida_veiculo}</td>
                        </tr>
                    </table>

                    <div class="section-title">Recepção e Espera</div>
                    <table class="data-table" style="width: 100%; border-collapse: collapse;">
                        <tr>
                            <td class="label">Recepcionado por:</td>
                            <td class="value">{ticket['arrival_time_by']}</td>
                        </tr>
                        <tr>
                            <td class="label">Autorizado em:</td>
                            <td class="value">{hora_autorizacao_entrada}</td>
                        </tr>
                         <tr>
                            <td class="label">Tempo de Espera (Autorização):</td>
                            <td class="value" style="color: #d32f2f;">{tempo_espera_autorizacao}</td>
                        </tr>
                    </table>

                    <div class="section-title">Processo de Carregamento</div>
                    <table class="data-table" style="width: 100%; border-collapse: collapse;">
                        <tr>
                            <td class="label">Conferente Início:</td>
                            <td class="value">{ticket['loading_started_by']}</td>
                        </tr>
                        <tr>
                            <td class="label">Conferente Fim:</td>
                            <td class="value">{ticket['loading_completed_by']}</td>
                        </tr>
                        <tr>
                            <td class="label">Início Carregamento:</td>
                            <td class="value">{inicio_processo}</td>
                        </tr>
                        <tr>
                            <td class="label">Fim Carregamento:</td>
                            <td class="value">{fim_processo}</td>
                        </tr>
                        <tr>
                            <td class="label">Duração do Carregamento:</td>
                            <td class="value" style="color: #006400;">{tempo_gasto_carga}</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 - Sistema de Balança</p>
                    <p style="margin: 5px 0 0; font-size: 11px;">Este é um e-mail automático. Por favor, não responda.</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()