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

SOURCE_GEOFENCE = "/srv/datalogger_mmr/geofence.json"
SOURCE_URLS = "/srv/datalogger_mmr/config/urls.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 get_faena_assigned():
    faena = "TallerStgo"
    try:
        f = open('/srv/live/topic.json')
        config:dict = json.load(f)
        faena = config["topic"].split("/")[0]
    except Exception as ex:
        print(ex)
    return faena

def get_url_geofence(faena, source_urls):
    url= ""
    try:
        f = open(source_urls)
        urls:dict = json.load(f)
        url = urls[faena]["geofence"] 
        
    except Exception as ex:
        print(ex)
    return url


def update_geofence(faena, source_urls, source_geofence):
    try:
        api_url = get_url_geofence(faena, source_urls)
        if api_url:
            geofence_cmd = f"wget {api_url} -O {source_geofence}"

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

            # 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_urls, source_geofence):
    # 1. Update Geofence
    update_geofence(faena, source_urls, source_geofence)

    # 2. Update HTML
    update_html(faena)

    

    
def app(source_urls, 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_urls, source_geofence)


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

