import requests
import json
import os
import sys

from GetUser import getUsuarios
from sendEmail import send_email
from datetime import datetime, timedelta, timezone


if getattr(sys, 'frozen', False):
    base_path = sys._MEIPASS
else:
    base_path = os.path.dirname(__file__)

ruta = os.path.join(base_path, "config.json")

# Funcion para obtener una semana de datos independientemente cuandos e consulte
def obtener_rango_semana():
    # Fecha final = ahora en UTC
    fecha_final = datetime.now(timezone.utc)
    
    # Fecha inicial = 7 días antes
    fecha_inicial = fecha_final - timedelta(days=7)
    
    # Formato requerido: YYYY-MM-DDTHH:MM:SS.000Z
    # formato = "%Y-%m-%dT06:00:00.000Z"
    formato = "%Y-%m-%dT%H:%M:%S.000Z"
    
    return fecha_inicial.strftime(formato), fecha_final.strftime(formato)

# Genera la plantilla con la que se enviara el correo
def creaCorreo(nombre, email,telefono,id):
    html= """<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Nuevo Prospecto Asignado</title>
</head>
<body style='margin:0; padding:0; background-color:#f4f4f4; font-family: Arial, Helvetica, sans-serif;'>
<table width='100%' cellpadding='0' cellspacing='0' border='0' style='background-color:#f4f4f4; padding:20px 0;'>
<tr>
<td align='center'>
<table width='600' cellpadding='0' cellspacing='0' border='0' style='background-color:#ffffff; border-radius:8px; overflow:hidden;'>
<!-- Header -->
<tr>
<td style='background-color:#1f3c88; padding:20px; text-align:center; color:#ffffff;'>
<h2 style='margin:0;'>Nuevo Prospecto Asignado</h2>
</td>
</tr>
<!-- Body -->
<tr>
<td style='padding:30px; color:#333333;'>
<p style='font-size:16px; margin-top:0;'>
Estimado(a) Asesor(a),
</p>
<p style='font-size:15px; line-height:1.6;'>
Por medio de la plataforma <strong>Enkontrol</strong>, se le ha asignado un nuevo prospecto. 
A continuación, encontrará la información correspondiente:
</p>
<!-- Prospect Information -->
<table width='100%' cellpadding='8' cellspacing='0' border='0' style='margin-top:15px; border-collapse:collapse;'>
<tr>
<td style='background-color:#f0f2f5; font-weight:bold; width:150px;'>Nombre:</td>
<td style='background-color:#fafafa;'>""" + str(nombre) + """</td>
</tr>
<tr>
<td style='background-color:#f0f2f5; font-weight:bold;'>Teléfono:</td>
<td style='background-color:#fafafa;'>"""+ str(telefono) + """</td>
</tr>
<tr>
<td style='background-color:#f0f2f5; font-weight:bold;'>Correo:</td>
<td style='background-color:#fafafa;'>""" + str(email) +"""</td>
</tr>
<tr>
<td style='background-color:#f0f2f5; font-weight:bold;'>Enlace:</td>
  <td style='background-color:#fafafa;'><a href='https://suite.ekloud.net:1445/Aryve/#/scv/clientes/""" + str(id) +"""'>Ver Prospeto</a></td>
</tr>
</table>
<p style='font-size:15px; line-height:1.6; margin-top:20px;'>
Le recomendamos dar seguimiento a este prospecto a la brevedad posible.
</p>
<p style='font-size:15px;'>
Saludos cordiales,<br>
<strong>Equipo Enkontrol</strong>
</p>
</td>
</tr>
<!-- Footer -->
<tr>
<td style='background-color:#f0f2f5; padding:15px; text-align:center; font-size:12px; color:#777777;'>
Este es un mensaje automático generado por la plataforma Enkontrol.
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>"""
    return html

# Realizamos la consulta a la API de enkontrol
url = 'https://suite.ekloud.net:1445/Aryve/base/scv/ScvClientes/GetBP/GetAll'

