205 lines
7.0 KiB
C#
205 lines
7.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using OliviaAddInPro.Helper;
|
|
using OliviaAddInPro.Model;
|
|
using System.Collections.ObjectModel;
|
|
using static OliviaAddInPro.Model.ComunDef;
|
|
using ArcGIS.Desktop.Framework.Threading.Tasks;
|
|
|
|
namespace OliviaAddInPro.Services
|
|
{
|
|
class RecogidaServ : EjecServ
|
|
{
|
|
private Recogida reco;
|
|
|
|
public RecogidaServ(Recogida _reco)
|
|
{
|
|
reco = _reco;
|
|
}
|
|
|
|
/*
|
|
* Lee la capa que se ha seleccionzdo de recogida y se comprueba que contiene los campos necesarios
|
|
* Devuelve 0 si va todo bien, 1 si le falta el campo de kgreco, y 2 si le faltan más u otro
|
|
*/
|
|
public int CompruebaCamposReco(string pathCapa)
|
|
{
|
|
int NCAMPS = 6;
|
|
string[] camps;
|
|
camps = new string[NCAMPS];
|
|
camps[0] = RecogidaDef.campos_def.cons_id;
|
|
camps[1] = RecogidaDef.campos_def.cons_fracc;
|
|
camps[2] = RecogidaDef.campos_def.cons_nomrec;
|
|
camps[3] = RecogidaDef.campos_def.cons_lateral;
|
|
camps[4] = RecogidaDef.campos_def.cons_uds;
|
|
camps[5] = RecogidaDef.campos_def.cons_kgrec;
|
|
int compCamp = CompruebaCampos(pathCapa, camps);
|
|
if (compCamp == 0)
|
|
return 0;
|
|
else if (compCamp == 1 && ErrStr.Contains(RecogidaDef.campos_def.cons_kgrec))
|
|
return 1;
|
|
else
|
|
return 2;
|
|
}
|
|
|
|
/*
|
|
* A partir de los datos leidos de la capa de recogida se rellena el desplegable de fracción a partir de los datos existentes en la capa.
|
|
*/
|
|
public ObservableCollection<string> DameVals(string capa, string campo)
|
|
{
|
|
ObservableCollection<string> valores;
|
|
ErrStr = string.Empty;
|
|
valores = HelperGdb.GetFieldVals(capa,campo,true).Result;
|
|
return valores;
|
|
}
|
|
|
|
/**
|
|
* Acciones para comenzar ejecución
|
|
* Modo 0, sectorizar
|
|
* Modo 1, planificar
|
|
*/
|
|
public TareaRes Sectoriza(CancelableProgressorSource cps)
|
|
{
|
|
var res = new TareaRes()
|
|
{
|
|
Errores = false,
|
|
data = null,
|
|
msg = ""
|
|
};
|
|
|
|
com = (TratamientoComun)reco;
|
|
string nombFileAmbs = string.Empty;
|
|
cps.Status = "Preparando filtro para la exportacion";
|
|
//Prepara consulta
|
|
ErrStr = string.Empty;
|
|
|
|
if (!PreparaConsulta(out nombFileAmbs))
|
|
{
|
|
res.msg = "No se ha seleccionado una consulta válida" + reco.ConsultaAmbs;
|
|
res.Errores = true;
|
|
return res;
|
|
}
|
|
cps.Value = 10;
|
|
|
|
//Prepara nombre
|
|
//Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp
|
|
//REVISAR PARA RECO
|
|
reco.NombreShpExp_PrefTto = nombFileAmbs + DameStrPoligs();
|
|
|
|
string msg = "";
|
|
//comienza ejecucion
|
|
if (!LanzaEjec(ModosEjec.Sectoriza, cps, out msg))
|
|
{
|
|
res.Errores = true;
|
|
res.msg = msg;
|
|
return res;
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
public bool PreparaConsulta(out string nombFileAmbs)
|
|
{
|
|
nombFileAmbs = string.Empty;
|
|
reco.ConsultaAmbs = DameAmbsConsulta(out nombFileAmbs);
|
|
if (string.IsNullOrEmpty(reco.ConsultaAmbs))
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public TareaRes Planifica(CancelableProgressorSource cps)
|
|
{
|
|
TareaRes res = new TareaRes()
|
|
{
|
|
Errores = false,
|
|
msg = "",
|
|
data = null
|
|
};/*
|
|
//se asegura que tiene todo para planif
|
|
//ErrStr = string.Empty;
|
|
if (!CompruebaPlanif())
|
|
{
|
|
res.msg = "En la capa de ámbitos seleccionada no se encuentran columnas de SECTOR y/o SECUENCIA, necesarias para planificar";
|
|
res.Errores = true;
|
|
return res;
|
|
}
|
|
//Prepara consulta
|
|
string nombFileAmbs = string.Empty;
|
|
//Prepara consulta
|
|
if (!PreparaConsulta(out nombFileAmbs))
|
|
{
|
|
res.msg = "No se ha seleccionado una consulta válida" + reco.ConsultaAmbs;
|
|
res.Errores = true;
|
|
return res;
|
|
}*/
|
|
|
|
return res;
|
|
}
|
|
public string DameAmbsConsulta(out string ambs_file)
|
|
{
|
|
string consulta, orstr;
|
|
|
|
consulta = string.Empty;
|
|
ambs_file = "";
|
|
/*orstr = null;
|
|
var n = reco.AmbitosSel.Length;
|
|
|
|
for (int i = 0; i < n; i++)
|
|
{
|
|
if (limp.AmbitosSel[i])
|
|
{
|
|
consulta = consulta + orstr + "(" + LimpiezaDef.filtro_str[i] + ")";
|
|
ambs_file = ambs_file + i.ToString("00");
|
|
if (orstr == null)
|
|
orstr = " OR ";
|
|
}
|
|
}
|
|
ambs_file = "_A" + ambs_file;
|
|
if (consulta == "()")
|
|
consulta = "";
|
|
*/
|
|
return consulta;
|
|
}
|
|
/**
|
|
* Comprueba lo necesario para ver si hay campos para la planificación
|
|
*/
|
|
public bool CompruebaPlanif()
|
|
{
|
|
|
|
//si ha importado no hace falta que compruebe, seguro que las tiene
|
|
if (OliviaGlob.IsConfig2())
|
|
return true;
|
|
//no ha importado, comprueba capa
|
|
if (ComprCamposPlanif(reco.CapaElems))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
/**
|
|
* Rellena el array de filtros en base a la config
|
|
*/
|
|
public void RellenaFiltrosReco()
|
|
{
|
|
//se rellena el array de filtros
|
|
RecogidaDef.filtro_str = new string[RecogidaDef.tipos_fracc_str.Length + RecogidaDef.tipos_carg_str.Length];
|
|
for (int i = 0; i < RecogidaDef.tipos_fracc_str.Length; i++)
|
|
{
|
|
//se comprueba que tipo de fracción se ha seleccionado. Si se ha seleccionado una fracción sin nombre (el campo en la capa es NULL, y en el comboBox de fracciiones aparece como "-") hay que modificar el filtro
|
|
if (RecogidaDef.tipos_fracc_str[i] == "-")
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_fracc + " IS NULL";
|
|
else
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_fracc + "= '" + RecogidaDef.tipos_fracc_str[i] + "'";
|
|
}
|
|
for (int i = RecogidaDef.tipos_fracc_str.Length; i < RecogidaDef.filtro_str.Length; i++)
|
|
{
|
|
RecogidaDef.filtro_str[i] = RecogidaDef.campos_def.cons_nomrec + "= '" + RecogidaDef.tipos_carg_str[i - RecogidaDef.tipos_fracc_str.Length] + "'";
|
|
}
|
|
}
|
|
}
|
|
}
|