159 lines
5.3 KiB
C#
159 lines
5.3 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 = HelperGdb.CheckFileds(pathCapa, camps);
|
|
ErrStr = HelperGdb.OutStr;
|
|
if (compCamp == 0)
|
|
return 0;
|
|
else if (compCamp == 1 && HelperGdb.OutStr.Contains(RecogidaDef.campos_def.cons_kgrec)) //le falta el de kg recogida, que igual no le hace falta
|
|
return 1;
|
|
else
|
|
return 2; //error o le falta 1 que no es el de kg reco o más
|
|
}
|
|
|
|
/*
|
|
* 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 Respuesta<bool> Ejecuta(ModosEjec modo)
|
|
{
|
|
var res = new Respuesta<bool>()
|
|
{
|
|
Value = false
|
|
};
|
|
|
|
com = (TratamientoComun)reco;
|
|
string nombFileAmbs = string.Empty;
|
|
|
|
//Prepara consulta
|
|
ErrStr = string.Empty;
|
|
|
|
if (!PreparaConsulta(out nombFileAmbs))
|
|
{
|
|
res.Error.Add("No se ha seleccionado una consulta válida" + reco.ConsultaAmbs);
|
|
return res;
|
|
}
|
|
if (com.ProgrSrc._ProgrSrc.Getcancelled())
|
|
{
|
|
res.Error.Add(Resource1.String_cancel_progreso);
|
|
return res;
|
|
}
|
|
//Prepara nombre
|
|
//Pone nombre al shape en función de los ámbitos, el tratamiento, y los polígonos + timestamp
|
|
reco.NombreShpExp_PrefTto = nombFileAmbs + DameStrPoligs();
|
|
|
|
string msg = "";
|
|
//comienza ejecucion
|
|
if (!ExportaEjec(modo, out msg))
|
|
{
|
|
res.Error.Add(msg);
|
|
return res;
|
|
}
|
|
if (com.ProgrSrc._ProgrSrc.Getcancelled())
|
|
{
|
|
res.Error.Add(Resource1.String_cancel_progreso);
|
|
return res;
|
|
}
|
|
//cierra las capas que se han abierto durante la exportación
|
|
CierraCapas();
|
|
res.Value = true;
|
|
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 string DameAmbsConsulta(out string cap_abrev)
|
|
{
|
|
string consulta, orstr, aux;
|
|
|
|
consulta = null;
|
|
cap_abrev = "";
|
|
aux = "";
|
|
orstr = null;
|
|
|
|
if (reco.TipoFrac != -1)
|
|
{
|
|
consulta = consulta + orstr + "(" + RecogidaDef.filtro_str[reco.TipoFrac] + ")";
|
|
cap_abrev = reco.TipoFrac.ToString("00");
|
|
cap_abrev = "F" + cap_abrev + "_";
|
|
if (consulta == "()")
|
|
consulta = "";
|
|
}
|
|
if (orstr == null)
|
|
orstr = " AND ";
|
|
if (reco.TipoCarg != -1)
|
|
{
|
|
consulta = consulta + orstr + "(" + RecogidaDef.filtro_str[RecogidaDef.tipos_fracc_str.Length + reco.TipoCarg] + ")";
|
|
aux = reco.TipoCarg.ToString("00");
|
|
cap_abrev = cap_abrev + "C" + aux;
|
|
if (consulta == "()")
|
|
consulta = "";
|
|
}
|
|
if (reco.TipoLate > 0)
|
|
{
|
|
consulta = consulta + orstr + "(" + RecogidaDef.campos_def.cons_lateral + " = '" + RecogidaDef.tipos_lateralidad[reco.TipoLate] + "'" + ")";
|
|
if (consulta == "()")
|
|
consulta = "";
|
|
}
|
|
return consulta;
|
|
}
|
|
|
|
}
|
|
}
|