/// <summary> /// Procese las incidencias para verificar el estado y fecha vencimiento /// </summary> internal void ProcesarIncicencias() { var incidenciaBl = new IncidenciasBL(); try { var listaIncidencias = new List <IncidenciasInfo>(); listaIncidencias = ObtenerIncidenciasActivas(); if (listaIncidencias != null) { listaIncidencias = listaIncidencias.Where(x => x.Estatus.EstatusId != Estatus.CerrarAler.GetHashCode()).ToList(); if (listaIncidencias.Any()) { foreach (var incidencia in listaIncidencias) { try { AlertaInfo alertaInfo = listaAlertaConfiguracion.FirstOrDefault( x => x.AlertaID == incidencia.Alerta.AlertaID); IncidenciasInfo incidenciaInfo; switch (incidencia.Estatus.EstatusId) { case (int)Estatus.NuevaAlert: case (int)Estatus.RechaAlert: //Cambiar estatus a vencidas if (incidencia.FechaVencimiento <= DateTime.Now && incidencia.Accion.AccionID == 0) { incidenciaInfo = new IncidenciasInfo { IncidenciasID = incidencia.IncidenciasID, Estatus = new EstatusInfo { EstatusId = Estatus.VenciAlert.GetHashCode() }, Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID, HorasRespuesta = incidencia.Alerta.HorasRespuesta }, Folio = incidencia.Folio, Fecha = incidencia.Fecha, Comentarios = null, UsuarioModificacionID = usuario.UsuarioID, IncidenciaSeguimiento = new IncidenciaSeguimientoInfo { EstatusAnterior = new EstatusInfo { EstatusId = incidencia.Estatus.EstatusId }, AccionAnterior = new AccionInfo { AccionID = incidencia.Accion.AccionID }, UsuarioResponsableAnterior = new UsuarioInfo { UsuarioID = incidencia.UsuarioResponsable.UsuarioID }, NivelAlertaAnterior = new NivelAlertaInfo { NivelAlertaId = incidencia.NivelAlerta.NivelAlertaId }, FechaVencimientoAnterior = incidencia.FechaVencimiento } }; incidenciaBl.IncidenciaVencida(incidenciaInfo); } //Cambiar estatus a registrada else if (incidencia.FechaVencimiento <= DateTime.Now && incidencia.Accion.AccionID > 0) { incidenciaInfo = new IncidenciasInfo { IncidenciasID = incidencia.IncidenciasID, Estatus = new EstatusInfo { EstatusId = Estatus.RegisAlert.GetHashCode() }, Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID, HorasRespuesta = incidencia.Alerta.HorasRespuesta }, Folio = incidencia.Folio, Fecha = incidencia.Fecha, Comentarios = null, UsuarioModificacionID = usuario.UsuarioID, IncidenciaSeguimiento = new IncidenciaSeguimientoInfo { EstatusAnterior = new EstatusInfo { EstatusId = incidencia.Estatus.EstatusId }, AccionAnterior = new AccionInfo { AccionID = incidencia.Accion.AccionID }, UsuarioResponsableAnterior = new UsuarioInfo { UsuarioID = incidencia.UsuarioResponsable.UsuarioID }, NivelAlertaAnterior = new NivelAlertaInfo { NivelAlertaId = incidencia.NivelAlerta.NivelAlertaId }, FechaVencimientoAnterior = incidencia.FechaVencimiento } }; incidenciaBl.RegistrarIncidencia(incidenciaInfo); } break; case (int)Estatus.VenciAlert: case (int)Estatus.RegisAlert: //Cambiar la incidencia a vencida if (incidencia.FechaVencimiento <= DateTime.Now) { incidenciaInfo = new IncidenciasInfo { IncidenciasID = incidencia.IncidenciasID, Estatus = new EstatusInfo { EstatusId = Estatus.VenciAlert.GetHashCode() }, Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID, HorasRespuesta = incidencia.Alerta.HorasRespuesta }, Folio = incidencia.Folio, Fecha = incidencia.Fecha, Comentarios = Properties.ResourceServices.Incidencia_Vencida, UsuarioModificacionID = usuario.UsuarioID, IncidenciaSeguimiento = new IncidenciaSeguimientoInfo { EstatusAnterior = new EstatusInfo { EstatusId = incidencia.Estatus.EstatusId }, AccionAnterior = new AccionInfo { AccionID = incidencia.Accion.AccionID }, UsuarioResponsableAnterior = new UsuarioInfo { UsuarioID = incidencia.UsuarioResponsable.UsuarioID }, NivelAlertaAnterior = new NivelAlertaInfo { NivelAlertaId = incidencia.NivelAlerta.NivelAlertaId }, FechaVencimientoAnterior = incidencia.FechaVencimiento } }; incidenciaBl.IncidenciaVencida(incidenciaInfo); } break; } } catch (ExcepcionDesconocida ex) { var bitacoraBL = new BitacoraIncidenciasBL(); var bitacora = new BitacoraIncidenciaInfo { Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID }, Folio = incidencia.Folio, Organizacion = new OrganizacionInfo { OrganizacionID = incidencia.Organizacion.OrganizacionID }, Error = ex.Message }; bitacoraBL.GuardarErrorIncidencia(bitacora); } } } } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }
/// <summary> /// Cierra la incidencia /// </summary> /// <param name="incidencia"></param> internal void CerrarIncidenciaAutomatico(IncidenciasInfo incidencia) { var incidenciaBl = new IncidenciasBL(); try { try { var incidenciaInfo = new IncidenciasInfo { IncidenciasID = incidencia.IncidenciasID, Estatus = new EstatusInfo { EstatusId = Estatus.CerrarAler.GetHashCode() }, Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID, HorasRespuesta = incidencia.Alerta.HorasRespuesta }, Folio = incidencia.Folio, Fecha = incidencia.Fecha, FechaVencimiento = incidencia.FechaVencimiento, Comentarios = null, UsuarioModificacionID = usuario.UsuarioID, IncidenciaSeguimiento = new IncidenciaSeguimientoInfo { EstatusAnterior = new EstatusInfo { EstatusId = incidencia.Estatus.EstatusId }, AccionAnterior = new AccionInfo { AccionID = incidencia.Accion.AccionID }, UsuarioResponsableAnterior = new UsuarioInfo { UsuarioID = incidencia.UsuarioResponsable.UsuarioID }, NivelAlertaAnterior = new NivelAlertaInfo { NivelAlertaId = incidencia.NivelAlerta.NivelAlertaId } } }; incidenciaBl.CerrarIncidencia(incidenciaInfo); } catch (ExcepcionDesconocida ex) { var bitacoraBL = new BitacoraIncidenciasBL(); var bitacora = new BitacoraIncidenciaInfo { Alerta = new AlertaInfo { AlertaID = incidencia.Alerta.AlertaID }, Folio = incidencia.Folio, Organizacion = new OrganizacionInfo { OrganizacionID = incidencia.Organizacion.OrganizacionID }, Error = ex.Message }; bitacoraBL.GuardarErrorIncidencia(bitacora); } } catch (ExcepcionGenerica) { throw; } catch (Exception ex) { Logger.Error(ex); throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex); } }