public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteImpacto.rdlc");
            decimal resultado1 = 0, resultado2 = 0, resultado3 = 0, resultado4 = 0, resultado5 = 0, resultado6 = 0;
            decimal tiempo1 = 0, tiempo2 = 0, tiempo3 = 0, tiempo4 = 0, tiempo5 = 0, tiempo6 = 0;
            decimal lado1 = 0, lado2 = 0, lado3 = 0, lado4 = 0, lado5 = 0, lado6 = 0;
            decimal atributo1 = 0, atributo2 = 0, atributo3 = 0, atributo4 = 0, atributo5 = 0, atributo6 = 0;
            //DateTime fecha = DateTime.Parse(resultado.FechaPrueba.ToString("dd/MM/yyyy"));
            string noTubo = "", longMuestra = "", fechaInicio = "", fechaFin = "";

            //Resultado
            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            int number = -1;
            for (int i = 0; i < resultQRY.Count; i++)
            {
                if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-029-CNCP")
                    {
                        var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                        //for (int d = 0; d < resultDetalle.Count; d++)
                        //{
                        //    var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[i].Id).ToList();

                        //    for (int ad = 0; ad < atributoDetalle.Count; ad++)
                        //    {
                        //        if (atributoDetalle[ad].AtributoId == 3)
                        //        {
                        //            switch(
                        //        }
                        //    }

                        //}

                        for (int j = 0; j < resultDetalle.Count; j++)
                        {
                            var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                            for (int ad = 0; ad < atributoDetalle.Count; ad++)
                            {
                                switch (atributoDetalle[ad].AtributoId)
                                {
                                    case 5:
                                        atributo1 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 6:
                                        atributo2 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 7:
                                        atributo3 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 8:
                                        atributo4 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 9:
                                        atributo5 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 10:
                                        atributo6 = decimal.Parse(atributoDetalle[ad].Valor);
                                        break;
                                    case 149:
                                        noTubo = atributoDetalle[ad].Valor;
                                        break;
                                    case 150:
                                        longMuestra = atributoDetalle[ad].Valor;
                                        break;
                                    case 151:
                                        fechaInicio = atributoDetalle[ad].Valor;
                                        break;
                                    case 152:
                                        fechaFin = atributoDetalle[ad].Valor;
                                        break;
                                }

                                if (atributoDetalle[ad].AtributoId == 3)
                                {
                                    switch (resultDetalle[j].MuestraNum)
                                    {
                                        case 1:
                                            if (lado1 == 0)
                                            {
                                                lado1 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (lado2 == 0)
                                            {
                                                lado2 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (lado3 == 0)
                                            {
                                                lado3 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (lado4 == 0)
                                            {
                                                lado4 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (lado5 == 0)
                                            {
                                                lado5 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (lado6 == 0)
                                            {
                                                lado6 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            break;
                                    }
                                }

                                if (atributoDetalle[ad].AtributoId == 4)
                                {
                                    switch (resultDetalle[j].MuestraNum)
                                    {
                                        case 1:
                                            if (tiempo1 == 0)
                                            {
                                                tiempo1 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (tiempo2 == 0)
                                            {
                                                tiempo2 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (tiempo3 == 0)
                                            {
                                                tiempo3 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (tiempo4 == 0)
                                            {
                                                tiempo4 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (tiempo5 == 0)
                                            {
                                                tiempo5 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            else if (tiempo6 == 0)
                                            {
                                                tiempo6 = decimal.Parse(atributoDetalle[ad].Valor);
                                            }
                                            break;
                                    }
                                }
                            }

                            if (resultDetalle[j].MuestraNum == 1)
                            {
                                resultado1 = resultDetalle[j].ResultadoDetalleValor;
                            }

                            if (resultDetalle[j].MuestraNum == 2)
                            {
                                resultado2 = resultDetalle[j].ResultadoDetalleValor;
                            }

                            if (resultDetalle[j].MuestraNum == 3)
                            {
                                resultado3 = resultDetalle[j].ResultadoDetalleValor;
                            }

                            if (resultDetalle[j].MuestraNum == 4)
                            {
                                resultado4 = resultDetalle[j].ResultadoDetalleValor;
                            }

                            if (resultDetalle[j].MuestraNum == 5)
                            {
                                resultado5 = resultDetalle[j].ResultadoDetalleValor;
                            }

                            if (resultDetalle[j].MuestraNum == 6)
                            {
                                resultado6 = resultDetalle[j].ResultadoDetalleValor;
                            }
                        }

                    }
                }

                //if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-029-CNCP" || resultQRY[i].NormaEnsayo.Nombre == "ASTM D 2444")
                //{
                //    number = i;
                //}
            }

            //if (number != -1)
            //{
            //Lote
            var resultLote = resultQRY[0].Lote;
            List<Lote> listLote = new List<Lote>();
            listLote.Add(resultLote);
            //ResultadoDetalle
            var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
            //Producto
            var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
            var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
            var resultTurno = resultLote.Turno;
            List<Turno> listTurno = new List<Turno>();
            listTurno.Add(resultTurno);
            var resultNorma = resultQRY[0].Norma;
            List<Norma> listNorma = new List<Norma>();
            listNorma.Add(resultNorma);
            var resultDiametro = resultProducto[0].MedidaDiametro;
            List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
            listDiametro.Add(resultDiametro);

            BsdReportDataSource rds = new BsdReportDataSource("DsImpacto", resultQRY);
            BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
            BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
            BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
            BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
            BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
            BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
            BsdReportDataSource rds8 = new BsdReportDataSource("DsMDiametro", listDiametro);

            BsdReportParameter parameter = new BsdReportParameter("Resultado1", resultado1.ToString(), true);
            BsdReportParameter parameter2 = new BsdReportParameter("Resultado2", resultado2.ToString(), true);
            BsdReportParameter parameter3 = new BsdReportParameter("Resultado3", resultado3.ToString(), true);
            BsdReportParameter parameter4 = new BsdReportParameter("Resultado4", resultado4.ToString(), true);
            BsdReportParameter parameter5 = new BsdReportParameter("Resultado5", resultado5.ToString(), true);
            BsdReportParameter parameter6 = new BsdReportParameter("Resultado6", resultado6.ToString(), true);
            BsdReportParameter plado1 = new BsdReportParameter("Lado1", lado1.ToString(), true);
            BsdReportParameter plado2 = new BsdReportParameter("Lado2", lado2.ToString(), true);
            BsdReportParameter plado3 = new BsdReportParameter("Lado3", lado3.ToString(), true);
            BsdReportParameter plado4 = new BsdReportParameter("Lado4", lado4.ToString(), true);
            BsdReportParameter plado5 = new BsdReportParameter("Lado5", lado5.ToString(), true);
            BsdReportParameter plado6 = new BsdReportParameter("Lado6", lado6.ToString(), true);
            BsdReportParameter ptiempo1 = new BsdReportParameter("Tiempo1", tiempo1.ToString(), true);
            BsdReportParameter ptiempo2 = new BsdReportParameter("Tiempo2", tiempo2.ToString(), true);
            BsdReportParameter ptiempo3 = new BsdReportParameter("Tiempo3", tiempo3.ToString(), true);
            BsdReportParameter ptiempo4 = new BsdReportParameter("Tiempo4", tiempo4.ToString(), true);
            BsdReportParameter ptiempo5 = new BsdReportParameter("Tiempo5", tiempo5.ToString(), true);
            BsdReportParameter ptiempo6 = new BsdReportParameter("Tiempo6", tiempo6.ToString(), true);
            BsdReportParameter patributo1 = new BsdReportParameter("MasaProyectil", atributo1.ToString(), true);
            BsdReportParameter patributo2 = new BsdReportParameter("Acondicionamiento", atributo2.ToString(), true);
            BsdReportParameter patributo3 = new BsdReportParameter("EnergiaRequerida", atributo3.ToString(), true);
            BsdReportParameter patributo4 = new BsdReportParameter("TipoProyectil", atributo4.ToString(), true);
            BsdReportParameter patributo5 = new BsdReportParameter("Temperatura", atributo5.ToString(), true);
            BsdReportParameter patributo6 = new BsdReportParameter("AlturaProyectil", atributo6.ToString(), true);
            BsdReportParameter patributo7 = new BsdReportParameter("Norma", "NormaTest", true);
            BsdReportParameter patributo8 = new BsdReportParameter("NoTubo", noTubo, true);
            BsdReportParameter patributo9 = new BsdReportParameter("LongMuestra", longMuestra, true);
            BsdReportParameter patributo10 = new BsdReportParameter("FechaInicio", fechaInicio, true);
            BsdReportParameter patributo11 = new BsdReportParameter("FechaFin", fechaFin, true);

            IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
            ds.Add(rds);
            ds.Add(rds2);
            ds.Add(rds3);
            ds.Add(rds4);
            ds.Add(rds5);
            ds.Add(rds6);
            ds.Add(rds7);
            ds.Add(rds8);

            BsdReport report = new BsdReport("Reporte de Impacto", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
            report.Parameters.Add(parameter);
            report.Parameters.Add(parameter2);
            report.Parameters.Add(parameter3);
            report.Parameters.Add(parameter4);
            report.Parameters.Add(parameter5);
            report.Parameters.Add(parameter6);
            report.Parameters.Add(plado1);
            report.Parameters.Add(plado2);
            report.Parameters.Add(plado3);
            report.Parameters.Add(plado4);
            report.Parameters.Add(plado5);
            report.Parameters.Add(plado6);
            report.Parameters.Add(ptiempo1);
            report.Parameters.Add(ptiempo2);
            report.Parameters.Add(ptiempo3);
            report.Parameters.Add(ptiempo4);
            report.Parameters.Add(ptiempo5);
            report.Parameters.Add(ptiempo6);
            report.Parameters.Add(patributo1);
            report.Parameters.Add(patributo2);
            report.Parameters.Add(patributo3);
            report.Parameters.Add(patributo4);
            report.Parameters.Add(patributo5);
            report.Parameters.Add(patributo6);
            report.Parameters.Add(patributo7);
            report.Parameters.Add(patributo8);
            report.Parameters.Add(patributo9);
            report.Parameters.Add(patributo10);
            report.Parameters.Add(patributo11);

            BsdReportResult result = ReportViewerService.CreateReport(report);

            //FileStream fs = new FileStream(@"c:\Reportes\" + report.Name + "." + result.FileType, FileMode.OpenOrCreate);
            //fs.Write(result.Content, 0, result.Content.Length);
            //fs.Close();

            return File(result.Content, result.MimeType);
        }
        public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteCaracteristicasF.rdlc");

            decimal atributo1 = 0, atributo2 = 0, atributo3 = 0, atributo4 = 0, atributo5 = 0, atributo6 = 0, atributo7 = 0, atributo8 = 0,
            atributo9 = 0, atributo10 = 0, atributo11 = 0, atributo12 = 0, atributo13 = 0, atributo14 = 0, atributo15 = 0,
            atributo16 = 0, atributo17 = 0, atributo18 = 0, atributo19 = 0, atributo20 = 0, atributo21 = 0, atributo22 = 0, atributo23 = 0,
            atributo24 = 0, atributo25 = 0, atributo26 = 0, atributo27 = 0, atributo28 = 0, atributo29 = 0, atributo30 = 0, atributo31 = 0,
            atributo32 = 0, atributo33 = 0, atributo34 = 0, atributo35 = 0;
            decimal resultado1 = 0, resultado2 = 0, resultado3 = 0, resultado4 = 0, resultado5 = 0, resultado6 = 0;
            string noTubo = "0", Foto1 = "", Foto2 = "", Foto3 = "";

            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            if (resultQRY.Count > 0)
            {
                for (int i = 0; i < resultQRY.Count; i++)
                {
                    if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                    {
                        if (resultQRY[i].NormaEnsayo.Nombre == "ASTM D 4218")
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                                for (int ad = 0; ad < atributoDetalle.Count; ad++)
                                {
                                    switch (atributoDetalle[ad].AtributoId)
                                    {
                                        case 19:
                                            atributo1 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 20:
                                            atributo2 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 21:
                                            atributo3 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 22:
                                            atributo4 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 23:
                                            atributo5 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 24:
                                            atributo6 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 25:
                                            atributo7 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 26:
                                            atributo8 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 27:
                                            atributo9 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 28:
                                            atributo10 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 29:
                                            atributo11 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 30:
                                            atributo12 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 31:
                                            atributo13 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 32:
                                            atributo14 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 33:
                                            atributo15 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 34:
                                            atributo16 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 35:
                                            atributo17 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 36:
                                            atributo18 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 37:
                                            atributo19 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 38:
                                            atributo20 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 39:
                                            atributo21 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 40:
                                            atributo22 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 41:
                                            atributo23 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 42:
                                            atributo24 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 43:
                                            atributo25 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 44:
                                            atributo26 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 45:
                                            atributo27 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 46:
                                            atributo28 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 47:
                                            atributo29 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 48:
                                            atributo30 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 49:
                                            atributo31 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 50:
                                            atributo32 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 51:
                                            atributo33 = decimal.Parse(atributoDetalle[ad].Valor);
                                            Foto1 = atributoDetalle[ad].Valor;
                                            break;
                                        case 52:
                                            atributo34 = decimal.Parse(atributoDetalle[ad].Valor);
                                            Foto2 = atributoDetalle[ad].Valor;
                                            break;
                                        case 53:
                                            atributo35 = decimal.Parse(atributoDetalle[ad].Valor);
                                            Foto3 = atributoDetalle[ad].Valor;
                                            break;
                                        case 156:
                                            noTubo = atributoDetalle[ad].Valor;
                                            break;
                                    }
                                }
                            }
                        }
                    }
                }

                //Lote
                var resultLote = resultQRY[0].Lote;
                List<Lote> listLote = new List<Lote>();
                listLote.Add(resultLote);
                //ResultadoDetalle
                var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
                //Producto
                var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
                var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
                var resultTurno = resultLote.Turno;
                List<Turno> listTurno = new List<Turno>();
                listTurno.Add(resultTurno);
                var resultNorma = resultQRY[0].Norma;
                List<Norma> listNorma = new List<Norma>();
                listNorma.Add(resultNorma);
                var resultDiametro = resultProducto[0].MedidaDiametro;
                List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
                listDiametro.Add(resultDiametro);
                List<Resultado> ListVacio = new List<Resultado>();
                List<Resultado> ListPresion = new List<Resultado>();
                List<Equipo> listEquipo = new List<Equipo>();

                BsdReportDataSource rds = new BsdReportDataSource("DsCaracteristica", resultQRY);
                BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
                BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
                BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
                BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
                BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
                BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
                BsdReportDataSource rds8 = new BsdReportDataSource("DsMDiametro", listDiametro);
                BsdReportDataSource rds9 = new BsdReportDataSource("DsVacio", ListVacio);
                BsdReportDataSource rds10 = new BsdReportDataSource("DsPresion", ListPresion);

                BsdReportParameter parameter1 = new BsdReportParameter("IndiceFluidez1", atributo1.ToString(), true);
                BsdReportParameter parameter2 = new BsdReportParameter("IndiceFluidez2", atributo2.ToString(), true);
                BsdReportParameter parameter3 = new BsdReportParameter("Densidad1", atributo3.ToString(), true);
                BsdReportParameter parameter4 = new BsdReportParameter("Densidad2", atributo4.ToString(), true);
                BsdReportParameter parameter5 = new BsdReportParameter("Pigmento1", atributo5.ToString(), true);
                BsdReportParameter parameter6 = new BsdReportParameter("Pigmento2", atributo6.ToString(), true);
                BsdReportParameter parameter7 = new BsdReportParameter("Resina1", atributo7.ToString(), true);
                BsdReportParameter parameter8 = new BsdReportParameter("Resina2", atributo8.ToString(), true);
                BsdReportParameter parameter9 = new BsdReportParameter("M11", atributo9.ToString(), true);
                BsdReportParameter parameter10 = new BsdReportParameter("M12", atributo10.ToString(), true);
                BsdReportParameter parameter11 = new BsdReportParameter("M13", atributo11.ToString(), true);
                BsdReportParameter parameter12 = new BsdReportParameter("M14", atributo12.ToString(), true);
                BsdReportParameter parameter13 = new BsdReportParameter("M15", atributo13.ToString(), true);
                BsdReportParameter parameter14 = new BsdReportParameter("M16", atributo14.ToString(), true);
                BsdReportParameter parameter15 = new BsdReportParameter("M21", atributo15.ToString(), true);
                BsdReportParameter parameter16 = new BsdReportParameter("M22", atributo16.ToString(), true);
                BsdReportParameter parameter17 = new BsdReportParameter("M23", atributo17.ToString(), true);
                BsdReportParameter parameter18 = new BsdReportParameter("M24", atributo18.ToString(), true);
                BsdReportParameter parameter19 = new BsdReportParameter("M25", atributo19.ToString(), true);
                BsdReportParameter parameter20 = new BsdReportParameter("M26", atributo20.ToString(), true);
                BsdReportParameter parameter21 = new BsdReportParameter("M31", atributo21.ToString(), true);
                BsdReportParameter parameter22 = new BsdReportParameter("M32", atributo22.ToString(), true);
                BsdReportParameter parameter23 = new BsdReportParameter("M33", atributo23.ToString(), true);
                BsdReportParameter parameter24 = new BsdReportParameter("M34", atributo24.ToString(), true);
                BsdReportParameter parameter25 = new BsdReportParameter("M35", atributo25.ToString(), true);
                BsdReportParameter parameter26 = new BsdReportParameter("M36", atributo26.ToString(), true);
                BsdReportParameter parameter27 = new BsdReportParameter("M41", atributo27.ToString(), true);
                BsdReportParameter parameter28 = new BsdReportParameter("M42", atributo28.ToString(), true);
                BsdReportParameter parameter29 = new BsdReportParameter("M43", atributo29.ToString(), true);
                BsdReportParameter parameter30 = new BsdReportParameter("M44", atributo30.ToString(), true);
                BsdReportParameter parameter31 = new BsdReportParameter("M45", atributo31.ToString(), true);
                BsdReportParameter parameter32 = new BsdReportParameter("M46", atributo32.ToString(), true);
                BsdReportParameter parameter33 = new BsdReportParameter("M44", atributo33.ToString(), true);
                BsdReportParameter parameter34 = new BsdReportParameter("M44", atributo34.ToString(), true);
                BsdReportParameter parameter35 = new BsdReportParameter("M44", atributo35.ToString(), true);
                BsdReportParameter parameter36 = new BsdReportParameter("NoTubo", noTubo, true);
                BsdReportParameter parameter37 = new BsdReportParameter("Foto1", Foto1, true);
                BsdReportParameter parameter38 = new BsdReportParameter("Foto2", Foto2, true);
                BsdReportParameter parameter39 = new BsdReportParameter("Foto3", Foto3, true);

                IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
                ds.Add(rds);
                ds.Add(rds2);
                ds.Add(rds3);
                ds.Add(rds4);
                ds.Add(rds5);
                ds.Add(rds6);
                ds.Add(rds7);
                ds.Add(rds8);
                ds.Add(rds9);
                ds.Add(rds10);

                BsdReport report = new BsdReport("Reporte de Caracteristicas", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
                report.Parameters.Add(parameter1);
                report.Parameters.Add(parameter2);
                report.Parameters.Add(parameter3);
                report.Parameters.Add(parameter4);
                report.Parameters.Add(parameter5);
                report.Parameters.Add(parameter6);
                report.Parameters.Add(parameter7);
                report.Parameters.Add(parameter8);
                report.Parameters.Add(parameter9);
                report.Parameters.Add(parameter10);
                report.Parameters.Add(parameter11);
                report.Parameters.Add(parameter12);
                report.Parameters.Add(parameter13);
                report.Parameters.Add(parameter14);
                report.Parameters.Add(parameter15);
                report.Parameters.Add(parameter16);
                report.Parameters.Add(parameter17);
                report.Parameters.Add(parameter18);
                report.Parameters.Add(parameter19);
                report.Parameters.Add(parameter20);
                report.Parameters.Add(parameter21);
                report.Parameters.Add(parameter22);
                report.Parameters.Add(parameter23);
                report.Parameters.Add(parameter24);
                report.Parameters.Add(parameter25);
                report.Parameters.Add(parameter26);
                report.Parameters.Add(parameter27);
                report.Parameters.Add(parameter28);
                report.Parameters.Add(parameter29);
                report.Parameters.Add(parameter30);
                report.Parameters.Add(parameter31);
                report.Parameters.Add(parameter32);
                report.Parameters.Add(parameter33);
                report.Parameters.Add(parameter34);
                report.Parameters.Add(parameter35);
                report.Parameters.Add(parameter36);
                report.Parameters.Add(parameter37);
                report.Parameters.Add(parameter38);
                report.Parameters.Add(parameter39);

                BsdReportResult result = ReportViewerService.CreateReport(report);

                //FileStream fs = new FileStream(@"c:\Reportes\" + report.Name + "." + result.FileType, FileMode.OpenOrCreate);
                //fs.Write(result.Content, 0, result.Content.Length);
                //fs.Close();

                return File(result.Content, result.MimeType);
            }
            else
            {
                return View(GetModel(new Lote()));
            }
        }
        public ActionResult GenerarRepo(Resultado resultado)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteDimensional.rdlc");
            decimal InteriorTubo = 0, ExteriorTubo = 0, ExteriorEspiga = 0, InteriorCampana = 0, ExteriorCampana = 0, UtilTubo = 0, Campana = 0;
            List<ResultadoDetalle> listParedInt = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listDiamExt = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listMiniEspiga = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listIntCampana = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listExtCampana = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listUtilTubo = new List<ResultadoDetalle>();
            List<ResultadoDetalle> listLongCamp = new List<ResultadoDetalle>();
            List<Norma> listNorma = new List<Norma>();
            List<MedidaDiametro> listMD = new List<MedidaDiametro>();

            //Resultado
            var resultQRY = ResultadoService.ReadResultado().Where(x => x.ProductoId == resultado.ProductoId && x.FechaPrueba == resultado.FechaPrueba).ToList();

            if (resultQRY.Count > 0)
            {
                for (int i = 0; i < resultQRY.Count - 1; i++)
                {
                    if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                    {
                        listNorma.Add(resultQRY[i].Norma);
                        if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-021-CNCP")
                        {
                            if (resultQRY[i].Ensayo.Nombre == "Pared Interior")
                            {
                                var resultParedInterior = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listParedInt = resultParedInterior.ToList();

                                for (int j = 0; j <= 14; j++)
                                {
                                    if (listParedInt.Count != 14)
                                    {
                                        ResultadoDetalle r = new ResultadoDetalle();
                                        listParedInt.Add(r);
                                    }
                                }
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Diametro Exterior")
                            {
                                var resultDiamExterior = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listDiamExt = resultDiamExterior.ToList();
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Diametro exterior de espiga o mini espiga")
                            {
                                var resultMiniEspiga = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listMiniEspiga = resultMiniEspiga.ToList();
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Diametro Interior de campana")
                            {
                                var resultIntCampana = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listIntCampana = resultIntCampana.ToList();
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Diametro Exterior Campana")
                            {
                                var resultExtCampana = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listExtCampana = resultExtCampana.ToList();
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Longitud Util Tubo")
                            {
                                var resultUtilTubo = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listUtilTubo = resultUtilTubo.ToList();
                            }

                            if (resultQRY[i].Ensayo.Nombre == "Longitud Campana")
                            {
                                var resultLongCampana = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id);
                                listLongCamp = resultLongCampana.ToList();
                            }

                        }
                    }
                    //if (resultQRY[i].Ensayo.Nombre == "Diametro Interior")
                    //{
                    //    InteriorTubo = resultQRY[i].ResultadoValor;
                    //}

                    //if (resultQRY[i].Ensayo.Nombre == "Diametro exterior de espiga o mini espiga")
                    //{
                    //    ExteriorEspiga = resultQRY[i].ResultadoValor;
                    //    ExteriorTubo = resultQRY[i].ResultadoValor;
                    //}

                    //if (resultQRY[i].Ensayo.Nombre == "Diametro Interior de campana")
                    //{
                    //    InteriorCampana = resultQRY[i].ResultadoValor;
                    //}

                    //if (resultQRY[i].Ensayo.Nombre == "Longitud de ceja de campana")
                    //{
                    //    Campana = resultQRY[i].ResultadoValor;
                    //}

                    //if (resultQRY[i].Ensayo.Nombre == "Longitud utilizable de espiga")
                    //{
                    //    UtilTubo = resultQRY[i].ResultadoValor;
                    //}

                    //if (resultQRY[i].Ensayo.Nombre == "Espesor de Flare de campana")
                    //{
                    //    ExteriorCampana = resultQRY[i].ResultadoValor;
                    //}
                }

                //Lote

                var resultLote = resultQRY[0].Lote;
                List<Lote> listLote = new List<Lote>();
                listLote.Add(resultLote);
                //ResultadoDetalle
                var resultDetalle = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
                //Producto
                var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
                var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
                var resultTurno = resultLote.Turno;
                List<Turno> listTurno = new List<Turno>();
                listTurno.Add(resultTurno);

                BsdReportDataSource rds = new BsdReportDataSource("DsDimensional", resultQRY);
                BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
                BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle);
                BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
                BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
                BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
                BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
                BsdReportDataSource rds8 = new BsdReportDataSource("DsParedInterior", listParedInt);
                BsdReportDataSource rds9 = new BsdReportDataSource("DsParedExterior", listDiamExt);
                BsdReportDataSource rds10 = new BsdReportDataSource("DsMiniEspiga", listMiniEspiga);
                BsdReportDataSource rds11 = new BsdReportDataSource("DsIntCampana", listIntCampana);
                BsdReportDataSource rds12 = new BsdReportDataSource("DsExtCampana", listExtCampana);
                BsdReportDataSource rds13 = new BsdReportDataSource("DsUtilTubo", listUtilTubo);
                BsdReportDataSource rds14 = new BsdReportDataSource("DsCampana", listLongCamp);

                BsdReportParameter parameter = new BsdReportParameter("InteriorTubo", InteriorTubo.ToString(), true);
                BsdReportParameter parameter2 = new BsdReportParameter("ExteriorTubo", ExteriorTubo.ToString(), true);
                BsdReportParameter parameter3 = new BsdReportParameter("ExtMiniEspiga", ExteriorEspiga.ToString(), true);
                BsdReportParameter parameter4 = new BsdReportParameter("IntCampana", InteriorCampana.ToString(), true);
                BsdReportParameter parameter5 = new BsdReportParameter("ExtCampana", ExteriorCampana.ToString(), true);
                BsdReportParameter parameter6 = new BsdReportParameter("UtilTubo", UtilTubo.ToString(), true);
                BsdReportParameter parameter7 = new BsdReportParameter("Campana", Campana.ToString(), true);

                IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
                ds.Add(rds);
                ds.Add(rds2);
                ds.Add(rds3);
                ds.Add(rds4);
                ds.Add(rds5);
                ds.Add(rds6);
                ds.Add(rds7);
                ds.Add(rds8);
                ds.Add(rds9);
                ds.Add(rds10);
                ds.Add(rds11);
                ds.Add(rds12);
                ds.Add(rds13);
                ds.Add(rds14);

                BsdReport report = new BsdReport("Reporte Dimensional", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
                report.Parameters.Add(parameter);
                report.Parameters.Add(parameter2);
                report.Parameters.Add(parameter3);
                report.Parameters.Add(parameter4);
                report.Parameters.Add(parameter5);
                report.Parameters.Add(parameter6);
                report.Parameters.Add(parameter7);
                BsdReportResult result = ReportViewerService.CreateReport(report);

                FileStream fs = new FileStream(@"c:\Reportes\" + report.Name + "." + result.FileType, FileMode.OpenOrCreate);
                fs.Write(result.Content, 0, result.Content.Length);
                fs.Close();

                return File(result.Content, result.MimeType);
            }
            else
            {
                return View(GetModel(new Resultado()));
            }
        }
        public ActionResult GenerarRepo(Resultado resultado)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteRigidez.rdlc");

            string DiamIniMedido = "", DiamIniCorreccion = "", DiamIniCorregido = "";
            string DiamIniMedido2 = "", DiamIniCorreccion2 = "", DiamIniCorregido2 = "";
            string DiamIniMedido3 = "", DiamIniCorreccion3 = "", DiamIniCorregido3 = "";
            string DiamIniMedido4 = "", DiamIniCorreccion4 = "", DiamIniCorregido4 = "";
            string LongMedido = "", LongCorreccion = "", LongCorregido = "";
            string LongMedido2 = "", LongCorreccion2 = "", LongCorregido2 = "";
            string LongMedido3 = "", LongCorreccion3 = "", LongCorregido3 = "";
            string LongMedido4 = "", LongCorreccion4 = "", LongCorregido4 = "";
            string DiamFinMedido = "", DiamFinCorreccion = "", DiamFinCorregido = "";
            string DiamFinMedido2 = "", DiamFinCorreccion2 = "", DiamFinCorregido2 = "";
            string DiamFinMedido3 = "", DiamFinCorreccion3 = "", DiamFinCorregido3 = "";
            string DiamFinMedido4 = "", DiamFinCorreccion4 = "", DiamFinCorregido4 = "";
            string FuerzaMedido = "", FuerzaCorreccion = "", FuerzaCorregido = "";
            string FuerzaMedido2 = "", FuerzaCorreccion2 = "", FuerzaCorregido2 = "";
            string FuerzaMedido3 = "", FuerzaCorreccion3 = "", FuerzaCorregido3 = "";
            string FuerzaMedido4 = "", FuerzaCorreccion4 = "", FuerzaCorregido4 = "";
            string AyMedido = "", AyCorreccion = "", AyCorregido = "";
            string AyMedido2 = "", AyCorreccion2 = "", AyCorregido2 = "";
            string AyMedido3 = "", AyCorreccion3 = "", AyCorregido3 = "";
            string AyMedido4 = "", AyCorreccion4 = "", AyCorregido4 = "";
            string RigidezMedido = "", RigidezCorrec = "", RigidezCorregido = "";
            string RigidezMedido2 = "", RigidezCorrec2 = "", RigidezCorregido2 = "";
            string RigidezMedido3 = "", RigidezCorrec3 = "", RigidezCorregido3 = "";
            string RigidezMedido4 = "", RigidezCorrec4 = "", RigidezCorregido4 = "";
            string Temperatura = "", Especimen = "", Resultado = "", Humedad = "", Velocidad = "";
            string NoTubo = "";
            string Resultado1 = "", Resultado2 = "", Resultado3 = "", Resultado4 = "";

            //Resultado
            var resultQRY = ResultadoService.ReadResultado().Where(x => x.ProductoId == resultado.ProductoId && x.FechaPrueba == resultado.FechaPrueba).ToList();

            for (int i = 0; i < resultQRY.Count; i++)
            {
                if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-208-CNCP")
                    {
                        var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                        for (int j = 0; j < resultDetalle.Count; j++)
                        {
                            if (resultDetalle[j].MuestraNum == 1)
                            {
                                Resultado1 = resultDetalle[j].ResultadoDetalleValor.ToString();
                            }
                            else if (resultDetalle[j].MuestraNum == 2)
                            {
                                Resultado2 = resultDetalle[j].ResultadoDetalleValor.ToString();
                            }
                            else if (resultDetalle[j].MuestraNum == 3)
                            {
                                Resultado3 = resultDetalle[j].ResultadoDetalleValor.ToString();
                            }
                            else if (resultDetalle[j].MuestraNum == 4)
                            {
                                Resultado4 = resultDetalle[j].ResultadoDetalleValor.ToString();
                            }
                            var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                            for (int ad = 0; ad < atributoDetalle.Count; ad++)
                            {
                                switch (atributoDetalle[ad].AtributoId)
                                {
                                    case 54:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamIniMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamIniMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamIniMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamIniMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 55:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamIniCorreccion = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamIniCorreccion2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamIniCorreccion3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamIniCorreccion4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 56:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamIniCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamIniCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamIniCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamIniCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 57:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            LongMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            LongMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            LongMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            LongMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 58:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            LongCorreccion   = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            LongCorreccion2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            LongCorreccion3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            LongCorreccion4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 59:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            LongCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            LongCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            LongCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            LongCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 60:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamFinMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamFinMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamFinMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamFinMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 61:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamFinCorreccion = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamFinCorreccion2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamFinCorreccion3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamFinCorreccion4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 62:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            DiamFinCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            DiamFinCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            DiamFinCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            DiamFinCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 63:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            FuerzaMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            FuerzaMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            FuerzaMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            FuerzaMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 64:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            FuerzaCorreccion = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            FuerzaCorreccion2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            FuerzaCorreccion3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            FuerzaCorreccion4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 65:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            FuerzaCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            FuerzaCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            FuerzaCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            FuerzaCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 66:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            AyMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            AyMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            AyMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            AyMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 67:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            AyCorreccion = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            AyCorreccion2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            AyCorreccion3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            AyCorreccion4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 68:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            AyCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            AyCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            AyCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            AyCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 69:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            RigidezMedido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            RigidezMedido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            RigidezMedido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            RigidezMedido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 70:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            RigidezCorrec = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            RigidezCorrec2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            RigidezCorrec3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            RigidezCorrec4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 71:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            RigidezCorregido = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 2)
                                        {
                                            RigidezCorregido2 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 3)
                                        {
                                            RigidezCorregido3 = atributoDetalle[ad].Valor;
                                        }
                                        if (resultDetalle[j].MuestraNum == 4)
                                        {
                                            RigidezCorregido4 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 72:
                                        Temperatura = atributoDetalle[ad].Valor;
                                        break;
                                    case 73:
                                        Especimen = atributoDetalle[ad].Valor;
                                        break;
                                    case 74:
                                        Resultado = atributoDetalle[ad].Valor;
                                        break;
                                    case 75:
                                        Humedad = atributoDetalle[ad].Valor;
                                        break;
                                    case 76:
                                        Velocidad = atributoDetalle[ad].Valor;
                                        break;
                                    case 157:
                                        NoTubo = atributoDetalle[ad].Valor;
                                        break;
                                }
                            }
                        }
                    }
                }
            }

            //Lote
            var resultLote = resultQRY[0].Lote;
            List<Lote> listLote = new List<Lote>();
            listLote.Add(resultLote);
            //ResultadoDetalle
            var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
            //Producto
            var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
            var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
            var resultTurno = resultLote.Turno;
            List<Turno> listTurno = new List<Turno>();
            listTurno.Add(resultTurno);
            var resultNorma = resultQRY[0].Norma;
            List<Norma> listNorma = new List<Norma>();
            listNorma.Add(resultNorma);
            var resultDiametro = resultProducto[0].MedidaDiametro;
            List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
            listDiametro.Add(resultDiametro);
            List<Resultado> ListVacio = new List<Resultado>();
            List<Resultado> ListPresion = new List<Resultado>();
            List<Equipo> listEquipo = new List<Equipo>();

            BsdReportDataSource rds = new BsdReportDataSource("DsRigidez", resultQRY);
            BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
            BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
            BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
            BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
            BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
            BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
            BsdReportDataSource rds8 = new BsdReportDataSource("DsMDiametro", listDiametro);

            BsdReportParameter parameter1 = new BsdReportParameter("DiametroInicialMedido", DiamIniMedido, true);
            BsdReportParameter parameter2 = new BsdReportParameter("DiametroInicialCorreccion", DiamIniCorreccion, true);
            BsdReportParameter parameter3 = new BsdReportParameter("DiametroInicialCorregido", DiamIniCorregido, true);
            BsdReportParameter parameter4 = new BsdReportParameter("LongitudMedido", LongMedido, true);
            BsdReportParameter parameter5 = new BsdReportParameter("LongitudCorreccion", LongCorreccion, true);
            BsdReportParameter parameter6 = new BsdReportParameter("LongitudCorregido", LongCorregido, true);
            BsdReportParameter parameter7 = new BsdReportParameter("DiametroFinalMedido", DiamFinMedido, true);
            BsdReportParameter parameter8 = new BsdReportParameter("DiametroFinalCorreccion", DiamFinCorreccion, true);
            BsdReportParameter parameter9 = new BsdReportParameter("DiametroFinalCorregido", DiamFinCorregido, true);
            BsdReportParameter parameter10 = new BsdReportParameter("FuerzaMedido", FuerzaMedido, true);
            BsdReportParameter parameter11 = new BsdReportParameter("FuerzaCorreccion", FuerzaCorreccion, true);
            BsdReportParameter parameter12 = new BsdReportParameter("FuerzaCorregido", FuerzaCorregido, true);
            BsdReportParameter parameter13 = new BsdReportParameter("AyMedido", AyMedido, true);
            BsdReportParameter parameter14 = new BsdReportParameter("AyCorreccion", AyCorreccion, true);
            BsdReportParameter parameter15 = new BsdReportParameter("AyCorregido", AyCorregido, true);
            BsdReportParameter parameter16 = new BsdReportParameter("RigidezMedido", RigidezMedido, true);
            BsdReportParameter parameter17 = new BsdReportParameter("RigidezCorreccion", RigidezCorrec, true);
            BsdReportParameter parameter18 = new BsdReportParameter("RigidezCorregido", RigidezCorregido, true);
            BsdReportParameter parameter19 = new BsdReportParameter("TemperaturaRigidez", Temperatura, true);
            BsdReportParameter parameter20 = new BsdReportParameter("EspecimenAdhesion", Especimen, true);
            BsdReportParameter parameter21 = new BsdReportParameter("ResultadoAdhesion", Resultado, true);
            BsdReportParameter parameter22 = new BsdReportParameter("HumedadRigidez", Humedad, true);
            BsdReportParameter parameter23 = new BsdReportParameter("VelocidadEnsayoRigidez", Velocidad, true);
            BsdReportParameter parameter24 = new BsdReportParameter("DiametroInicialMedido2", DiamFinMedido2, true);
            BsdReportParameter parameter25 = new BsdReportParameter("DiametroInicialMedido3", DiamFinMedido3, true);
            BsdReportParameter parameter26 = new BsdReportParameter("DiametroInicialMedido4", DiamFinMedido4, true);
            BsdReportParameter parameter27 = new BsdReportParameter("DiametroInicialCorreccion2", DiamIniCorreccion2, true);
            BsdReportParameter parameter28 = new BsdReportParameter("DiametroInicialCorreccion3", DiamIniCorreccion3, true);
            BsdReportParameter parameter29 = new BsdReportParameter("DiametroInicialCorreccion4", DiamIniCorreccion4, true);
            BsdReportParameter parameter30 = new BsdReportParameter("DiametroInicialCorregido2", DiamIniCorregido2, true);
            BsdReportParameter parameter31 = new BsdReportParameter("DiametroInicialCorregido3", DiamIniCorregido3, true);
            BsdReportParameter parameter32 = new BsdReportParameter("DiametroInicialCorregido4", DiamIniCorregido4, true);
            BsdReportParameter parameter33 = new BsdReportParameter("FuerzaMedido2", FuerzaMedido2, true);
            BsdReportParameter parameter34 = new BsdReportParameter("FuerzaMedido3", FuerzaMedido3, true);
            BsdReportParameter parameter35 = new BsdReportParameter("FuerzaMedido4", FuerzaMedido4, true);
            BsdReportParameter parameter36 = new BsdReportParameter("FuerzaCorreccion2", FuerzaCorreccion2, true);
            BsdReportParameter parameter37 = new BsdReportParameter("FuerzaCorreccion3", FuerzaCorreccion3, true);
            BsdReportParameter parameter38 = new BsdReportParameter("FuerzaCorreccion4", FuerzaCorreccion4, true);
            BsdReportParameter parameter39 = new BsdReportParameter("FuerzaCorregido2", FuerzaCorregido2, true);
            BsdReportParameter parameter40 = new BsdReportParameter("FuerzaCorregido3", FuerzaCorregido3, true);
            BsdReportParameter parameter41 = new BsdReportParameter("FuerzaCorregido4", FuerzaCorregido4, true);
            BsdReportParameter parameter42 = new BsdReportParameter("AyMedido2", AyMedido2, true);
            BsdReportParameter parameter43 = new BsdReportParameter("AyMedido3", AyMedido3, true);
            BsdReportParameter parameter44 = new BsdReportParameter("AyMedido4", AyMedido4, true);
            BsdReportParameter parameter45 = new BsdReportParameter("AyCorreccion2", AyCorreccion2, true);
            BsdReportParameter parameter46 = new BsdReportParameter("AyCorreccion3", AyCorreccion3, true);
            BsdReportParameter parameter47 = new BsdReportParameter("AyCorreccion4", AyCorreccion4, true);
            BsdReportParameter parameter48 = new BsdReportParameter("AyCorregido2", AyCorregido2, true);
            BsdReportParameter parameter49 = new BsdReportParameter("AyCorregido3", AyCorregido3, true);
            BsdReportParameter parameter50 = new BsdReportParameter("AyCorregido4", AyCorregido4, true);
            BsdReportParameter parameter51 = new BsdReportParameter("RigidezMedido2", RigidezMedido2, true);
            BsdReportParameter parameter52 = new BsdReportParameter("RigidezMedido3", RigidezMedido3, true);
            BsdReportParameter parameter53 = new BsdReportParameter("RigidezMedido4", RigidezMedido4, true);
            BsdReportParameter parameter54 = new BsdReportParameter("RigidezCorreccion2", RigidezCorrec2, true);
            BsdReportParameter parameter55 = new BsdReportParameter("RigidezCorreccion3", RigidezCorrec3, true);
            BsdReportParameter parameter56 = new BsdReportParameter("RigidezCorreccion4", RigidezCorrec4, true);
            BsdReportParameter parameter57 = new BsdReportParameter("RigidezCorregido2", RigidezCorregido2, true);
            BsdReportParameter parameter58 = new BsdReportParameter("RigidezCorregido3", RigidezCorregido3, true);
            BsdReportParameter parameter59 = new BsdReportParameter("RigidezCorregido4", RigidezCorregido4, true);
            BsdReportParameter parameter60 = new BsdReportParameter("LongitudMedido2", LongMedido2, true);
            BsdReportParameter parameter61 = new BsdReportParameter("LongitudMedido3", LongMedido3, true);
            BsdReportParameter parameter62 = new BsdReportParameter("LongitudMedido4", LongMedido4, true);
            BsdReportParameter parameter63 = new BsdReportParameter("LongitudCorreccion2", LongCorreccion2, true);
            BsdReportParameter parameter64 = new BsdReportParameter("LongitudCorreccion3", LongCorreccion3, true);
            BsdReportParameter parameter65 = new BsdReportParameter("LongitudCorreccion4", LongCorreccion4, true);
            BsdReportParameter parameter66 = new BsdReportParameter("LongitudCorregido2", LongCorregido2, true);
            BsdReportParameter parameter67 = new BsdReportParameter("LongitudCorregido3", LongCorregido3, true);
            BsdReportParameter parameter68 = new BsdReportParameter("LongitudCorregido4", LongCorregido4, true);
            BsdReportParameter parameter69 = new BsdReportParameter("DiametroFinalMedido2", DiamFinMedido2, true);
            BsdReportParameter parameter70 = new BsdReportParameter("DiametroFinalMedido3", DiamFinMedido3, true);
            BsdReportParameter parameter71 = new BsdReportParameter("DiametroFinalMedido4", DiamFinMedido4, true);
            BsdReportParameter parameter72 = new BsdReportParameter("DiametroFinalCorreccion2", DiamFinCorreccion2, true);
            BsdReportParameter parameter73 = new BsdReportParameter("DiametroFinalCorreccion3", DiamFinCorreccion3, true);
            BsdReportParameter parameter74 = new BsdReportParameter("DiametroFinalCorreccion4", DiamFinCorreccion4, true);
            BsdReportParameter parameter75 = new BsdReportParameter("DiametroFinalCorregido2", DiamFinCorregido2, true);
            BsdReportParameter parameter76 = new BsdReportParameter("DiametroFinalCorregido3", DiamFinCorregido3, true);
            BsdReportParameter parameter77 = new BsdReportParameter("DiametroFinalCorregido4", DiamFinCorregido4, true);
            BsdReportParameter parameter78 = new BsdReportParameter("NoTubo", NoTubo, true);
            BsdReportParameter parameter79 = new BsdReportParameter("Resultado1", Resultado1, true);
            BsdReportParameter parameter80 = new BsdReportParameter("Resultado2", Resultado2, true);
            BsdReportParameter parameter81 = new BsdReportParameter("Resultado3", Resultado3, true);
            BsdReportParameter parameter82 = new BsdReportParameter("Resultado4", Resultado4, true);

            IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
            ds.Add(rds);
            ds.Add(rds2);
            ds.Add(rds3);
            ds.Add(rds4);
            ds.Add(rds5);
            ds.Add(rds6);
            ds.Add(rds7);
            ds.Add(rds8);

            BsdReport report = new BsdReport("Reporte de Rigidez", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
            report.Parameters.Add(parameter1);
            report.Parameters.Add(parameter2);
            report.Parameters.Add(parameter3);
            report.Parameters.Add(parameter4);
            report.Parameters.Add(parameter5);
            report.Parameters.Add(parameter6);
            report.Parameters.Add(parameter7);
            report.Parameters.Add(parameter8);
            report.Parameters.Add(parameter9);
            report.Parameters.Add(parameter10);
            report.Parameters.Add(parameter11);
            report.Parameters.Add(parameter12);
            report.Parameters.Add(parameter13);
            report.Parameters.Add(parameter14);
            report.Parameters.Add(parameter15);
            report.Parameters.Add(parameter16);
            report.Parameters.Add(parameter17);
            report.Parameters.Add(parameter18);
            report.Parameters.Add(parameter19);
            report.Parameters.Add(parameter20);
            report.Parameters.Add(parameter21);
            report.Parameters.Add(parameter22);
            report.Parameters.Add(parameter23);
            report.Parameters.Add(parameter24);
            report.Parameters.Add(parameter25);
            report.Parameters.Add(parameter26);
            report.Parameters.Add(parameter27);
            report.Parameters.Add(parameter28);
            report.Parameters.Add(parameter29);
            report.Parameters.Add(parameter30);
            report.Parameters.Add(parameter31);
            report.Parameters.Add(parameter32);
            report.Parameters.Add(parameter33);
            report.Parameters.Add(parameter34);
            report.Parameters.Add(parameter35);
            report.Parameters.Add(parameter36);
            report.Parameters.Add(parameter37);
            report.Parameters.Add(parameter38);
            report.Parameters.Add(parameter39);
            report.Parameters.Add(parameter40);
            report.Parameters.Add(parameter41);
            report.Parameters.Add(parameter42);
            report.Parameters.Add(parameter43);
            report.Parameters.Add(parameter44);
            report.Parameters.Add(parameter45);
            report.Parameters.Add(parameter46);
            report.Parameters.Add(parameter47);
            report.Parameters.Add(parameter48);
            report.Parameters.Add(parameter49);
            report.Parameters.Add(parameter50);
            report.Parameters.Add(parameter51);
            report.Parameters.Add(parameter52);
            report.Parameters.Add(parameter53);
            report.Parameters.Add(parameter54);
            report.Parameters.Add(parameter55);
            report.Parameters.Add(parameter56);
            report.Parameters.Add(parameter57);
            report.Parameters.Add(parameter58);
            report.Parameters.Add(parameter59);
            report.Parameters.Add(parameter60);
            report.Parameters.Add(parameter61);
            report.Parameters.Add(parameter62);
            report.Parameters.Add(parameter63);
            report.Parameters.Add(parameter64);
            report.Parameters.Add(parameter65);
            report.Parameters.Add(parameter66);
            report.Parameters.Add(parameter67);
            report.Parameters.Add(parameter68);
            report.Parameters.Add(parameter69);
            report.Parameters.Add(parameter70);
            report.Parameters.Add(parameter71);
            report.Parameters.Add(parameter72);
            report.Parameters.Add(parameter73);
            report.Parameters.Add(parameter74);
            report.Parameters.Add(parameter75);
            report.Parameters.Add(parameter76);
            report.Parameters.Add(parameter77);
            report.Parameters.Add(parameter78);
            report.Parameters.Add(parameter79);
            report.Parameters.Add(parameter80);
            report.Parameters.Add(parameter81);
            report.Parameters.Add(parameter82);

            BsdReportResult result = ReportViewerService.CreateReport(report);

            return File(result.Content, result.MimeType);
        }
        public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteAplastamiento.rdlc");

            string resultado1 = "", resultado2 = "", resultado3 = "", resultado4 = "";
            string longitud0 = "", longitud45 = "", longitud90 = "", longitud135 = "";
            string diametroInt0 = "", diametroInt45 = "", diametroInt90 = "", diametroInt135 = "";
            string aplastamiento0 = "", aplastamiento45 = "", aplastamiento90 = "", aplastamiento135 = "";
            string ay0 = "", ay45 = "", ay90 = "", ay135 = "";
            string TiempoEnsayo0 = "", tiempoEnsayo45 = "", tiempoEnsayo90 = "", tiempoEnsayo145 = "";
            string velocidad = "", temperatura = "", noTubo = "";

            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            for (int i = 0; i < resultQRY.Count; i++)
            {
                if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-014-CNCP")
                    {
                        var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                        for (int j = 0; j < resultDetalle.Count; j++)
                        {
                            switch (resultDetalle[j].MuestraNum)
                            {
                                case 1:
                                    resultado1 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                    break;
                                case 2:
                                    resultado2 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                    break;
                                case 3:
                                    resultado3 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                    break;
                                case 4:
                                    resultado4 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                    break;
                            }
                            var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                            for (int ad = 0; ad < atributoDetalle.Count; ad++)
                            {
                                switch (atributoDetalle[ad].AtributoId)
                                {
                                    case 13:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            velocidad = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 14:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            temperatura = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 15:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            if (longitud0 == "")
                                            {
                                                longitud0 = atributoDetalle[ad].Valor;
                                            }
                                            else if (longitud45 == "")
                                            {
                                                longitud45 = atributoDetalle[ad].Valor;
                                            }
                                            else if (longitud90 == "")
                                            {
                                                longitud90 = atributoDetalle[ad].Valor;
                                            }
                                            else if (longitud135 == "")
                                            {
                                                longitud135 = atributoDetalle[ad].Valor;
                                            }

                                            resultado1 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        }
                                        break;
                                    case 16:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            if (diametroInt0 == "")
                                            {
                                                diametroInt0 = atributoDetalle[ad].Valor;
                                            }
                                            else if (diametroInt45 == "")
                                            {
                                                diametroInt45 = atributoDetalle[ad].Valor;
                                            }
                                            else if (diametroInt90 == "")
                                            {
                                                diametroInt90 = atributoDetalle[ad].Valor;
                                            }
                                            else if (diametroInt135 == "")
                                            {
                                                diametroInt135 = atributoDetalle[ad].Valor;
                                            }
                                        }
                                        break;
                                    case 17:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            if (TiempoEnsayo0 == "")
                                            {
                                                TiempoEnsayo0 = atributoDetalle[ad].Valor;
                                            }
                                            else if (tiempoEnsayo45 == "")
                                            {
                                                tiempoEnsayo45 = atributoDetalle[ad].Valor;
                                            }
                                            else if (tiempoEnsayo90 == "")
                                            {
                                                tiempoEnsayo90 = atributoDetalle[ad].Valor;
                                            }
                                            else if (tiempoEnsayo145 == "")
                                            {
                                                tiempoEnsayo145 = atributoDetalle[ad].Valor;
                                            }

                                        }
                                        break;
                                    case 18:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            if (aplastamiento0 == "")
                                            {
                                                aplastamiento0 = atributoDetalle[ad].Valor;
                                            }
                                            else if (aplastamiento45 == "")
                                            {
                                                aplastamiento45 = atributoDetalle[ad].Valor;
                                            }
                                            else if (aplastamiento90 == "")
                                            {
                                                aplastamiento90 = atributoDetalle[ad].Valor;
                                            }
                                            else if (aplastamiento135 == "")
                                            {
                                                aplastamiento135 = atributoDetalle[ad].Valor;
                                            }
                                        }
                                        break;
                                    case 106:
                                        if (resultDetalle[j].MuestraNum == 1)
                                        {
                                            if (ay0 == "")
                                            {
                                                ay0 = atributoDetalle[ad].Valor;
                                            }
                                            else if (ay45 == "")
                                            {
                                                ay45 = atributoDetalle[ad].Valor;
                                            }
                                            else if (ay90 == "")
                                            {
                                                ay90 = atributoDetalle[ad].Valor;
                                            }
                                            else if (ay135 == "")
                                            {
                                                ay135 = atributoDetalle[ad].Valor;
                                            }
                                        }
                                        break;
                                }
                            }

                        }
                    }
                }

            }

            //Lote
            var resultLote = resultQRY[0].Lote;
            List<Lote> listLote = new List<Lote>();
            listLote.Add(resultLote);
            //ResultadoDetalle
            var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
            //Producto
            var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
            var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
            var resultTurno = resultLote.Turno;
            List<Turno> listTurno = new List<Turno>();
            listTurno.Add(resultTurno);
            var resultNorma = resultQRY[0].Norma;
            List<Norma> listNorma = new List<Norma>();
            listNorma.Add(resultNorma);
            var resultDiametro = resultProducto[0].MedidaDiametro;
            List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
            listDiametro.Add(resultDiametro);
            List<Resultado> ListVacio = new List<Resultado>();
            List<Resultado> ListPresion = new List<Resultado>();
            List<Equipo> listEquipo = new List<Equipo>();

            BsdReportDataSource rds = new BsdReportDataSource("DsAplastamiento", resultQRY);
            BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
            BsdReportDataSource rds3 = new BsdReportDataSource("DsProducto", resultProducto);
            BsdReportDataSource rds4 = new BsdReportDataSource("DsTurno", listTurno);
            BsdReportDataSource rds5 = new BsdReportDataSource("DsEquipo", resultEquipo);
            BsdReportDataSource rds6 = new BsdReportDataSource("DsNorma", listNorma);
            BsdReportDataSource rds7 = new BsdReportDataSource("DsDiametro", listDiametro);

            BsdReportParameter parameter1 = new BsdReportParameter("Longitud0", longitud0, true);
            BsdReportParameter parameter2 = new BsdReportParameter("Longitud45", longitud45, true);
            BsdReportParameter parameter3 = new BsdReportParameter("Longitud90", longitud90, true);
            BsdReportParameter parameter4 = new BsdReportParameter("Longitud135", longitud135, true);
            BsdReportParameter parameter5 = new BsdReportParameter("Diametro0", diametroInt0, true);
            BsdReportParameter parameter6 = new BsdReportParameter("Diametro45", diametroInt45, true);
            BsdReportParameter parameter7 = new BsdReportParameter("Diametro90", diametroInt90, true);
            BsdReportParameter parameter8 = new BsdReportParameter("Diametro135", diametroInt135, true);
            BsdReportParameter parameter9 = new BsdReportParameter("Aplastamiento0", aplastamiento0, true);
            BsdReportParameter parameter10 = new BsdReportParameter("Aplastamiento45", aplastamiento45, true);
            BsdReportParameter parameter11 = new BsdReportParameter("Aplastamiento90", aplastamiento90, true);
            BsdReportParameter parameter12 = new BsdReportParameter("Aplastamiento135", aplastamiento135, true);
            BsdReportParameter parameter13 = new BsdReportParameter("Ay0", ay0, true);
            BsdReportParameter parameter14 = new BsdReportParameter("Ay45", ay45, true);
            BsdReportParameter parameter15 = new BsdReportParameter("Ay90", ay90, true);
            BsdReportParameter parameter16 = new BsdReportParameter("Ay135", ay135, true);
            BsdReportParameter parameter17 = new BsdReportParameter("Tiempo0", TiempoEnsayo0, true);
            BsdReportParameter parameter18 = new BsdReportParameter("Tiempo45", tiempoEnsayo45, true);
            BsdReportParameter parameter19 = new BsdReportParameter("Tiempo90", tiempoEnsayo90, true);
            BsdReportParameter parameter20 = new BsdReportParameter("Tiempo135", tiempoEnsayo145, true);
            BsdReportParameter parameter21 = new BsdReportParameter("Resultado0", resultado1, true);
            BsdReportParameter parameter22 = new BsdReportParameter("Resultado45", resultado2, true);
            BsdReportParameter parameter23 = new BsdReportParameter("Resultado90", resultado3, true);
            BsdReportParameter parameter24 = new BsdReportParameter("Resultado135", resultado4, true);
            BsdReportParameter parameter25 = new BsdReportParameter("Velocidad", velocidad, true);
            BsdReportParameter parameter26 = new BsdReportParameter("Temperatura", temperatura, true);
            BsdReportParameter parameter27 = new BsdReportParameter("NoTubo", noTubo, true);

            IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
            ds.Add(rds);
            ds.Add(rds2);
            ds.Add(rds3);
            ds.Add(rds4);
            ds.Add(rds5);
            ds.Add(rds6);
            ds.Add(rds7);

            BsdReport report = new BsdReport("Reporte de Aplastamiento", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
            report.Parameters.Add(parameter1);
            report.Parameters.Add(parameter2);
            report.Parameters.Add(parameter3);
            report.Parameters.Add(parameter4);
            report.Parameters.Add(parameter5);
            report.Parameters.Add(parameter6);
            report.Parameters.Add(parameter7);
            report.Parameters.Add(parameter8);
            report.Parameters.Add(parameter9);
            report.Parameters.Add(parameter10);
            report.Parameters.Add(parameter11);
            report.Parameters.Add(parameter12);
            report.Parameters.Add(parameter13);
            report.Parameters.Add(parameter14);
            report.Parameters.Add(parameter15);
            report.Parameters.Add(parameter16);
            report.Parameters.Add(parameter17);
            report.Parameters.Add(parameter18);
            report.Parameters.Add(parameter19);
            report.Parameters.Add(parameter20);
            report.Parameters.Add(parameter21);
            report.Parameters.Add(parameter22);
            report.Parameters.Add(parameter23);
            report.Parameters.Add(parameter24);
            report.Parameters.Add(parameter25);
            report.Parameters.Add(parameter26);
            report.Parameters.Add(parameter27);

            BsdReportResult result = ReportViewerService.CreateReport(report);

            return File(result.Content, result.MimeType);
        }
        public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteEspesores.rdlc");

            string InteriorA = "", InteriorAC = "", InteriorC = "", InteriorCB = "", InteriorB = "", InteriorBD = "", InteriorD = "", InteriorDA = "";
            string CoronaA = "", CoronaAC = "", CoronaC = "", CoronaCB = "", CoronaB = "", CoronaBD = "", CoronaD = "", CoronaDA = "";
            string LateralAA = "", LateralAAC = "", LateralAC = "", LateralACB = "", LateralAB = "", LateralABD = "", LateralAD = "", LateralADA = "";
            string LateralBA = "", LateralBAC = "", LateralBC = "", LateralBCB = "", LateralBB = "", LateralBBD = "", LateralBD = "", LateralBDA = "";
            string DobleA = "", DobleAC = "", DobleC = "", DobleCB = "", DobleB = "", DobleBD = "", DobleD = "", DobleDA = "";

            //Resultado
            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            for (int i = 0; i < resultQRY.Count; i++)
            {
                if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-021-CNCP")
                    {
                        if (resultQRY[i].EnsayoId == 1)
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        InteriorA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 2:
                                        InteriorAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 3:
                                        InteriorC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 4:
                                        InteriorCB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 5:
                                        InteriorB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 6:
                                        InteriorBD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 7:
                                        InteriorD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 8:
                                        InteriorDA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                }
                            }
                        }

                        if (resultQRY[i].EnsayoId == 6)
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        CoronaA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 2:
                                        CoronaAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 3:
                                        CoronaC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 4:
                                        CoronaCB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 5:
                                        CoronaB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 6:
                                        CoronaBD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 7:
                                        CoronaD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 8:
                                        CoronaDA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                }
                            }
                        }

                        if (resultQRY[i].EnsayoId == 7)
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        LateralAA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 2:
                                        LateralAAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 3:
                                        LateralAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 4:
                                        LateralACB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 5:
                                        LateralAB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 6:
                                        LateralABD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 7:
                                        LateralAD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 8:
                                        LateralADA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                }
                            }
                        }

                        if (resultQRY[i].EnsayoId == 8)
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        LateralBA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 2:
                                        LateralBAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 3:
                                        LateralBC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 4:
                                        LateralBCB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 5:
                                        LateralBB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 6:
                                        LateralBBD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 7:
                                        LateralBD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 8:
                                        LateralBDA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                }
                            }
                        }

                        if (resultQRY[i].EnsayoId == 9)
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        DobleA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 2:
                                        DobleAC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 3:
                                        DobleC = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 4:
                                        DobleCB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 5:
                                        DobleB = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 6:
                                        DobleBD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 7:
                                        DobleD = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                    case 8:
                                        DobleDA = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        break;
                                }
                            }
                        }

                        //for (int j = 0; j < resultDetalle.Count; j++)
                        //{
                        //    var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                        //    for (int ad = 0; ad < atributoDetalle.Count; ad++)
                        //    {
                        //        switch (atributoDetalle[ad].AtributoId)
                        //        {
                        //            case 107:
                        //                InteriorA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 108:
                        //                InteriorAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 109:
                        //                InteriorC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 110:
                        //                InteriorCB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 111:
                        //                InteriorB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 112:
                        //                InteriorBD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 113:
                        //                InteriorD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 114:
                        //                InteriorDA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 115:
                        //                CoronaA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 116:
                        //                CoronaAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 117:
                        //                CoronaC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 118:
                        //                CoronaCB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 119:
                        //                CoronaB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 120:
                        //                CoronaBD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 121:
                        //                CoronaD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 122:
                        //                CoronaDA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 123:
                        //                LateralAA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 124:
                        //                LateralAAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 125:
                        //                LateralAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 126:
                        //                LateralACB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 127:
                        //                LateralAB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 128:
                        //                LateralABD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 129:
                        //                LateralAD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 130:
                        //                LateralADA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 131:
                        //                LateralBA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 132:
                        //                LateralBAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 133:
                        //                LateralBC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 134:
                        //                LateralBCB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 135:
                        //                LateralBB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 136:
                        //                LateralBBD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 137:
                        //                LateralBD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 138:
                        //                LateralBDA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 139:
                        //                DobleA = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 140:
                        //                DobleAC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 141:
                        //                DobleC = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 142:
                        //                DobleCB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 143:
                        //                DobleB = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 144:
                        //                DobleBD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 145:
                        //                DobleD = atributoDetalle[ad].Valor;
                        //                break;
                        //            case 146:
                        //                DobleDA = atributoDetalle[ad].Valor;
                        //                break;
                        //        }
                        //    }
                        //}
                    }
                }
            }

            //Lote
            var resultLote = resultQRY[0].Lote;
            List<Lote> listLote = new List<Lote>();
            listLote.Add(resultLote);
            //ResultadoDetalle
            var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
            //Producto
            var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
            var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
            var resultTurno = resultLote.Turno;
            List<Turno> listTurno = new List<Turno>();
            listTurno.Add(resultTurno);
            var resultNorma = resultQRY[0].Norma;
            List<Norma> listNorma = new List<Norma>();
            listNorma.Add(resultNorma);
            var resultDiametro = resultProducto[0].MedidaDiametro;
            List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
            listDiametro.Add(resultDiametro);
            List<Resultado> ListVacio = new List<Resultado>();
            List<Resultado> ListPresion = new List<Resultado>();
            List<Equipo> listEquipo = new List<Equipo>();

            BsdReportDataSource rds = new BsdReportDataSource("DsEspesores", resultQRY);
            BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
            BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
            BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
            BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
            BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
            BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
            BsdReportDataSource rds8 = new BsdReportDataSource("DsMDiametro", listDiametro);

            BsdReportParameter parameter1 = new BsdReportParameter("InteriorA", InteriorA, true);
            BsdReportParameter parameter2 = new BsdReportParameter("InteriorAC", InteriorAC, true);
            BsdReportParameter parameter3 = new BsdReportParameter("InteriorC", InteriorC, true);
            BsdReportParameter parameter4 = new BsdReportParameter("InteriorCB", InteriorCB, true);
            BsdReportParameter parameter5 = new BsdReportParameter("InteriorB", InteriorB, true);
            BsdReportParameter parameter6 = new BsdReportParameter("InteriorBD", InteriorBD, true);
            BsdReportParameter parameter7 = new BsdReportParameter("InteriorD", InteriorD, true);
            BsdReportParameter parameter8 = new BsdReportParameter("InteriorDA", InteriorDA, true);
            BsdReportParameter parameter9 = new BsdReportParameter("CoronaA", CoronaA, true);
            BsdReportParameter parameter10 = new BsdReportParameter("CoronaAC", CoronaAC, true);
            BsdReportParameter parameter11 = new BsdReportParameter("CoronaC", CoronaC, true);
            BsdReportParameter parameter12 = new BsdReportParameter("CoronaCB", CoronaCB, true);
            BsdReportParameter parameter13 = new BsdReportParameter("CoronaB", CoronaB, true);
            BsdReportParameter parameter14 = new BsdReportParameter("CoronaBD", CoronaBD, true);
            BsdReportParameter parameter15 = new BsdReportParameter("CoronaD", CoronaD, true);
            BsdReportParameter parameter16 = new BsdReportParameter("CoronaDA", CoronaDA, true);
            BsdReportParameter parameter17 = new BsdReportParameter("LateralAA", LateralAA, true);
            BsdReportParameter parameter18 = new BsdReportParameter("LateralAAC", LateralAAC, true);
            BsdReportParameter parameter19 = new BsdReportParameter("LateralAC", LateralAC, true);
            BsdReportParameter parameter20 = new BsdReportParameter("LateralACB", LateralACB, true);
            BsdReportParameter parameter21 = new BsdReportParameter("LateralAB", LateralAB, true);
            BsdReportParameter parameter22 = new BsdReportParameter("LateralABD", LateralABD, true);
            BsdReportParameter parameter23 = new BsdReportParameter("LateralAD", LateralAD, true);
            BsdReportParameter parameter24 = new BsdReportParameter("LateralADA", LateralADA, true);
            BsdReportParameter parameter25 = new BsdReportParameter("LateralBA", LateralBA, true);
            BsdReportParameter parameter26 = new BsdReportParameter("LateralBAC", LateralBAC, true);
            BsdReportParameter parameter27 = new BsdReportParameter("LateralBC", LateralBC, true);
            BsdReportParameter parameter28 = new BsdReportParameter("LateralBCB", LateralBCB, true);
            BsdReportParameter parameter29 = new BsdReportParameter("LateralBB", LateralBB, true);
            BsdReportParameter parameter30 = new BsdReportParameter("LateralBBD", LateralBBD, true);
            BsdReportParameter parameter31 = new BsdReportParameter("LateralBD", LateralBD, true);
            BsdReportParameter parameter32 = new BsdReportParameter("LateralBDA", LateralBDA, true);
            BsdReportParameter parameter33 = new BsdReportParameter("DobleA", DobleA, true);
            BsdReportParameter parameter34 = new BsdReportParameter("DobleAC", DobleAC, true);
            BsdReportParameter parameter35 = new BsdReportParameter("DobleC", DobleC, true);
            BsdReportParameter parameter36 = new BsdReportParameter("DobleCB", DobleCB, true);
            BsdReportParameter parameter37 = new BsdReportParameter("DobleB", DobleB, true);
            BsdReportParameter parameter38 = new BsdReportParameter("DobleBD", DobleBD, true);
            BsdReportParameter parameter39 = new BsdReportParameter("DobleD", DobleD, true);
            BsdReportParameter parameter40 = new BsdReportParameter("DobleDA", DobleDA, true);

            IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
            ds.Add(rds);
            ds.Add(rds2);
            ds.Add(rds3);
            ds.Add(rds4);
            ds.Add(rds5);
            ds.Add(rds6);
            ds.Add(rds7);
            ds.Add(rds8);

            BsdReport report = new BsdReport("Reporte de Espesores", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
            report.Parameters.Add(parameter1);
            report.Parameters.Add(parameter2);
            report.Parameters.Add(parameter3);
            report.Parameters.Add(parameter4);
            report.Parameters.Add(parameter5);
            report.Parameters.Add(parameter6);
            report.Parameters.Add(parameter7);
            report.Parameters.Add(parameter8);
            report.Parameters.Add(parameter9);
            report.Parameters.Add(parameter10);
            report.Parameters.Add(parameter11);
            report.Parameters.Add(parameter12);
            report.Parameters.Add(parameter13);
            report.Parameters.Add(parameter14);
            report.Parameters.Add(parameter15);
            report.Parameters.Add(parameter16);
            report.Parameters.Add(parameter17);
            report.Parameters.Add(parameter18);
            report.Parameters.Add(parameter19);
            report.Parameters.Add(parameter20);
            report.Parameters.Add(parameter21);
            report.Parameters.Add(parameter22);
            report.Parameters.Add(parameter23);
            report.Parameters.Add(parameter24);
            report.Parameters.Add(parameter25);
            report.Parameters.Add(parameter26);
            report.Parameters.Add(parameter27);
            report.Parameters.Add(parameter28);
            report.Parameters.Add(parameter29);
            report.Parameters.Add(parameter30);
            report.Parameters.Add(parameter31);
            report.Parameters.Add(parameter32);
            report.Parameters.Add(parameter33);
            report.Parameters.Add(parameter34);
            report.Parameters.Add(parameter35);
            report.Parameters.Add(parameter36);
            report.Parameters.Add(parameter37);
            report.Parameters.Add(parameter38);
            report.Parameters.Add(parameter39);
            report.Parameters.Add(parameter40);

            BsdReportResult result = ReportViewerService.CreateReport(report);

            return File(result.Content, result.MimeType);
        }
        public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteHermeticidad.rdlc");
            decimal atributo1 = 0, atributo2 = 0, atributo3 = 0, atributo4 = 0, atributo5 = 0, atributo6 = 0, atributo7 = 0, atributo8 = 0,
            atributo9 = 0, atributo10 = 0, atributo11 = 0, atributo12 = 0, atributo13 = 0, atributo14 = 0, atributo15 = 0,
            atributo16 = 0, atributo17 = 0, atributo18 = 0;
            string resultado1 = "", resultado2 = "", resultado3 = "", resultado4 = "", resultado5 = "", resultado6 = "";
            //DateTime fecha = DateTime.Parse(resultado.FechaPrueba.ToString("dd/MM/yyyy"));
            string noTubo = "", perfil = "";
            //long ProductoId = resultado.ProductoId;
            //DateTime Fecha = resultado.FechaPrueba;

            //if (resultado.Lote.Identificador != null)
            //{
            //    var resultLote = LoteService.ReadLoteByIdentificador(resultado.Lote.Identificador).ToList();
            //    ProductoId = resultLote[0].ProductoId;
            //    Fecha = resultLote[0].FechaProduccion;
            //}

            //Resultado
            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            if (resultQRY.Count > 0)
            {
                int number = -1;
                for (int i = 0; i < resultQRY.Count; i++)
                {
                    if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                    {
                        if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-205-CNCP" || resultQRY[i].NormaEnsayo.Nombre == "ASTM D 3212")
                        {
                            var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                            for (int j = 0; j < resultDetalle.Count; j++)
                            {
                                switch (resultDetalle[j].MuestraNum)
                                {
                                    case 1:
                                        resultado1 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado1 == "1.00")
                                        {
                                            resultado1 = "Aprobado";
                                        }
                                        else
                                            resultado1 = "Rechazado";
                                        break;
                                    case 2:
                                        resultado2 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado2 == "1.00")
                                        {
                                            resultado2 = "Aprobado";
                                        }
                                        else
                                            resultado2 = "Rechazado";
                                        break;
                                    case 3:
                                        resultado3 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado3 == "1.00")
                                        {
                                            resultado3 = "Aprobado";
                                        }
                                        else
                                            resultado3 = "Rechazado";
                                        break;
                                    case 4:
                                        resultado4 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado4 == "1.00")
                                        {
                                            resultado4 = "Aprobado";
                                        }
                                        else
                                            resultado4 = "Rechazado";
                                        break;
                                    case 5:
                                        resultado5 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado5 == "1.00")
                                        {
                                            resultado5 = "Aprobado";
                                        }
                                        else
                                            resultado5 = "Rechazado";
                                        break;
                                    case 6:
                                        resultado6 = resultDetalle[j].ResultadoDetalleValor.ToString();
                                        if (resultado6 == "1.00")
                                        {
                                            resultado6 = "Aprobado";
                                        }
                                        else
                                            resultado6 = "Rechazado";
                                        break;

                                }

                                var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                                for (int ad = 0; ad < atributoDetalle.Count; ad++)
                                {
                                    switch (atributoDetalle[ad].AtributoId)
                                    {
                                        case 77:
                                            atributo1 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 78:
                                            atributo2 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 79:
                                            atributo3 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 80:
                                            atributo4 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 81:
                                            atributo5 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 82:
                                            atributo6 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 83:
                                            atributo7 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 84:
                                            atributo8 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 85:
                                            atributo9 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 86:
                                            atributo10 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 87:
                                            atributo11 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 88:
                                            atributo12 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 89:
                                            atributo13 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 90:
                                            atributo14 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 91:
                                            atributo15 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 92:
                                            atributo16 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 93:
                                            atributo17 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 94:
                                            atributo18 = decimal.Parse(atributoDetalle[ad].Valor);
                                            break;
                                        case 153:
                                            noTubo = atributoDetalle[ad].Valor;
                                            break;
                                        case 154:
                                            perfil = atributoDetalle[ad].Valor;
                                            break;
                                    }
                                }
                            }

                        }
                    }

                }

                //Lote
                var resultLote = resultQRY[0].Lote;
                List<Lote> listLote = new List<Lote>();
                listLote.Add(resultLote);
                //ResultadoDetalle
                var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
                //Producto
                var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
                var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
                var resultTurno = resultLote.Turno;
                List<Turno> listTurno = new List<Turno>();
                listTurno.Add(resultTurno);
                var resultNorma = resultQRY[0].Norma;
                List<Norma> listNorma = new List<Norma>();
                listNorma.Add(resultNorma);
                var resultDiametro = resultProducto[0].MedidaDiametro;
                List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
                listDiametro.Add(resultDiametro);
                List<Resultado> ListVacio = new List<Resultado>();
                List<Resultado> ListPresion = new List<Resultado>();
                List<Equipo> listEquipo = new List<Equipo>();

                foreach (Resultado r in resultQRY)
                {
                    if (r.Ensayo.Nombre == "Hermeticidad Agua posición normal, desalineamiento 1.5 ° y deflexion 5 % - 10 min por posición ")
                    {
                        ListPresion.Add(r);
                    }

                    if (r.Ensayo.Nombre == "Hermeticidad Vacio posición normal, desalineamiento 1.5 ° y deflexion 5 % - 10 min por posición ")
                    {
                        ListVacio.Add(r);
                    }
                }

                BsdReportDataSource rds = new BsdReportDataSource("DsHermeticidad", resultQRY);
                BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
                BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
                BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
                BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
                BsdReportDataSource rds6 = new BsdReportDataSource("DsEquipo", resultEquipo);
                BsdReportDataSource rds7 = new BsdReportDataSource("DsNorma", listNorma);
                BsdReportDataSource rds8 = new BsdReportDataSource("DsMDiametro", listDiametro);
                BsdReportDataSource rds9 = new BsdReportDataSource("DsVacio", ListVacio);
                BsdReportDataSource rds10 = new BsdReportDataSource("DsPresion", ListPresion);

                BsdReportParameter parameter1 = new BsdReportParameter("PresionRequerida", atributo1.ToString(), true);
                BsdReportParameter parameter2 = new BsdReportParameter("DistanciaApoyo", atributo2.ToString(), true);
                BsdReportParameter parameter3 = new BsdReportParameter("Tiempo", atributo3.ToString(), true);
                BsdReportParameter parameter4 = new BsdReportParameter("VacioRequerido", atributo4.ToString(), true);
                BsdReportParameter parameter5 = new BsdReportParameter("Deflexion", atributo5.ToString(), true);
                BsdReportParameter parameter6 = new BsdReportParameter("Desalineamiento", atributo6.ToString(), true);
                BsdReportParameter parameter7 = new BsdReportParameter("Vacio2", atributo7.ToString(), true);
                BsdReportParameter parameter8 = new BsdReportParameter("Vacio3", atributo8.ToString(), true);
                BsdReportParameter parameter9 = new BsdReportParameter("Vacio6", atributo9.ToString(), true);
                BsdReportParameter parameter10 = new BsdReportParameter("Vacio7", atributo10.ToString(), true);
                BsdReportParameter parameter11 = new BsdReportParameter("Vacio10", atributo11.ToString(), true);
                BsdReportParameter parameter12 = new BsdReportParameter("Vacio11", atributo12.ToString(), true);
                BsdReportParameter parameter13 = new BsdReportParameter("Presion2", atributo13.ToString(), true);
                BsdReportParameter parameter14 = new BsdReportParameter("Presion3", atributo14.ToString(), true);
                BsdReportParameter parameter15 = new BsdReportParameter("Presion6", atributo15.ToString(), true);
                BsdReportParameter parameter16 = new BsdReportParameter("Presion7", atributo16.ToString(), true);
                BsdReportParameter parameter17 = new BsdReportParameter("Presion10", atributo17.ToString(), true);
                BsdReportParameter parameter18 = new BsdReportParameter("Presion11", atributo18.ToString(), true);
                BsdReportParameter parameter19 = new BsdReportParameter("Vacio1", resultado1.ToString(), true);
                BsdReportParameter parameter20 = new BsdReportParameter("Vacio5", resultado2.ToString(), true);
                BsdReportParameter parameter21 = new BsdReportParameter("Vacio9", resultado3.ToString(), true);
                BsdReportParameter parameter22 = new BsdReportParameter("Presion1", resultado4.ToString(), true);
                BsdReportParameter parameter23 = new BsdReportParameter("Presion5", resultado5.ToString(), true);
                BsdReportParameter parameter24 = new BsdReportParameter("Presion9", resultado6.ToString(), true);
                BsdReportParameter parameter25 = new BsdReportParameter("Vacio4", "1", true);
                BsdReportParameter parameter26 = new BsdReportParameter("Vacio8", "2", true);
                BsdReportParameter parameter27 = new BsdReportParameter("Vacio12", "3", true);
                BsdReportParameter parameter28 = new BsdReportParameter("Presion4", "4", true);
                BsdReportParameter parameter29 = new BsdReportParameter("Presion8", "5", true);
                BsdReportParameter parameter30 = new BsdReportParameter("Presion12", "6", true);
                BsdReportParameter parameter31 = new BsdReportParameter("NoTubo", noTubo, true);
                BsdReportParameter parameter32 = new BsdReportParameter("Perfil", perfil, true);

                IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
                ds.Add(rds);
                ds.Add(rds2);
                ds.Add(rds3);
                ds.Add(rds4);
                ds.Add(rds5);
                ds.Add(rds6);
                ds.Add(rds7);
                ds.Add(rds8);
                ds.Add(rds9);
                ds.Add(rds10);

                BsdReport report = new BsdReport("Reporte de Hermeticidad", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
                report.Parameters.Add(parameter1);
                report.Parameters.Add(parameter2);
                report.Parameters.Add(parameter3);
                report.Parameters.Add(parameter4);
                report.Parameters.Add(parameter5);
                report.Parameters.Add(parameter6);
                report.Parameters.Add(parameter7);
                report.Parameters.Add(parameter8);
                report.Parameters.Add(parameter9);
                report.Parameters.Add(parameter10);
                report.Parameters.Add(parameter11);
                report.Parameters.Add(parameter12);
                report.Parameters.Add(parameter13);
                report.Parameters.Add(parameter14);
                report.Parameters.Add(parameter15);
                report.Parameters.Add(parameter16);
                report.Parameters.Add(parameter17);
                report.Parameters.Add(parameter18);
                report.Parameters.Add(parameter19);
                report.Parameters.Add(parameter20);
                report.Parameters.Add(parameter21);
                report.Parameters.Add(parameter22);
                report.Parameters.Add(parameter23);
                report.Parameters.Add(parameter24);
                report.Parameters.Add(parameter25);
                report.Parameters.Add(parameter26);
                report.Parameters.Add(parameter27);
                report.Parameters.Add(parameter28);
                report.Parameters.Add(parameter29);
                report.Parameters.Add(parameter30);
                report.Parameters.Add(parameter31);
                report.Parameters.Add(parameter32);

                BsdReportResult result = ReportViewerService.CreateReport(report);

                //FileStream fs = new FileStream(@"c:\Reportes\" + report.Name + "." + result.FileType, FileMode.OpenOrCreate);
                //fs.Write(result.Content, 0, result.Content.Length);
                //fs.Close();

                return File(result.Content, result.MimeType);

            }
            else
            {
                return View(GetModel(new Lote()));
            }
        }
        public ActionResult Generar(long id)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteAgrietamiento.rdlc");

            string longA1 = "", longA2 = "", longA3 = "";
            string longB1 = "", longB2 = "", longB3 = "";
            string temp1 = "", temp2 = "", temp3 = "";
            string sol1 = "", sol2 = "", sol3 = "";
            string resultado1 = "", resultado2 = "", resultado3 = "";
            string perfil = "", noTubo = "";

            var resultQRY = ResultadoService.ReadResultadoByLote(id).ToList();

            for (int i = 0; i < resultQRY.Count; i++)
            {
                if (resultQRY[i].Norma.Nombre == "NRF-057-CFE-2009")
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-184-SCFI")
                    {
                        var resultDetalle = ResultadoDetalleService.ReadResultadoDetalleByResultadoId(resultQRY[i].Id).ToList();

                        for (int j = 0; j < resultDetalle.Count; j++)
                        {
                            var atributoDetalle = AtributoDService.ReadAtributoDetalleByResultadoId(resultDetalle[j].Id).ToList();

                            for (int ad = 0; ad < atributoDetalle.Count; ad++)
                            {
                                switch (atributoDetalle[ad].AtributoId)
                                {
                                    case 1:
                                        if (longA1 == "")
                                        {
                                            longA1 = atributoDetalle[ad].Valor;
                                            resultado1 = resultDetalle[j].Resultado.ResultadoValor.ToString();
                                        }
                                        else if (longA2 == "")
                                        {
                                            longA2 = atributoDetalle[ad].Valor;
                                            resultado2 = resultDetalle[j].Resultado.ResultadoValor.ToString();
                                        }
                                        else if (longA3 == "")
                                        {
                                            longA3 = atributoDetalle[ad].Valor;
                                            resultado3 = resultDetalle[j].Resultado.ResultadoValor.ToString();
                                        }
                                        break;
                                    case 2:
                                        if (longB1 == "")
                                        {
                                            longB1 = atributoDetalle[ad].Valor;
                                        }
                                        else if (longB2 == "")
                                        {
                                            longB2 = atributoDetalle[ad].Valor;
                                        }
                                        else if (longB3 == "")
                                        {
                                            longB3 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 11:
                                        if (temp1 == "")
                                        {
                                            temp1 = atributoDetalle[ad].Valor;
                                        }
                                        else if (temp2 == "")
                                        {
                                            temp2 = atributoDetalle[ad].Valor;
                                        }
                                        else if (temp3 == "")
                                        {
                                            temp3 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 12:
                                        if (sol1 == "")
                                        {
                                            sol1 = atributoDetalle[ad].Valor;
                                        }
                                        else if (sol2 == "")
                                        {
                                            sol2 = atributoDetalle[ad].Valor;
                                        }
                                        else if (sol3 == "")
                                        {
                                            sol3 = atributoDetalle[ad].Valor;
                                        }
                                        break;
                                    case 147:
                                        perfil = atributoDetalle[ad].Valor;
                                        break;
                                    case 148:
                                        noTubo = atributoDetalle[ad].Valor;
                                        break;
                                }
                            }
                        }
                    }
                }
            }

            //Lote
            var resultLote = resultQRY[0].Lote;
            List<Lote> listLote = new List<Lote>();
            listLote.Add(resultLote);
            //ResultadoDetalle
            var resultDetalle2 = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
            //Producto
            var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
            //var resultEquipo = EquipoService.ReadEquipo().Where(x => x.Id == resultQRY[0].EquipoId).ToList();
            var resultTurno = resultLote.Turno;
            List<Turno> listTurno = new List<Turno>();
            listTurno.Add(resultTurno);
            //var resultNorma = resultQRY[0].Norma;
            //List<Norma> listNorma = new List<Norma>();
            //listNorma.Add(resultNorma);
            //var resultDiametro = resultProducto[0].MedidaDiametro;
            //List<MedidaDiametro> listDiametro = new List<MedidaDiametro>();
            //listDiametro.Add(resultDiametro);
            //List<Resultado> ListVacio = new List<Resultado>();
            //List<Resultado> ListPresion = new List<Resultado>();
            //List<Equipo> listEquipo = new List<Equipo>();

            BsdReportDataSource rds = new BsdReportDataSource("DsAgrietamiento", resultQRY);
            BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
            BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle2);
            BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
            BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);

            BsdReportParameter parameter1 = new BsdReportParameter("NoTubo", noTubo, true);
            BsdReportParameter parameter2 = new BsdReportParameter("Perfil", perfil, true);
            BsdReportParameter parameter3 = new BsdReportParameter("LongA1", longA1, true);
            BsdReportParameter parameter4 = new BsdReportParameter("LongA2", longA2, true);
            BsdReportParameter parameter5 = new BsdReportParameter("LongA3", longA3, true);
            BsdReportParameter parameter6 = new BsdReportParameter("LongB1", longB1, true);
            BsdReportParameter parameter7 = new BsdReportParameter("LongB2", longB2, true);
            BsdReportParameter parameter8 = new BsdReportParameter("LongB3", longB3, true);
            BsdReportParameter parameter9 = new BsdReportParameter("Resultado1", resultado1, true);
            BsdReportParameter parameter10 = new BsdReportParameter("Resultado2", resultado2, true);
            BsdReportParameter parameter11 = new BsdReportParameter("Resultado3", resultado3, true);
            BsdReportParameter parameter12 = new BsdReportParameter("Temp1", temp1, true);
            BsdReportParameter parameter13 = new BsdReportParameter("Temp2", temp2, true);
            BsdReportParameter parameter14 = new BsdReportParameter("Temp3", temp3, true);
            BsdReportParameter parameter15 = new BsdReportParameter("Sol1", sol1, true);
            BsdReportParameter parameter16 = new BsdReportParameter("Sol2", sol2, true);
            BsdReportParameter parameter17 = new BsdReportParameter("Sol3", sol3, true);

            IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
            ds.Add(rds);
            ds.Add(rds2);
            ds.Add(rds3);
            ds.Add(rds4);
            ds.Add(rds5);

            BsdReport report = new BsdReport("Reporte de Agrietamiento", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
            report.Parameters.Add(parameter1);
            report.Parameters.Add(parameter2);
            report.Parameters.Add(parameter3);
            report.Parameters.Add(parameter4);
            report.Parameters.Add(parameter5);
            report.Parameters.Add(parameter6);
            report.Parameters.Add(parameter7);
            report.Parameters.Add(parameter8);
            report.Parameters.Add(parameter9);
            report.Parameters.Add(parameter10);
            report.Parameters.Add(parameter11);
            report.Parameters.Add(parameter12);
            report.Parameters.Add(parameter13);
            report.Parameters.Add(parameter14);
            report.Parameters.Add(parameter15);
            report.Parameters.Add(parameter16);
            report.Parameters.Add(parameter17);

            BsdReportResult result = ReportViewerService.CreateReport(report);

            return File(result.Content, result.MimeType);

            //if (resultQRY.Count > 0)
            //{
            //    return Json("Success", JsonRequestBehavior.AllowGet);
            //}
            //else
            //{
            //    return Json("Error", JsonRequestBehavior.AllowGet);
            //}
        }
        public ActionResult GenerarReporte(Resultado resultado)
        {
            string path = Server.MapPath("/Infrastructure/Report/" + "RpteAgrietamiento.rdlc");
            //Resultado
            var resultAtributo = AtributoDService.ReadAtributoDetalle().Where(x => x.AtributoId == 1).ToList();
            var resultAtributo2 = AtributoDService.ReadAtributoDetalle().Where(x => x.AtributoId == 2).ToList();
            var resultQRY = ResultadoService.ReadResultado().Where(x => x.ProductoId == resultado.ProductoId && x.FechaPrueba == resultado.FechaPrueba).ToList();
            //var resultQRY = ResultadoService.ReadResultado().ToList();

            if (resultQRY.Count > 0)
            {
                return Json("Success", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("Error", JsonRequestBehavior.AllowGet);
            }

            //if (resultado.ProductoId > 0)
            //{
            //    resultQRY.Where(x => x.ProductoId == resultado.ProductoId).ToList();
            //}

            //if (resultado.FechaPrueba != null)
            //{
            //    resultQRY.Where(x => x.FechaPrueba == resultado.FechaPrueba).ToList();
            //}

            if (resultQRY.Count > 0)
            {
                int number = -1;
                for (int i = 0; i < resultQRY.Count - 1; i++)
                {
                    if (resultQRY[i].NormaEnsayo.Nombre == "NMX-E-184-SCFI")
                    {
                        number = i;
                    }
                }

                if (number != -1)
                {
                    var resultLote = resultQRY[number].Lote;
                    List<Lote> listLote = new List<Lote>();
                    listLote.Add(resultLote);
                    //ResultadoDetalle
                    var resultDetalle = ResultadoDetalleService.ReadResultadoDetalle().Where(x => x.ResultadoId == resultQRY[0].Id).ToList();
                    //Producto
                    var resultProducto = ProductoService.ReadProducto().Where(x => x.Id == resultQRY[0].ProductoId).ToList();
                    var resultTurno = resultLote.Turno;
                    List<Turno> listTurno = new List<Turno>();
                    listTurno.Add(resultTurno);

                    BsdReportDataSource rds = new BsdReportDataSource("DsAgrietamiento", resultQRY);
                    BsdReportDataSource rds2 = new BsdReportDataSource("DsLote", listLote);
                    BsdReportDataSource rds3 = new BsdReportDataSource("DsDetalle", resultDetalle);
                    BsdReportDataSource rds4 = new BsdReportDataSource("DsProducto", resultProducto);
                    BsdReportDataSource rds5 = new BsdReportDataSource("DsTurno", listTurno);
                    BsdReportDataSource rds6 = new BsdReportDataSource("DsAtributo1", resultAtributo);
                    BsdReportDataSource rds7 = new BsdReportDataSource("DsAtributo2", resultAtributo2);

                    //BsdReportParameter parameter = new BsdReportParameter("Test", "1", true);

                    IList<BsdReportDataSource> ds = new List<BsdReportDataSource>();
                    ds.Add(rds);
                    ds.Add(rds2);
                    ds.Add(rds3);
                    ds.Add(rds4);
                    ds.Add(rds5);
                    ds.Add(rds6);
                    ds.Add(rds7);

                    BsdReport report = new BsdReport("Reporte Agrietamiento", path, BsdReportFormat.PDF, ds, BsdReportType.Local);
                    //report.Parameters.Add(parameter);
                    BsdReportResult result = ReportViewerService.CreateReport(report);

                    //FileStream fs = new FileStream(@"c:\Reportes\" + report.Name + "." + result.FileType, FileMode.OpenOrCreate);
                    //fs.Write(result.Content, 0, result.Content.Length);
                    //fs.Close();

                    return File(result.Content, result.MimeType);
                }
                else
                {
                    return View(GetModel(new Lote()));
                }

            }
            else
            {
                return Json("Error", JsonRequestBehavior.AllowGet);
            }
        }