private void TraceTagEvaluated(TagValue value) { Dictionary <TagType, TagValue> memoriesValuesForPrensa = new Dictionary <TagType, TagValue>(); Conditions evalConditions = new RequestManager.Conditions.Conditions(); //Recogemos el valor de cada uno de los tags relacionados con PrensaId foreach (var item in Enum.GetNames(typeof(TagType))) { TagType tagType = (TagType)Enum.Parse(typeof(TagType), item); var memoryValue = _datosEnMemoria.GetTagValue(value.Id_Prensa, tagType); memoriesValuesForPrensa.Add(tagType, memoryValue); } //Evaluamos condiciones relacionadas con el tag que ha cambiado listBox1.Items.Add("Tag Evaluado: " + value.Type); listBox1.Items.Add("Tag " + value.Type + " a cambiado de " + memoriesValuesForPrensa[value.Type] + " a " + value.Value); List <ICondition> conditionsEvalToApply = evalConditions.GetConditions(value.Type); foreach (ICondition cond in conditionsEvalToApply) { bool validation = cond.validateCondition(value, memoriesValuesForPrensa[value.Type]); if (validation == true) { switch (cond.action) { case ActionForRequest.Delete: listBox1.Items.Add("Solicitud borrada"); break; case ActionForRequest.Generated: listBox1.Items.Add("Solicitud Creada"); break; } } } }
/// <summary> /// Método al que se llama cada vez que llegan valores al dataprovider para evaluar las reglas aqui cargadas /// </summary> /// <param name="value"></param> public void EvaluateData(TagValue value) { try { Dictionary <TagType, TagValue> memoriesValuesForPrensa = new Dictionary <TagType, TagValue>(); RequestManager.Conditions.Conditions evalConditions = new RequestManager.Conditions.Conditions(); //Recogemos el valor de cada uno de los tags relacionados con PrensaId foreach (var item in Enum.GetNames(typeof(TagType))) { TagType tagType = (TagType)Enum.Parse(typeof(TagType), item); var memoryValue = _datosEnMemoria.GetTagValue(value.Id_Prensa, tagType); memoriesValuesForPrensa.Add(tagType, memoryValue); } //Evaluamos condiciones relacionadas con el tag que ha cambiado List <ICondition> conditionsEvalToApply = evalConditions.GetConditions(value.Type); KeyValuePair <long, PendingRequestLogic> solicitud = this._solicitudesGeneradas.GetAll().Where(x => x.Value.GetIdPrensa == value.Id_Prensa).SingleOrDefault(); foreach (ICondition cond in conditionsEvalToApply) { bool validation = cond.validateCondition(value, memoriesValuesForPrensa[value.Type]); if (validation == true) { switch (cond.action) { case ActionForRequest.Delete: this._solicitudesGeneradas.Remove(value.Id_Prensa); break; case ActionForRequest.Generated: this._solicitudesGeneradas.Add(value.Id_Prensa); break; } } } } catch (Exception er) { log.Error("EvaluateData()", er); } }