OliviaAddInPro/Model/TratamientoComun.cs

173 lines
6.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Internal.Layouts.Utilities;
using OliviaAddInPro.Helper;
using OliviaAddInPro.Services;
using static OliviaAddInPro.Model.ComunDef;
namespace OliviaAddInPro.Model
{
public class TratamientoComun
{
/**
* Tipo de tratamiento, en limpieza es sobre LimpiezaDef.TiposTto y en reco sobre RecogidaDef.tipos_fracc_str
*/
public int TipoTto { get; set; } = (int)LimpiezaDef.TiposTto.TtoNoDef;
/**
* String para Tipo de tratamiento, se guarda como columna en el shp
*/
public string TipoTtoStr { get; set; } = String.Empty;
/**
* Capa de ámbitos
*/
public string CapaElems { get; set; } = string.Empty;
/**
* Nombre dle shp exportado de datos
*/
public string NombreShpExport { get; set; } = string.Empty;
/**
* Nombre dle shp exportado de datos
*/
public string NombreShpExp_PrefTto { get; set; } = string.Empty;
/**
* Nombre dle shp exportado de nw
*/
public string NombreShpExportNw { get; set; } = string.Empty;
/**
* Velocidad de desplazamiento, en km/h. Si es 0, es determinada por la vía
*/
public int VDespl { get; set; } = 0;
/**
* Tiempo de tratamiento, en minutos
*/
public int Ttto { get; set; } = 5;
/**
* Geometría para el filtro de ámbitos, incluye zonas, se añaden los ámbitos que pertenecen a esa geom
*/
public Geometry GeomZon { get; set; } = null;
public string TextGeomZon { get; set; } = string.Empty;
/**
* Geometría para el filtro de ámbitos, incluye zonas, se añaden los ámbitos que pertenecen a esa geom
*/
public Geometry GeomNiv { get; set; } = null;
public string TextGeomNiv { get; set; } = string.Empty;
/**
* Geometría para el filtro de ámbitos, incluye restricciones, se quitan los ámbitos que pertenecen a esa geom
*/
public Geometry GeomRestr { get; set; } = null;
public string TextGeomRestr { get; set; } = string.Empty;
/**
* Coordenadas de la instalación
*/
public Coordinate2D CoordsInstal { get; set; } = new Coordinate2D(0, 0);
/**
* Coordenadas de la planta de descarga, solo hace falta para recogida
*/
public Coordinate2D CoordsPlanta { get; set; } = new Coordinate2D(0, 0);
/**
* Buffer para la exportación, en metros
*/
public int BuffExport { get; set; } = 1000;
/**
* Tiempo de trabajo al día por convenio, en minutos
*/
public double TConv { get; set; } = LimpiezaDef.Parametros.t_conv;
/**
* Tiempo de descanso del personal, en minutos
*/
public double TDescan { get; set; } = LimpiezaDef.Parametros.t_descanso;
/**
* Tiempo de carga y descarga, en minutos
*/
public double TDescarg { get; set; } = LimpiezaDef.Parametros.t_cardesc;
/**
* Tiempo de desplazamiento inicio/fin a las instalaciones, en minutos
*/
public double TDesplIniFin { get; set; } = LimpiezaDef.Parametros.t_desp;
/**
* hora de inicio de la jornada de trabajo, en minutos
*/
public double HIni { get; set; } = LimpiezaDef.Parametros.h_inicio;
/**
* Porcentaje de tráfico que se estima, ya que si no los vehículos irían siempre a la velocida máxima permitida por la vía
*/
public int Trafico { get; set; } = 80;
/**
* Número de puntos de control
*/
public int NPtosCtrl { get; set; } = 3;
/**
* Número de sectores, si es 0, se calcula automáticamente, si es negativo, se ajusta a jornada
*/
public int NSect { get; set; } = 3;
/**
* Ignorar o noelementos aislados
*/
public bool IgnoAis { get; set; } = true;
/**
* Almacena la consulta para exportar los ámbitos
*/
public string ConsultaAmbs { get; set; } = "";
/**
* String para errores o mensajes
*/
private string err_str = string.Empty;
public string ErrStr
{
get
{
/*string val = string.Empty;
val.CopyFrom(err_str);
err_str = string.Empty;
return val; */
return err_str;
}
set { err_str = value; }
}
/**
* Para la ventana de progreso
*/
public MyCancelableProgressorSource ProgrSrc { get; set; } = null;
public ProcesoEjecServ ProceSrv { get; set; } = null;
public FinProcServ FinProceSrv { get; set; } = null;
public TratamientoComun()
{
ProgrSrc = new MyCancelableProgressorSource(OliviaGlob.progrDialog);
ProceSrv = new ProcesoEjecServ();
}
public void ComienzaEjec(OliviaAddInPro.Services.ModosEjec modo)
{
//muestra progreso
OliviaGlob.progrDialog.Show();
//oculta la ventana
OliviaGlob.ShowHidePane(false);
//comienza ejecución
Action<Respuesta<TiposEjecucion>> ac = FinProceSrv.finEjecuta;
EjecutaAsync(modo, ac);
}
public async void EjecutaAsync(ModosEjec modo, Action<Respuesta<TiposEjecucion>> ffin)
{
await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
var res = Ejecuta(modo);
ffin(res);
return res;
});
}
public virtual Respuesta<TiposEjecucion> Ejecuta(ModosEjec modo)
{
Respuesta<TiposEjecucion> res = new Respuesta<TiposEjecucion>() { Value = TiposEjecucion.FinEjecNOk };
res.Error.Add("No implementado");
return res;
}
}
}