#!/usr/bin/python3
import subprocess
import json

SOURCE_GEOFENCE = "/srv/datalogger_mmr/geofence.json"


def command(orden):
    orden_s=orden.split(' ')
    res=subprocess.check_output(orden_s)
    if res.decode()!='\n' or res.decode()!='':
        print(res.decode())


def update_geofence(faena:str, source_geofence):
    try:
        api_url = f'https://{faena.replace(" ", "").lower()}.mapa.mine-360.com/api/geofence'
        if api_url:
            source_raw_geofence = "/srv/datalogger_mmr/raw_geofence.json"
            geofence_cmd = f"wget {api_url} -O {source_raw_geofence}"

            print(f"Downloading GEOFENCE geometry from: {api_url}")
            print("[%s] ..." % geofence_cmd)
            command(geofence_cmd)

            try:
                raw_geofence =json.load(open(source_raw_geofence))
                if "ok" in raw_geofence:
                    print("Geofence tiene la nueva estructura, cambiando ...")
                    # Cambiar la estructura
                    geofence = raw_geofence["data"][0]["row_to_json"]
                    with open(source_geofence, "w") as f:
                        json.dump(geofence, f)
                    print("Geofence guardada con estructura corregida")

                else:
                    print("Estructura geofence correcta!")
                    geofence = raw_geofence
                    with open(source_geofence, "w") as f:
                        json.dump(geofence, f)
                    print("Geofence guardada")
                
            except:
                print("Error procesando geofence")

            # update tablet geofence
            print("Updating tablet geofence...")
            tablet_cmd = f"cp {source_geofence} /var/www/html/caminos.geojson"
            command(tablet_cmd)

            print("update_geofence(): Done")
        else:
            print("No existe url para descarga de geofence")
    except Exception as ex:
        print(ex)
        print("Error actualizando geofence")

def update_html(faena):
    try:
        faena = faena.replace(" ", "")
        path_current_index = "/var/www/html/index.html"
        path_base_index = f"/srv/datalogger_mmr/tablet/htmls/{faena}.html"
        cmd = f"cp {path_base_index} {path_current_index}"
        command(orden = cmd)
        print("update_html: Done")
    except Exception as ex:
        print(ex)
        print("Error actualizando html")


def update_map(faena, source_geofence):
    # 1. Update Geofence
    update_geofence(faena, source_geofence)

    # 2. Update HTML
    update_html(faena)

    

    
def app(source_geofence):
    command('clear')
    print('sistema de actualización manual de mapa\n')
    sel=input('Seleccione Faena:\n \n1. Antucoya\n2. Candelaria\n3. Centinela\n4. Ministro Hales\n5. Salir\n\nIngrese opcion: ')
    if sel=='1':
        faena = "Antucoya"
    elif sel=='2':
        faena = "Candelaria"
    elif sel=='3':
        faena = "Centinela"
    elif sel=='4':
        faena= "Ministro Hales"
    elif sel=='5':
        return
    else:
        print("Opción no valida")
        return
        
    update_map(faena, source_geofence)


if __name__ == "__main__":
    app(SOURCE_GEOFENCE)