inicio, fin = obtener_rango_semana()
# print(inicio + "   " + fin)
payload = json.dumps({
  "parametros": {
    "IdDesarrollo": -10,
    "CreadoDesde": inicio,
    "CreadoHasta": fin,
    # "CreadoDesde": "2026-01-01T06:00:00.000Z",
    # "CreadoHasta": "2026-03-02T06:00:00.000Z",
    "operacionDelegada": "VerProspectosClientes"
  }
})
headers = {
  'cookie': 'ASP.NET_SessionId=x5qwcohqzzseaptlst5awtj2; .AspNet.ApplicationCookie=trh_h0TTPzi2xmuy2GxiJPAWWEw7RzbcFkqWcThjdvfxn-USnkKSZumisBdXdQrN8qY3qMQ0XXe3dkWwVTjDGhDpdeH_92bDojjGCLCjJ0Q3UH4I0Ag1hkNNzrGbP1Zt-10cpOznw6tn2e-sc_v80BFa2_KKhEfbCbze3MIR-a6nl1kyGsZqDZmgDWy7-kecaUL1d-tbpkKO4jeJMHQYXfx11Kzd-kG0QoJOK2Lqs_SOj3P4AIjEAGkA_QKCVPMmTHWDlp0hcRZmyZqFSOdcAkK7mFiKc6YhcVWUcxUR-iMCM-igLNJ6Nnt3veTqACcFZHsvJLxCgMWh7P-ITit9JvxX6Xe-aYLOAIrF03ZlW93gg-yM2uni_cqImFswmnzSRQHNsZAaYAkM2i3PMTXpqgkShcH4wQ-NSm3Y-diSjXw2oCw6mRbLfCHoIh66eBo9FXSM6G0Dq8CdUaejkpX-K9M0ppqEoLEXGdub7R-xZuum1CjdkuItEFK6xuTl7tQRcYAx70r8wNcRMVVoisQ-qvdutB2qXoBuislUk68bftEvlliYh9PJdMkhzA3rOeEN',
  # 'cookie': 'ASP.NET_SessionId=is5tkkxsgr1q3gwbpbcykqk2; .AspNet.ApplicationCookie=Mj775K0jWzaisv5B5bbM9MLwIHhCYu1BwhStrhnqqUDsea3x6ormnkAYECI8yywrg297O200BaijLyJa8PyptxoUjmjHc_u9iMjyYziFApwkbFoD6l6bCXNrvWjZGBkz6OT2te4_RXw0Mjoc82sDs_TDPIhqj3g_C5Fxphx2FVrwq3CVIdtKZ23e2zFDEMd7ut7PlGXO_NGV0eabfST6J-GL3mafjSqttEeSeT7QnQ7VsCpklz-A0W2hUEtVejVoP233eqp7YFx8dVYZe0GKzeUzhixsmgz4NGEfbI74bn15j2o-9ZSMLelfplboyA6Osf4eI7vjw3DOMfN9QuEehDvqRwCfwpSE9pASR7KNiOAwf6aF4aTRLbPKxJJwa6eOCVqkM0O-Cb_7f7GpeRt2lL3X-ijmSBPvN0zNPGrhYZevxdBM_1OatvrCne_8LHkRPtkQIC48WcC0E-819IaHZrtiNAQV5DRmDzItEPZ00sfNoKV_MiQpCa72hWFGuW1fUg66vjU0Q_2lO0WjdgVx0ICNOTbq75WqIaMhw003x2SDmI3xPP2Cqw4LhEUXBy1q',
  'Content-Type': 'application/json'
}


response = requests.request("POST", url, headers=headers, data=payload)
if(response.text == ""):
    send_email("enkontrol3@grupovelas.com", "Actualizar Cookies Notificacion Asesor", "Tu sesión de ventas asesor requiere actualización de la cookie.")

prospectos = json.loads(response.text)

# Obtenemos a todos los agentes
_usuarios = getUsuarios()

# Obtenemos cual fue el ultimo prospecto registrado
_endProspecto = {}
# ruta = os.path.join(base_path, "endProspecto.json")
# with open(ruta, "r") as archivo:
with open("endProspecto.json", "r") as archivo:
     _endProspecto = json.load(archivo)

_endProspecto2 = {}

# Recorremos todos los prospectos mayores al ultimo id registrado
for i in range(len(prospectos)):
     if(int(prospectos[i]['ID']) > int(_endProspecto['id'])):

        # Validaciones para evitar error de campos None o vacios
        if(prospectos[i]['ApellidoMaterno'] is None):
            prospectos[i]['ApellidoMaterno'] = ""
        
        if(prospectos[i]['ApellidoPaterno'] is None):
            prospectos[i]['ApellidoPaterno'] = ""
        # #############

        nombre = prospectos[i]['Nombre'] + " "+ prospectos[i]['ApellidoPaterno'] + " " +prospectos[i]['ApellidoMaterno']
        email = prospectos[i]['EmailPrincipal']
        telefono = prospectos[i]['TelefonoPrincipal']
        id = prospectos[i]['ID']

        # if(int(prospectos[i]['Titular']['ID']) == 4 ):
        try:
            # print("a")
          send_email(_usuarios[int(prospectos[i]['Titular']['ID'])]['email'], "Asignacion de prospecto", creaCorreo(nombre, email,telefono,id))
        except:
          print("error")

        _endProspecto2 = {
            "id": prospectos[i]['ID'],
            "titular": prospectos[i]['Titular']['ID'],
            "email": email,
            "telefono": telefono
        }

# print(_endProspecto2)
# Guardamos el ultimo prospecto siempre y cuando requiera actualizar [sirve como referencia]
if(_endProspecto2 != {}):
  with open("endProspecto.json", "w") as archivo:
  # with open(ruta, "w") as archivo:
    json.dump(_endProspecto2, archivo)

# input("Presiona Enter para continuar...")