import sys
import smtplib
import mysql.connector
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime




# Recebe o ticket_pesagem e a hora_entrada (do formulário PHP)
ticket_pesagem = sys.argv[1]  # ID do ticket de pesagem
hora_entrada_php = sys.argv[2]  # Hora de entrada enviada pelo PHP (no formato 'YYYY-MM-DD HH:MM:SS')

# 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):
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()
    
    # Consultar o banco de dados para pegar os detalhes do ticket
    cursor.execute("""
        SELECT id, placa, hora_entrada, status
        FROM entrada_veiculo
        WHERE id = %s
    """, (ticket_pesagem,))
    
    ticket = cursor.fetchone()
    conn.close()
    
    return ticket

# Função para atualizar o registro existente com a hora de entrada salva no banco
def update_entry(ticket_pesagem):
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()
    
    # Verifica os dados atuais do registro (incluindo hora_entrada)
    ticket = get_ticket_details(ticket_pesagem)
    if ticket:
        id, placa, hora_entrada_atual, status = ticket
        # Se o registro já existe, mantemos a hora_entrada atual e fazemos o update
        cursor.execute("""
            UPDATE entrada_veiculo
            SET status = %s
            WHERE id = %s
        """, (status, ticket_pesagem))
        conn.commit()
        conn.close()
        return hora_entrada_atual  # Mantém a hora_entrada original
    conn.close()
    return None  # Caso o ticket não exista (não deveria ocorrer se for update)

# Função para inserir um novo registro com a hora_entrada recebida do PHP
def insert_new_entry(ticket_pesagem, hora_entrada_php):
    conn = mysql.connector.connect(**db_config)
    cursor = conn.cursor()
    
    # Insere um novo registro com a hora_entrada recebida
    cursor.execute("""
        INSERT INTO entrada_veiculo (id, placa, hora_entrada, status)
        VALUES (%s, %s, %s, %s)
    """, (ticket_pesagem, 'XXXX', hora_entrada_php, 'Pendente'))  # Substitua 'XXXX' e 'Pendente' conforme necessário
    conn.commit()
    conn.close()

# Função para 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, 'plain'))

    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():
    # Verificar se o ticket existe
    ticket = get_ticket_details(ticket_pesagem)

    if ticket:
        # Se o ticket já existe, é um update. Vamos manter a hora_entrada original.
        hora_entrada_atual = update_entry(ticket_pesagem)

        if hora_entrada_atual:
            subject = "Banco de Dados Atualizado"
            body = f"""
            Olá,

            Um registro foi atualizado no banco de dados com os seguintes dados:
            - Ticket de Pesagem: {ticket_pesagem}
            - Placa: {ticket[1]}
            - Hora de Entrada: {hora_entrada_atual}  # Hora que já estava salva no banco
            - Status: {ticket[3]}

            Verifique as mudanças!
            """
    else:
        # Caso não exista, é um insert. Usamos a hora_entrada fornecida.
        insert_new_entry(ticket_pesagem, hora_entrada_php)

        subject = "Novo Registro Inserido"
        body = f"""
        Olá,

        Um novo registro foi inserido no banco de dados com os seguintes dados:
        - Ticket de Pesagem: {ticket_pesagem}
        - Hora de Entrada: {hora_entrada_php}
        """

    to_email = "joseildo.franca@cocodovale.com.br"  # E-mail fixo para o destinatário
    send_email(subject, body, to_email)  # Envia o e-mail para o destinatário

if __name__ == "__main__":
    main()


    
    

