using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OliviaDef;

namespace OliviaAddIn
{
    class EjecutaReco : Ejecuta
    {
        //*************************************************************************************
        //Variables 
        public Recogida reco;
        //*************************************************************************************
        //Métodos
        public EjecutaReco()
        {
            err_str = "";
        }

        /**
        * Comienza las funciones de ejecución
        * modo 0 la primera vez, va a sectorizar, modo 1 la segunda vez, planifica
        */
        public bool ejec(Recogida reco, int modo)
        {
            if (reco == null)
            {
                err_str = "Error en la recopilación de datos para el procesado";
                return false;
            }

            OliviaGlob.tip_oliv = OliviaDef.GeneralDef.TiposOliv.OlivResi;

            if (!OliviaGlob.gdb_reco.exporta(reco, modo == (int)Ejecuta.ModosEjec.Planif))
            {
                err_str = OliviaGlob.gdb_reco.err_st;
                return false;
            }

            //configura el string de opciones
            if (!configura_ops_geo(reco, modo))
            {
                err_str = "Error al configurar opciones";
                return false;
            }

            this.reco = reco;

            //Llama al ejecuta del padre
            return base.ejec();

        }

        /**
         * Configura el str de opciones que va a mandar a geofoto
         * modo 0 la primera vez, va a sectorizar, modo 1 la segunda vez, planifica
         */
        public bool configura_ops_geo(Recogida reco, int modo)
        {
            string str, modo_str = "";

            if (modo == (int)ModosEjec.Secto)
                modo_str = GeneralDef.SockConf;
            else if (modo == (int)ModosEjec.Planif)
                modo_str = GeneralDef.SockConfPlan;
            else if (modo == (int)ModosEjec.SoloPlanif)
                modo_str = GeneralDef.SockConfTodo;
                        
            //van ParamLimpN parámetros, sin incluir "CONFIGURACION", si se añaden, incrementar ParamLimpN                
            str = GeneralDef.EjecGeoParamSep + modo_str + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_camp_cap + GeneralDef.EjecGeoParamIgual + reco.rec_capac + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_kgM + GeneralDef.EjecGeoParamIgual + reco.carg_max_vehic + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_camp_kgrec + GeneralDef.EjecGeoParamIgual + reco.rec_kg + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_camp_uds + GeneralDef.EjecGeoParamIgual + reco.rec_uds + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_kgrecog + GeneralDef.EjecGeoParamIgual + reco.rec_kgrec_cont + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_carga_cont + GeneralDef.EjecGeoParamIgual + reco.carga_max + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_dens + GeneralDef.EjecGeoParamIgual + reco.dens_cont + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_tco + GeneralDef.EjecGeoParamIgual + reco.t_conv + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_tdc + GeneralDef.EjecGeoParamIgual + reco.t_descan + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_tvc + GeneralDef.EjecGeoParamIgual + reco.t_vaci + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_tdca + GeneralDef.EjecGeoParamIgual + reco.t_descarg + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_tsal + GeneralDef.EjecGeoParamIgual + reco.t_despl_insta + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_hini + GeneralDef.EjecGeoParamIgual + reco.h_ini + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_trafic + GeneralDef.EjecGeoParamIgual + reco.trafico + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_npt + GeneralDef.EjecGeoParamIgual + reco.n_ptsctrl + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_sec + GeneralDef.EjecGeoParamIgual + reco.n_secdef + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_anc + GeneralDef.EjecGeoParamIgual + reco.anch_vehic + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_gir + GeneralDef.EjecGeoParamIgual + reco.giro_vehic + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_coox + GeneralDef.EjecGeoParamIgual + reco.coords_instala[0] + " " +//coordenadas
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_cooy + GeneralDef.EjecGeoParamIgual + reco.coords_instala[1] + " " +//coordenadas
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_descx + GeneralDef.EjecGeoParamIgual + reco.coords_descarg[0] + " " +//coordenadas
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_descy + GeneralDef.EjecGeoParamIgual + reco.coords_descarg[1] + " " +//coordenadas
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_sens_id + GeneralDef.EjecGeoParamIgual + reco.id_sens + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_sens_url + GeneralDef.EjecGeoParamIgual + reco.url_sens + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_sens_fecha + GeneralDef.EjecGeoParamIgual + reco.fecha_sens + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_sens_fechaf + GeneralDef.EjecGeoParamIgual + reco.fechaf_sens + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_sens_modo + GeneralDef.EjecGeoParamIgual + reco.media + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_ais + GeneralDef.EjecGeoParamIgual + reco.aislados + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GR_lateral + GeneralDef.EjecGeoParamIgual + reco.lateralidad + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_pd + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathData + " " +
                GeneralDef.EjecGeoParamSep + GeneralDef.GG_pn + GeneralDef.EjecGeoParamIgual + OliviaGlob.Paths.PathNW + " ";

            base.str_cfg = str;

            return true;
        }



    }
}
