예제 #1
0
        public ActionResult Informe(byte idInforme)
        {
            INFORME informe = db.INFORMES.Find(idInforme);

            InformeSolicitud informeSolicitud = JsonConvert.DeserializeObject <InformeSolicitud>(informe.data);

            ViewBag.Informe = informe;
            return(View(informeSolicitud));
        }
예제 #2
0
        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));
        }