public List <Pregunta> getPreguntasActivas(string formulario) { List <Pregunta> preguntas = preguntaRepository.getPreguntasActivas(formulario); //Buscar las opciones foreach (Pregunta p in preguntas) { p.opciones = opcionesRepository.getOpcionesByPregunta(p.Id); } return(preguntas); }
public bool GuardarRespuestas(ObjRespuestaDTO objRespuestaDTO) { //Comienzo armando el objeto Respuesta miRespuesta = new Respuesta(); miRespuesta.IdPersona = objRespuestaDTO.IdPersona; miRespuesta.Tipo = objRespuestaDTO.Tipo; miRespuesta.GeneroAlerta = false; List <Correo> correosNotificar = null; //Evaluar si se levantan alertas List <Pregunta> preguntas = preguntaRepository.getPreguntasActivas("Cuestionario"); foreach (DetalleRespuesta p in objRespuestaDTO.DetalleRespuestas) { //Validar cada una de las respuestas Pregunta miPregunta = preguntas.SingleOrDefault(d => d.Id == p.IdPregunta); p.Pregunta = miPregunta; if (miPregunta.GeneraAlerta) { //Evalua los distintos tipos de valores switch (miPregunta.TipoValor) { case "texto": //Evalua los distintos tipos de condiciones para texto switch (miPregunta.CondicionGeneraAlerta) { case "=": if (p.ValorRespuesta == miPregunta.ValorGeneraAlerta) { miRespuesta.GeneroAlerta = true; p.GeneroAlerta = true; } break; } break; case "decimal": //Evalua los distintos tipos de condiciones para decimal switch (miPregunta.CondicionGeneraAlerta) { case ">=": if (Convert.ToDecimal(p.ValorRespuesta) >= Convert.ToDecimal(miPregunta.ValorGeneraAlerta)) { miRespuesta.GeneroAlerta = true; p.GeneroAlerta = true; } break; } break; } } } if (miRespuesta.GeneroAlerta) { //Busca las personas a notificar correosNotificar = correoRepository.getCorreosActivos(); string textoCorreos = ""; if (correosNotificar.Count > 0) { foreach (Correo c in correosNotificar) { textoCorreos += c.CorreoElectronico + ","; } textoCorreos = textoCorreos.Substring(0, textoCorreos.Length - 1); miRespuesta.PersonasNotificadas = textoCorreos; } } //Guarda encabezado int IdRespuesta = respuestaRepository.GuardarRespuesta(miRespuesta); if (IdRespuesta != 0) { //Guarda Detalle detalleRespuestaRepository.GuardarDetalleRespuestas(objRespuestaDTO.DetalleRespuestas, IdRespuesta, null); if (miRespuesta.GeneroAlerta) { //Envio correo de alertas Persona miPersona = personaRepository.getPersonaById(miRespuesta.IdPersona); string Asunto = "Registro de COVID de " + miPersona.Nombres + " " + miPersona.Apellidos; string Body = "<h3>" + miPersona.Nombres + " " + miPersona.Apellidos + " presenta sintomas de alarma en las siguientes preguntas:</h3>"; foreach (DetalleRespuesta d in objRespuestaDTO.DetalleRespuestas) { Body += "<p>" + "<div>Pregunta: " + d.Pregunta.Enunciado + "</div>" + "<div>Respuesta: " + d.ValorRespuesta + "</div>" + "</p>"; } List <string> correos = new List <string>(); foreach (Correo c in correosNotificar) { correos.Add(c.CorreoElectronico); } corrreoService.EnviaCorreo(correos, Asunto, Body); if (miPersona.Vinculo == "Visitante") { return(true); } else { return(false); } } else { return(false); } } return(false); }
public Persona createPersona(Persona laPersona) { List <Correo> correosNotificar = null; string cadenaPreguntas = string.Empty; if (laPersona.respuestas != null) { //Evaluar si se levantan alertas List <Pregunta> preguntas = preguntaRepository.getPreguntasActivas("Registro"); foreach (DetalleRespuesta p in laPersona.respuestas) { //Validar cada una de las respuestas Pregunta miPregunta = preguntas.SingleOrDefault(d => d.Id == p.IdPregunta); p.Pregunta = miPregunta; if (miPregunta.GeneraAlerta) { //Evalua los distintos tipos de valores switch (miPregunta.TipoValor) { case "texto": //Evalua los distintos tipos de condiciones para texto switch (miPregunta.CondicionGeneraAlerta) { case "=": if (p.ValorRespuesta == miPregunta.ValorGeneraAlerta) { laPersona.GeneroAlerta = true; p.GeneroAlerta = true; } break; } break; case "decimal": //Evalua los distintos tipos de condiciones para decimal switch (miPregunta.CondicionGeneraAlerta) { case ">=": if (Convert.ToDecimal(p.ValorRespuesta) >= Convert.ToDecimal(miPregunta.ValorGeneraAlerta)) { laPersona.GeneroAlerta = true; p.GeneroAlerta = true; } break; } break; } } } if (laPersona.GeneroAlerta) { //Busca las personas a notificar correosNotificar = correoRepository.getCorreosActivos(); string textoCorreos = ""; if (correosNotificar.Count > 0) { foreach (Correo c in correosNotificar) { textoCorreos += c.CorreoElectronico + ","; } textoCorreos = textoCorreos.Substring(0, textoCorreos.Length - 1); //laPersona.PersonasNotificadas = textoCorreos; } } } int idPersona = personaRepository.createPersona(laPersona); if (laPersona.respuestas != null) { //Guarda Detalle detalleRespuestaRepository.GuardarDetalleRespuestas(laPersona.respuestas, null, idPersona); laPersona.FechaHoraCreacion = DateTime.Now.ToString(); //TODO: Armar logica para enviar correo en caso de alerta if (laPersona.GeneroAlerta) { //Envio correo de alertas Persona miPersona = personaRepository.getPersonaById(idPersona); laPersona.FechaHoraCreacion = miPersona.FechaHoraCreacion; string Asunto = "Registro de COVID de " + miPersona.Nombres + " " + miPersona.Apellidos; string Body = "<h3>" + miPersona.Nombres + " " + miPersona.Apellidos + " presenta sintomas de alarma en las siguientes preguntas:</h3>"; foreach (DetalleRespuesta d in laPersona.respuestas) { if (d.ValorRespuesta == Constants.respuestas.respuestSi) { cadenaPreguntas += $"{d.Pregunta.Enunciado} </br>"; } Body += "<p>" + "<div>Pregunta: " + d.Pregunta.Enunciado + "</div>" + "<div>Respuesta: " + d.ValorRespuesta + "</div>" + "</p>"; } List <string> correos = new List <string>(); foreach (Correo c in correosNotificar) { correos.Add(c.CorreoElectronico); } corrreoService.EnviaCorreo(correos, Asunto, Body); } } laPersona.CadenaPreguntas = cadenaPreguntas; return(laPersona); }