# --------------------------------------------------------
#   MODELO MODELO DE ASIGNACION DE CAPACIDAD DE CONEXIoN EN PHYTON-PYOMO
#   DESARROLLADO POR RIGHTSIDE S.A.S PARA LA UPME
#   NOVIEMBRE de 2021 *** ####
# --------------------------------------------------------

import pandas as pd
from pandasql import sqldf
import datetime
import os
import sys
from os import getcwd
import os.path as path
import math
from openpyxl import load_workbook

if(len(sys.argv) > 0):
    xlFile = (sys.argv[1])
else:
    print()
    print("Debe ingresar el nombre del archivo de Excel")
    sys.exit()

os.chdir("..")                  # Un directorio arriba

if path.exists(xlFile):
    xl_macc = pd.ExcelFile(xlFile)
else:
    print()
    print("No existe el archivo ",xlFile)
    sys.exit()

# Leer informacion 
book1 = load_workbook(xlFile)
sh = book1["ejecutar"]

#Optimizador
OPTIMIZADOR = sh['N8'].value

#Horizonte
PI = sh['N10'].value
PF = sh['N12'].value
ESCALAR = sh['N14'].value

TOLERANCIA = sh['N16'].value
TIEMPOLIMITE = sh['N18'].value
OBRASENFILA2 = sh['N20'].value

# Excel Worksheets dataframe
criterios  = xl_macc.parse('criterios').set_index(['nombre'])
proyectos  = xl_macc.parse('proyectos').set_index(['nombre'])
barras = xl_macc.parse('barras').set_index(['nombre','periodo'])
calificacionProyectos = xl_macc.parse('calificacionProyectos').set_index(['nombre'])
zonaBarra = xl_macc.parse('zonaBarra').set_index(['nombre'])
cortocircuito = xl_macc.parse('cortocircuito').set_index(['nombre','barra'])
zonas = xl_macc.parse('zonas').set_index(['nombre','periodo'])
areas = xl_macc.parse('areas').set_index(['nombre','periodo'])
obras = xl_macc.parse('obras').set_index(['nombre'])

# INDICES
iCriterios  = sqldf("SELECT distinct(nombre) FROM criterios;", locals())
iBarras = sqldf("SELECT distinct(nombre) FROM barras;", locals())
iZonas = sqldf("SELECT distinct(nombre) FROM zonas;", locals())
iProyectos = sqldf("SELECT distinct(nombre) FROM proyectos;", locals())
iProyectosF0 = sqldf("SELECT distinct(nombre) FROM proyectos WHERE fila = 0;", locals())
iProyectosF1 = sqldf("SELECT distinct(nombre) FROM proyectos WHERE fila = 1;", locals())
iProyectosF2 = sqldf("SELECT distinct(nombre) FROM proyectos WHERE fila = 2;", locals())
iObras = sqldf("SELECT distinct(nombre) FROM obras;", locals())
iAreas = sqldf("SELECT distinct(nombre) FROM areas;", locals())
iBarrasCorto = sqldf("SELECT distinct(barra) FROM cortocircuito;", locals())

FILAS = set()   # ORDEN DE EJECUCION DE LAS FILAS

if len(iProyectosF0) > 0:
    FILAS = [0]  
    if len(iProyectosF2) > 0:
        FILAS = [0,2]  
        if len(iProyectosF1) > 0:
            FILAS = [0,2,1]
else:
    if len(iProyectosF2) > 0:
        FILAS = [2]  
        if len(iProyectosF1) > 0:
            FILAS = [2,1]
    else:
        if len(iProyectosF1) > 0:
            FILAS = [1]




