2 using System.Collections.Generic;
3 using System.ComponentModel;
12 namespace sage.ew.ewbase
19 #region PROPIEADES PRIVADAS 21 private int _nIntervalo = 5;
22 private DateTime? _dUltEjecucion = null;
23 private string _cMensajeError =
string.Empty;
26 private BackgroundWorker _oBackgroundWorker;
27 private string _cTerminal = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_terminal")).Trim();
31 #region PROPIEDADES PUBLICAS 39 set => _nIntervalo = value;
47 get => ValidacionMaster();
53 public DateTime? _UltEjecucion
55 get => _dUltEjecucion;
61 public string _MensajeError
63 get => _cMensajeError;
75 if (_oBackgroundWorker != null && _oBackgroundWorker.IsBusy)
79 _oBackgroundWorker =
new BackgroundWorker
81 WorkerSupportsCancellation =
false,
82 WorkerReportsProgress =
false 86 _oBackgroundWorker.DoWork += _oBackgroundWorker_DoWork;
89 _oBackgroundWorker.RunWorkerAsync();
94 #region METODOS PUBLICOS 99 public delegate
void _ConnectedEvent_Handler(ref
bool tlOk);
116 EW_GLOBAL._DeleteDbVariable(
"Master");
119 catch (Exception loEx)
122 _cMensajeError = loEx.Message;
129 #region METODOS PRIVADOS 136 private bool ValidacionMaster()
138 _cMensajeError =
string.Empty;
139 string lcMaster =
string.Empty;
141 bool llOk = EW_GLOBAL._GetDbVariableString(
"Master", ref lcMaster);
142 bool llActualizaMaster = (!llOk ||
string.IsNullOrWhiteSpace(lcMaster));
144 if (!llActualizaMaster)
150 catch (Exception loEx)
152 _cMensajeError = loEx.Message;
155 if (_oMaster != null)
158 llActualizaMaster = (_oMaster.
_Terminal == _cTerminal);
159 if (!llActualizaMaster)
161 TimeSpan loTimeSpan = DateTime.Now - _oMaster.
_Fecha;
162 llActualizaMaster = (loTimeSpan.TotalMinutes > (2 * _Intervalo));
167 if (llActualizaMaster)
168 return ActualizarMaster();
177 private bool ActualizarMaster()
184 EW_GLOBAL._SaveDbVariable(
"Master", JsonConvert.SerializeObject(_oMaster));
187 catch (Exception loEx)
190 _cMensajeError = loEx.Message;
200 private bool ActivarInvoke()
208 private void ConfigurarTimer()
210 if (_oMaster == null)
217 _aTimer.Interval = lnInterval;
225 private void _oBackgroundWorker_DoWork(
object sender, DoWorkEventArgs e)
233 private void SetTimer()
235 _aTimer =
new Timer(1000 * 60 * _Intervalo);
236 _aTimer.Elapsed += _aTimer_Elapsed;
237 _aTimer.Enabled =
true;
245 private void _aTimer_Elapsed(
object sender, ElapsedEventArgs e)
252 _ConnectedEvent?.Invoke(ref llOk);
254 catch (Exception loEx)
256 _cMensajeError =
"Se ha producido un error en la invocación de los eventos suscritos a ConnectedController: " + loEx.Message;
257 DB.Escribir_En_Log_Error(DB.Modo_Registro.Registro_Error, loEx, _cMensajeError);
265 private void CloseTimer()
268 _aTimer.Enabled =
false;
void _Delete()
Si soy yo el Master, borro el registro con valor master de la tabla variable
void Dispose()
Gestión del dispose
void _Get()
Actualiza los campos de la clase con los valores actuales
string _Terminal
Nombre del terminal
_ConnectedEvent_Handler _ConnectedEvent
Evento
ConnectedControllerMaster
ConnectedController()
Constructor
int _Frecuencia
Frecuencia en la que se ejecuta el ConnectedController
DateTime _Fecha
Fecha en la que se ha ejecutado el ConnectedController
Control de las peticiones realizadas con plataformas de terceros