import sys
import smtplib
import mysql.connector
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime

# 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': 'root',
    'password': '',
    'database': 'balanca'
}

# 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()

        # Consultar o banco de dados para pegar os detalhes do ticket
        cursor.execute("""
            SELECT id, condutor, frota, hora_entrada, data_saida, operador, operador_saida, status, modelo_veiculo, tara, peso_bruto, peso_final, destino, carga
            FROM entrada_veiculo
            WHERE id = %s
        """, (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"  # Use o app password do Gmail
    smtp_server = "smtp.gmail.com"
    smtp_port = 587

    # Criar a mensagem do e-mail
    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'html'))  # Alterando para 'html' para permitir HTML no corpo do e-mail

    try:
        # Conectar ao servidor SMTP
        server = smtplib.SMTP(smtp_server, smtp_port)
        server.starttls()  # Conectar de forma segura
        server.login(from_email, from_password)

        # Enviar o e-mail
        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}")

# Função principal
def main():
    # Obter os detalhes do ticket
    ticket = get_ticket_details(ticket_pesagem)

    if ticket:
        (
            id, condutor, frota, hora_entrada, data_saida, operador, operador_saida, status, modelo_veiculo, tara, peso_bruto, peso_final, destino,carga
        ) = ticket

        # Certificar que os campos datetime são strings formatadas
        hora_entrada_brasileira = "N/A"
        data_saida_brasileira = "N/A"

        # Verifica se hora_entrada é datetime, então usa strftime diretamente
        if isinstance(hora_entrada, datetime):
            hora_entrada_brasileira = hora_entrada.strftime("%d/%m/%Y %H:%M:%S")
        
        # Verifica se data_saida é datetime, então usa strftime diretamente
        if isinstance(data_saida, datetime):
            data_saida_brasileira = data_saida.strftime("%d/%m/%Y %H:%M:%S")

        # Cálculo do tempo gasto no processo da carga
        tempo_gasto_formatado = "N/A"
        if hora_entrada and data_saida:
            dt_inicio_processo = hora_entrada
            dt_fim_processo = data_saida
            tempo_gasto = dt_fim_processo - dt_inicio_processo
            tempo_gasto_formatado = str(tempo_gasto)

        # Corpo do e-mail
        subject = "CONTROLE DE PÁTIO"
        body = f"""
        <html>
        <body>
        <p><b>PESAGEM FINAL DA FROTA {frota}  CONCLUIDA</b></p>
        
          <ul>
          
             <li><b>TICKET DE PESAGEM:</b> {ticket_pesagem}</li>
         
            <li><b>FROTA:</b> {frota}</li>
            <li><b>OPERADOR:</b> {condutor}</li>
            <li><b>PRODUTO DA CARGA:</b> {carga}</li>
            <li><b>PESAGEM INICIAL:</b> {hora_entrada_brasileira}</li>
             <li><b>PESAGEM FINAL:</b> {data_saida_brasileira}</li>
             <li><b>TEMPO GASTO NO PROCESSO:</b> {tempo_gasto_formatado}</li>
            <li><b>TARA:</b> {tara:.2f} KG</li>
            <li><b>PESO BRUTO:</b> {peso_bruto:.2f} KG</li>
            <li><b>PESO LIQUIDO:</b> {peso_final:.2f} KG</li>
           <li><b>DESTINO DA CARGA</b> {destino}</li>
            <li><b>FISCAL DE PESAGEM:</b> {operador_saida}</li>
            
        </ul>
        <hr>
        
        <ul>
         
        </ul>
        <hr>
        <ul> 
      
        <hr>
        <p><b>A Coco do Vale agradece sua atenção!</b></p>
        </body>
        </html>
        """

        # Enviar o e-mail
        to_email = "joseildo.franca@cocodovale.com.br"
        send_email(subject, body, to_email)

if __name__ == "__main__":
    main()
