public ActionResult Informe(byte idInforme) { INFORME informe = db.INFORMES.Find(idInforme); InformeSolicitud informeSolicitud = JsonConvert.DeserializeObject <InformeSolicitud>(informe.data); ViewBag.Informe = informe; return(View(informeSolicitud)); }
public ActionResult CrearInforme(int idSolicitud) { Object result; SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud); VISITA visita = solicitud.VISITAs.First(); try { if (solicitud.id_estado != 3 || (solicitud.id_estado_proceso != 4 && solicitud.id_estado_proceso != 6)) { throw new Exception("No puede generar reportes con los estados actuales de la solicitud"); } if (solicitud.id_estado_proceso == 6 && solicitud.fecha_finalizacion == null) { solicitud.fecha_finalizacion = DateTime.Now; } var tipo = "O"; if (solicitud.INFORMES.Count() > 0) { tipo = "R"; } var areas = solicitud.DETALLE_SOLICITUD.GroupBy(ds => ds.ANALISI.AREA).ToList(); List <string> areasInforme = new List <string>(); List <INFORME> informes = new List <INFORME>(); foreach (var area in areas) { if (area.Key.id_area < 4) { if (!areasInforme.Contains("FQAA")) { areasInforme.Add("FQAA"); } } else { if (!areasInforme.Contains("Bact")) { areasInforme.Add("Bact"); } } } foreach (string areaInforme in areasInforme) { List <Parametro> parametros = new List <Parametro>(); List <Resultado> resultados = new List <Resultado>(); foreach (DETALLE_VISITA detalleVisita in visita.DETALLE_VISITA) { Parametro parametro = new Parametro() { nombre = detalleVisita.MUESTRA.nombre_muestra, valor = detalleVisita.value.ToString(), expresado = detalleVisita.MUESTRA.expresado, }; parametros.Add(parametro); } IEnumerable <LaboratorioMarn.DETALLE_SOLICITUD> detallesSolicitud = solicitud.DETALLE_SOLICITUD.ToList(); foreach (DETALLE_SOLICITUD detalle in detallesSolicitud) { REPORTE reporte = detalle.ANALISIS_EMPLEADO.First().REPORTEs.First(); Resultado resultado = new Resultado() { analisis = detalle.ANALISI.nombre, resultado = reporte.resultado.ToString(), incerteza = reporte.incerteza.ToString(), unidades = reporte.unidades, limiteDeteccion = reporte.limite_deteccion.ToString(), metodo = detalle.ANALISI.metodo }; resultados.Add(resultado); } InformeSolicitud informeSolicitud = new InformeSolicitud() { tipo = tipo, numeroReferencia = solicitud.no_referencia, solicitante = solicitud.SOLICITANTE.nombre_solicitante, fechaInicio = solicitud.fecha_inicio.Value.ToShortDateString(), fechaFinalizacion = solicitud.fecha_finalizacion.Value.ToShortDateString(), direccion = visita.SITIO_MUESTREO.direccion_sitio, fechaTomaMuestra = visita.fecha_visita.Value.ToString(), fechaRecepcion = visita.fecha_entrega.Value.ToShortDateString(), responsableMuestra = visita.EMPLEADO.nombre_empleado, tipoMuestra = visita.TIPO_MUESTRA.nombre_tipo_muestra, procedencia = visita.PROCEDENCIA.nombre_procedencia, areas = areaInforme, fechaGeneracion = DateTime.Now.ToShortDateString(), Parametros = parametros, Resultados = resultados }; string informeJson = JsonConvert.SerializeObject(informeSolicitud); INFORME informe = new INFORME() { data = informeJson, fecha_creacion = DateTime.Now, tipo = tipo, id_solicitud = solicitud.id_solicitud, areas = areaInforme }; solicitud.INFORMES.Add(informe); informes.Add(informe); } solicitud.informe_generado = 1; solicitud.id_estado_proceso = 5; foreach (PROCESO_ANALISTA procesoAnalista in solicitud.PROCESO_ANALISTA) { procesoAnalista.id_estado_proceso_analista = 6; } db.SaveChanges(); List <int> informesIds = new List <int>(); foreach (INFORME informe in informes) { informesIds.Add(informe.id_informe); } result = new { valid = true, informes = informesIds }; } catch (Exception e) { result = new { valid = false, msg = e.Message }; } return(Json(result)); }