from formulario.models import Organismo, Reparticion, Dependencia
import time

def set_organismo(reparticiones,id):
    for r in reparticiones:
        r.organismo = id
        set_organismo(Reparticion.objects.filter(depende=r.id))
        r.save()

def run():
    fn = open("scripts/organismos_3.txt","r",encoding="utf8")

    Organismo.objects.all().delete()
    Reparticion.objects.all().delete()
    Dependencia.objects.all().delete()
    for line in fn:
        aux = line.split(";")

        id = aux[0]
        nombre = aux[1]
        depende = aux[2]

        try:
            rep = Reparticion.objects.get(id=id,nombre=nombre)
        except:
            rep = Reparticion(id=id,nombre=nombre,organismo=1,depende=depende)
            rep.save()
            print("Agregada reparticion: " + rep.nombre)
    rep = Reparticion.objects.get(id=2716827)
    print("Repa: " + str(rep.id) + " | " + str(rep.depende))
    seguir = input("Continuar...")
    print("Reparticiones: " + str(len(Reparticion.objects.all())))
    #exit()
    for r in Reparticion.objects.all():
        dependen = []
        for rep in Reparticion.objects.filter(depende=r.id):
            dependen.append(rep)
        for dep in Dependencia.objects.filter(reparticion=r.id):
            dependen.append(dep)
        if r.id == 2716827:
            print("         ANALIZANDO ASESORAMIENTO MEDICO")
            print("         TIENE " + str(len(dependen)) + " DEPENDENCIAS ASOCIADAS")
            time.sleep(1)
        if len(dependen) == 0:
            dep = Dependencia(id=r.id,nombre=r.nombre,reparticion=r.depende)
            dep.save()
            print("Dependencia: " + dep.nombre + " - " + "Reparticiones: " + str(len(Reparticion.objects.all())))
            r.delete()
            continue
        if r.depende == 1:
            org = Organismo(id=r.id,nombre=r.nombre)
            org.save()
            print("Organismo " + org.nombre)
            #set_organismo(Reparticion.objects.filter(depende=r.id),r.id)
            for r2 in Reparticion.objects.filter(depende=org.id):
                r2.depende = 0
                r2.organismo = org.id
                r2.save()
            r.delete()
