Esempio n. 1
0
        public void generaBarcodePDF(String ruta, List<EDatos> listaDatos, int columnas)
        {
            //creo el documento y le asigno margenes

            Document document = new Document(PageSize.A4, 20, 20, 20, 20);
            PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(ruta, FileMode.Create));
            document.Open();
            PdfContentByte pdfContentByte = pdfWriter.DirectContent;

            PdfPTable table = new PdfPTable(columnas)
            {
                WidthPercentage = 100
            };

            for (int i = 0; i < listaDatos.Count; i++)
            {
                PdfPTable tabla_contenido = new PdfPTable(1)
                {
                    WidthPercentage = 100
                };
                // Barcode 128 EAN
                Image imageEan = GeneraBarcode128(pdfContentByte, listaDatos.ElementAt(i).codigo, false, Barcode.EAN13);
                tabla_contenido.DefaultCell.Border = Rectangle.NO_BORDER;
                tabla_contenido.AddCell(new Phrase(new Chunk(imageEan, 0, 0)));
                PdfPCell cellEmpresa = new PdfPCell(new Phrase(listaDatos.ElementAt(i).cliente, new Font(Font.HELVETICA, 6f, Font.NORMAL)));
                PdfPCell cellDireccion = new PdfPCell(new Phrase(listaDatos.ElementAt(i).direccion, new Font(Font.HELVETICA, 5f, Font.NORMAL)));
                PdfPCell cellLugar = new PdfPCell(new Phrase(listaDatos.ElementAt(i).ciudad, new Font(Font.HELVETICA, 6f, Font.NORMAL)));
                cellEmpresa.Border = Rectangle.NO_BORDER;
                cellDireccion.Border = Rectangle.NO_BORDER;
                cellLugar.Border = Rectangle.NO_BORDER;
                tabla_contenido.AddCell(cellEmpresa);
                tabla_contenido.AddCell(cellDireccion);
                tabla_contenido.AddCell(cellLugar);
                tabla_contenido.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
                table.AddCell(tabla_contenido);
            }

            for (int k = 0; k < columnas - 1; k++)
            {
                PdfPTable tabla_contenido = new PdfPTable(1)
                {
                    WidthPercentage = 100
                };
                // Barcode 128 EAN
                Image imageEan = GeneraBarcode128(pdfContentByte, "", false, Barcode.EAN13);
                tabla_contenido.DefaultCell.Border = Rectangle.NO_BORDER;
                tabla_contenido.AddCell(new Phrase(new Chunk(imageEan, 0, 0)));
                table.AddCell(tabla_contenido);
            }

            document.Add(table);
            document.Close();
        }
        public JsonResult GetCostosGenerales(string lista)
        {
            /*Obtiene la fecha para realizar las comparaciones*/
            var _res = Json(new[] {
            new { id="", name=""},
                }, JsonRequestBehavior.AllowGet);
            List<string> list = lista.Split(',').ToList();
            int largo = list.Count;
            DateTime FechaI = DateTime.Parse(list[largo - 2]);
            DateTime FechaF = DateTime.Parse(list[largo - 1]);
            largo = largo - 3;
            var res = db.DSRIFRESERVACION;
            var todasReservas = from r in res
                                where ((r.FEC_INICIALRESERVACION >= FechaI && r.FEC_INICIALRESERVACION <= FechaF && r.TXT_ESTADO != "Rechazada" && r.TXT_ESTADO != "En Proceso"))
                                select r;
            var lTemporal1 = todasReservas.ToList();

            foreach (var reser in todasReservas.ToList())
            {
                bool eli = true;
                for (int a = 0; a <= largo; a++)
                {
                    if (reser.ID_INMUEBLE == Convert.ToInt32(list[a]))
                    {
                        eli = false;
                        break;
                    }
                }
                if (eli)
                {
                    for (int i = 0; i < lTemporal1.Count; i++)
                    {
                        if (lTemporal1.ElementAt(i).ID_INMUEBLE == reser.ID_INMUEBLE)
                        {
                            lTemporal1.Remove(lTemporal1.ElementAt(i));
                            eli = true;
                            break;
                        }
                    }
                }
            }
            var lista1 = lTemporal1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Year);
            var lista2 = lista1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Month);
            var lista3 = lista2.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Date);
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            var listaInmuebles = lista3.ToList();
            List<int> UnicosInmuebles = new List<int>();// Dejar solo un inmueble de cada clase
            foreach (var inmue in listaInmuebles)
            {
                UnicosInmuebles.Add(inmue.DSRIFINMUEBLE.ID_INMUEBLE);
            }
            UnicosInmuebles = UnicosInmuebles.Distinct().ToList();
            ///////////
            for (int a = 0; a < UnicosInmuebles.Count; a++) // recorre la lista de inmuebles unicos de la lista previamente llenada
            {
                int? costoGeneral = 0;
                int? costoUnitario = 0;
                foreach (var reserva in listaInmuebles) // recorre la lista en donde estan todas las reservas que se encuentran en el modelo
                {
                    if (reserva.ID_INMUEBLE == UnicosInmuebles.ElementAt(a)) // se compara si el id de la lista es igual a la de la reserva para empezar a sumar
                    {
                        //////////////////////////////////////////////////////////////////////
                        if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora para los del CTEC
                        {
                            while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION)
                            {
                                while (reserva.HOR_INICIO < reserva.HOR_FINAL)
                                {
                                    TimeSpan mediaHora = TimeSpan.FromMinutes(30); // Agregar Media hora a la hora de inicio
                                    costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE / 2;
                                    reserva.HOR_INICIO = reserva.HOR_INICIO.Add(mediaHora);
                                }
                                if (reserva.DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1")
                                {
                                    costoUnitario += 20000;
                                }
                                DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1);
                                reserva.FEC_INICIALRESERVACION = nuevaFecha;
                            }
                        }
                        //////////////////////////////////////////////////////////////////////
                        else if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día para los del ECOTEC
                        {
                            while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION)
                            {
                                costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE;
                                DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1);
                                reserva.FEC_INICIALRESERVACION = nuevaFecha;
                            }
                        }
                    }
                }
                costoGeneral += costoUnitario;
            }
            JsonObject _resultado = new JsonObject();

            return _res;
        }
        public ActionResult nuevopdf2(string formcollection)
        {
            if (Session["COD_USUARIO"] == null)
            {
                return RedirectToAction("Login", "Home");
            }
            else
            {
                List<string> listaFiltros = Session["Filtros"] as List<string>;

                List<string> list = formcollection.Split(',').ToList();
                int largo = list.Count;
                DateTime FechaI = DateTime.Parse(list[largo - 2]);
                DateTime FechaF = DateTime.Parse(list[largo - 1]);
                largo = largo - 3;
                int largo_aux = largo;
                var reservaciones = db.DSRIFRESERVACION;
                var inmuebles = db.DSRIFINMUEBLE;
                var _query0 = from reserva in reservaciones
                              where ((reserva.FEC_INICIALRESERVACION >= FechaI && reserva.FEC_INICIALRESERVACION <= FechaF && reserva.TXT_ESTADO != "Rechazada" && reserva.TXT_ESTADO != "En Proceso"))
                              select reserva;
                var listaTemporal1 = _query0.ToList();

                foreach (var reserva in _query0.ToList())
                {
                    bool eliminar = true;

                    for (int a = 0; a <= largo; a++)
                    {
                        if (reserva.ID_INMUEBLE == Convert.ToInt32(list[a]))
                        {
                            eliminar = false;
                            break;
                        }
                    }
                    if (eliminar)
                    {
                        for (int i = 0; i < listaTemporal1.Count; i++)
                        {
                            if (listaTemporal1.ElementAt(i).ID_INMUEBLE == reserva.ID_INMUEBLE)
                            {
                                listaTemporal1.Remove(listaTemporal1.ElementAt(i));
                                eliminar = true;
                                break;
                            }
                        }
                    }
                }
                // Eliminar con los filtros las reservas que no esten
                foreach (var filtro in listaFiltros)
                {
                    for (int i = 0; i < listaTemporal1.Count; i++)
                    {
                        if ((listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Alquiler Instalaciones" && filtro == "alquiler") ||
                            (listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Actividad Interna" && filtro == "actividad") ||
                            ((listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Transferencia Tecnológica" ||
                            listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Vinculación Empresarial" ||
                            listaTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Educación Continua") && filtro == "ejes"))
                        {
                            listaTemporal1.Remove(listaTemporal1.ElementAt(i));
                            i--;
                        }
                    }
                }

                var _query1 = listaTemporal1.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Year);
                var _query2 = _query1.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Month);
                var _query3 = _query2.ToList().OrderBy(ll => ll.FEC_INICIALRESERVACION.Date);
                // quitar los valores repetidos de la lista para que quede listo la busqueda y el pdf
                Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);
                try
                {
                    PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);
                    pdfDoc.Open();

                    string url = "http://3.bp.blogspot.com/-qZcs1DZ8Wys/TWU1PrkuMzI/AAAAAAAAAXM/u85hsQzQc_w/s320/image002.jpg";
                    Image jpg = Image.GetInstance(new Uri(url));
                    jpg.SpacingBefore = 7f;
                    jpg.ScalePercent(35f);
                    pdfDoc.Add(jpg);
                    Chunk Titulo = new Chunk("Sistema de Reservas de Inmuebles, TEC-SSC", FontFactory.GetFont(FontFactory.TIMES_BOLD, 16));
                    Paragraph p = new Paragraph();

                    p.Alignment = Element.ALIGN_LEFT;
                    p.Add(Titulo);
                    pdfDoc.Add(p);

                    Chunk subtitulo = new Chunk("Centro de Transferencia Tecnológica y Educación Continua.", FontFactory.GetFont(FontFactory.TIMES, 12));
                    Paragraph p1 = new Paragraph();
                    p1.Alignment = Element.ALIGN_LEFT;
                    p1.Add(subtitulo);

                    pdfDoc.Add(p1);

                    Chunk extrainfo = new Chunk("Informe Generado Por: " + @Session["NOM_USUARIO"], FontFactory.GetFont(FontFactory.TIMES, 10));
                    Paragraph pextra = new Paragraph();
                    pextra.Alignment = Element.ALIGN_LEFT;
                    pextra.Add(extrainfo);

                    pdfDoc.Add(pextra);

                    Chunk extrainfo1 = new Chunk("El día: " + @DateTime.Now.ToShortDateString(), FontFactory.GetFont(FontFactory.TIMES, 10));
                    Paragraph pextra1 = new Paragraph();
                    pextra1.SpacingAfter = 7f;
                    pextra1.Alignment = Element.ALIGN_LEFT;
                    pextra1.Add(extrainfo1);

                    pdfDoc.Add(pextra1);

                    PdfPTable table = new PdfPTable(3);

                    table.WidthPercentage = 100;
                    float[] widths = new float[] { 20f, 20f, 60f };
                    table.SetWidths(widths);
                    table.HorizontalAlignment = 0;
                    table.SpacingAfter = 10;

                    PdfPCell cellFI = new PdfPCell(new Phrase("Fecha Inicio", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11)));
                    cellFI.Colspan = 1;
                    cellFI.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204);
                    cellFI.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right

                    PdfPCell cellFF = new PdfPCell(new Phrase("Fecha Finalización", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11)));
                    cellFF.Colspan = 1;
                    cellFF.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204);
                    cellFF.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right

                    PdfPCell cellN = new PdfPCell(new Phrase("Informe de la reserva", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11)));
                    cellN.Colspan = 1;
                    cellN.BackgroundColor = new iTextSharp.text.BaseColor(204, 204, 204);
                    cellN.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right

                    table.AddCell(cellFI);
                    table.AddCell(cellFF);
                    table.AddCell(cellN);
                    var listaOrdenada = _query3.ToList();
                    for (int i = 0; i < listaOrdenada.Count; i++)
                    {
                        table.AddCell(new Phrase(listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.ToShortDateString(), FontFactory.GetFont(FontFactory.HELVETICA, 10)));
                        table.AddCell(new Phrase(listaOrdenada.ElementAt(i).FEC_FINALRESERVACION.ToShortDateString(), FontFactory.GetFont(FontFactory.HELVETICA, 10)));

                        DateTime horaI = new DateTime();
                        horaI = DateTime.Today.Add(listaOrdenada.ElementAt(i).HOR_INICIO);
                        DateTime HoraF = new DateTime();
                        HoraF = DateTime.Today.Add(listaOrdenada.ElementAt(i).HOR_FINAL);
                        string hor_inicio = horaI.ToString("h:mm");
                        string hor_final = HoraF.ToString("h:mm");
                        if (listaOrdenada.ElementAt(i).HOR_INICIO.Hours <= 11)
                        {
                            hor_inicio = hor_inicio + " am";
                        }
                        else
                        {
                            hor_inicio = hor_inicio + " pm";
                        }
                        if (listaOrdenada.ElementAt(i).HOR_FINAL.Hours <= 11)
                        {
                            hor_final = hor_final + " am";
                        }
                        else
                        {
                            hor_final = hor_final + " pm";
                        }

                        int? costo = 0;
                        if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora
                        {
                            while (listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION <= listaOrdenada.ElementAt(i).FEC_FINALRESERVACION)
                            {
                                while (listaOrdenada.ElementAt(i).HOR_INICIO < listaOrdenada.ElementAt(i).HOR_FINAL)
                                {
                                    TimeSpan mediaHora = TimeSpan.FromHours(1); // Agregar Media hora a la hora de inicio
                                    costo += listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE;
                                    listaOrdenada.ElementAt(i).HOR_INICIO = listaOrdenada.ElementAt(i).HOR_INICIO.Add(mediaHora);
                                }
                                if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1")
                                {
                                    costo += 20000;
                                }
                                DateTime nuevaFecha = listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.AddDays(1);
                                listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION = nuevaFecha;
                            }
                            PdfPCell celda = new PdfPCell();
                            Phrase texto = new Phrase("ACTIVIDAD: " + listaOrdenada.ElementAt(i).NOM_ACTIVIDAD +
                                                      "\nINMUEBLE: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE +
                                                      "\nINICIO: " + hor_inicio +
                                                      "\nFIN: " + hor_final +
                                                      "\nCOSTO POR HORA ¢: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE +
                                                      "\nCOSTO TOTAL ¢: " + costo, FontFactory.GetFont(FontFactory.HELVETICA, 8));
                            celda.AddElement(texto);
                            table.AddCell(celda);

                        }
                        else if (listaOrdenada.ElementAt(i).DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día
                        {

                            while (listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION <= listaOrdenada.ElementAt(i).FEC_FINALRESERVACION)
                            {
                                costo += listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE;
                                DateTime nuevaFecha = listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION.AddDays(1);
                                listaOrdenada.ElementAt(i).FEC_INICIALRESERVACION = nuevaFecha;
                            }

                            PdfPCell celda = new PdfPCell();

                            Phrase texto = new Phrase("ACTIVIDAD: " + listaOrdenada.ElementAt(i).NOM_ACTIVIDAD +
                                                      "\nINMUEBLE: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.NOM_INMUEBLE +
                                                      "\nINICIO: " + hor_inicio +
                                                      "\nFIN: " + hor_final +
                                                      "\nCOSTO POR DÍA ¢: " + listaOrdenada.ElementAt(i).DSRIFINMUEBLE.COS_INMUEBLE +
                                                      "\nCOSTO TOTAL ¢: " + costo, FontFactory.GetFont(FontFactory.HELVETICA, 8));
                            celda.AddElement(texto);
                            table.AddCell(celda);
                        }
                    } // Hasta Aqui llega la tabla

                    // Se Crea una nueva instancia para que no se vea afectaba sobre la otra consulta
                    DSRIEntities nn = new DSRIEntities();
                    var res = nn.DSRIFRESERVACION;
                    var todasReservas = from r in res
                                        where ((r.FEC_INICIALRESERVACION >= FechaI && r.FEC_INICIALRESERVACION <= FechaF && r.TXT_ESTADO != "Rechazada" && r.TXT_ESTADO != "En Proceso"))
                                        select r;
                    var lTemporal1 = todasReservas.ToList();

                    foreach (var reser in todasReservas.ToList())
                    {
                        bool eli = true;
                        for (int a = 0; a <= largo; a++)
                        {
                            if (reser.ID_INMUEBLE == Convert.ToInt32(list[a]))
                            {
                                eli = false;
                                break;
                            }
                        }
                        if (eli)
                        {
                            for (int i = 0; i < lTemporal1.Count; i++)
                            {
                                if (lTemporal1.ElementAt(i).ID_INMUEBLE == reser.ID_INMUEBLE)
                                {
                                    lTemporal1.Remove(lTemporal1.ElementAt(i));
                                    eli = true;
                                    break;
                                }
                            }
                        }
                    }
                    // Eliminar con los filtros las reservas que no esten
                    foreach (var filtro in listaFiltros)
                    {
                        for (int i = 0; i < listaTemporal1.Count; i++)
                        {
                            if ((lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Alquiler Instalaciones" && filtro == "alquiler") ||
                                (lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Actividad Interna" && filtro == "actividad") ||
                                ((lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Transferencia Tecnológica" ||
                                lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Vinculación Empresarial" ||
                                lTemporal1.ElementAt(i).DSRIFTIPOSACTIVIDAD.NOM_TIPOACTIVIDAD == "Educación Continua") && filtro == "ejes"))
                            {
                                lTemporal1.Remove(lTemporal1.ElementAt(i));
                                i--;
                            }
                        }
                    }

                    pdfDoc.Add(table); // Hasta aqui toda la tabla

                    var lista1 = lTemporal1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Year);
                    var lista2 = lista1.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Month);
                    var lista3 = lista2.ToList().OrderBy(aa => aa.FEC_INICIALRESERVACION.Date);

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    var listaInmuebles = lista3.ToList();
                    List<int> UnicosInmuebles = new List<int>();// Dejar solo un inmueble de cada clase
                    foreach (var inmue in listaInmuebles)
                    {
                        UnicosInmuebles.Add(inmue.DSRIFINMUEBLE.ID_INMUEBLE);
                    }
                    UnicosInmuebles = UnicosInmuebles.Distinct().ToList();
                    ///////////

                    // Agregamos Un Titulo Para la descripción de todo el costo general de los inmuebles para que no se vea feo XD

                    Chunk factura = new Chunk("COSTO TOTAL DE CADA INMUEBLE", FontFactory.GetFont(FontFactory.TIMES_BOLD, 11));
                    Paragraph pfactura = new Paragraph();
                    pfactura.Alignment = Element.ALIGN_CENTER;
                    pfactura.Add(factura);

                    pdfDoc.Add(pfactura);

                    for (int a = 0; a < UnicosInmuebles.Count; a++) // recorre la lista de inmuebles unicos de la lista previamente llenada
                    {
                        int? costoGeneral = 0;
                        int? costoUnitario = 0;
                        foreach (var reserva in listaInmuebles) // recorre la lista en donde estan todas las reservas que se encuentran en el modelo
                        {
                            if (reserva.ID_INMUEBLE == UnicosInmuebles.ElementAt(a)) // se compara si el id de la lista es igual a la de la reserva para empezar a sumar
                            {

                                //////////////////////////////////////////////////////////////////////
                                if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "CTEC") // Aqui se cobro por hora para los del CTEC
                                {
                                    while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION)
                                    {
                                        while (reserva.HOR_INICIO < reserva.HOR_FINAL)
                                        {
                                            TimeSpan mediaHora = TimeSpan.FromHours(1); // Agregar Media hora a la hora de inicio
                                            costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE;
                                            reserva.HOR_INICIO = reserva.HOR_INICIO.Add(mediaHora);
                                        }
                                        if (reserva.DSRIFINMUEBLE.NOM_INMUEBLE == "Tecnoaula 1")
                                        {
                                            costoUnitario += 20000;
                                        }
                                        DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1);
                                        reserva.FEC_INICIALRESERVACION = nuevaFecha;
                                    }

                                }
                                //////////////////////////////////////////////////////////////////////
                                else if (reserva.DSRIFINMUEBLE.DSRIFCLASIFINMUEBLE.NOM_CLASIFINMUEBLE == "ECOTEC") // Aqui se cobra por Día para los del ECOTEC
                                {

                                    while (reserva.FEC_INICIALRESERVACION <= reserva.FEC_FINALRESERVACION)
                                    {
                                        costoUnitario += reserva.DSRIFINMUEBLE.COS_INMUEBLE;
                                        DateTime nuevaFecha = reserva.FEC_INICIALRESERVACION.AddDays(1);
                                        reserva.FEC_INICIALRESERVACION = nuevaFecha;
                                    }
                                }
                            }
                        }

                        costoGeneral += costoUnitario;

                        DSRIFINMUEBLE inmuebleUnico = db.DSRIFINMUEBLE.Find(UnicosInmuebles.ElementAt(a));
                        Chunk nuevoParrafo = new Chunk(inmuebleUnico.NOM_INMUEBLE + ": ¢" + costoGeneral, FontFactory.GetFont(FontFactory.TIMES, 10));
                        Paragraph nuevoP = new Paragraph();
                        nuevoP.Alignment = Element.ALIGN_CENTER;
                        nuevoP.Add(nuevoParrafo);

                        pdfDoc.Add(nuevoP);
                        costoUnitario = 0;
                        costoGeneral = 0;
                    }

                    pdfDoc.Close();
                    Response.ContentType = "application/pdf";
                    Response.AddHeader("content-disposition", "attachment; filename= Informe de Reservas.pdf");
                    System.Web.HttpContext.Current.Response.Write(pdfDoc);
                    Response.Flush();
                    Response.End();
                    System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
                }
                catch (DocumentException de)
                {
                    System.Web.HttpContext.Current.Response.Write(de.Message);
                }
                catch (IOException ioEx)
                {
                    System.Web.HttpContext.Current.Response.Write(ioEx.Message);
                }
                catch (Exception ex)
                {
                    System.Web.HttpContext.Current.Response.Write(ex.Message);
                }

                return View();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            connectionString = "Server = 127.0.0.1; Port = 3306; Database = db_user; Uid = root; Pwd =; ";
            querry = "SELECT DATE(transaction.date) AS 'Date',"
                + " transaction.transactionID AS 'Transaction Number',"
                + " material.name AS 'Material Name',"
                + " contract.quantity AS 'Quantity',"
                + " supplier.name AS 'Supplier'"
                + " FROM transaction, material, contract, supplier"
                + " WHERE";

            if (value1 != 0)
            {
                querry = querry + " DAY(transaction.date) = " + value1 + " AND";
            }

            if (value2 != 0)
            {
                querry = querry + " MONTH(transaction.date) = " + value2 + " AND";
            }

            if (value3 != 0)
            {
                querry = querry + " YEAR(transaction.date) = " + value3 + " AND";
            }

            querry = querry + " transaction.materialID = material.materialID AND"
                + " transaction.contractID = contract.contractID AND"
                + " contract.supplierID = supplier.supplierID";
            connection = new MySqlConnection(connectionString);
            dataAdapter = new MySqlDataAdapter(querry, connection);
            DataTable dt = new DataTable();
            connection.Open();
            dataAdapter.Fill(dt);

            saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
            saveFileDialog1.Title = "Save report file";
            saveFileDialog1.FileName = "report";
            saveFileDialog1.Filter = "*.pdf|*.pdf";
            if (saveFileDialog1.ShowDialog() != DialogResult.Cancel)
            {
                try
                {
                    Document doc = new Document(PageSize.A4);
                    PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(saveFileDialog1.FileName.ToString(), FileMode.Create));
                    doc.Open();

                    iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance(System.Reflection.Assembly.GetExecutingAssembly().Location + "\\..\\..\\..\\Resources\\logoprogram.png");
                    logo.SetAbsolutePosition(doc.PageSize.Width / 2 - 200f, doc.PageSize.Height - 250f);
                    doc.Add(logo);

                    Paragraph dateParagraph = new Paragraph("Report created: " + DateTime.Now.ToString("dd-MM-yyyy H:mm:ss"));
                    dateParagraph.SpacingBefore = 200f;
                    doc.Add(dateParagraph);

                    Paragraph tableParagraph;
                    if (dt.Rows.Count == 0)
                    {
                        tableParagraph = new Paragraph("There are no records in the database");
                        doc.Add(tableParagraph);
                        doc.Close();
                        MessageBox.Show("Report created succesfully!", "Succes!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                    else
                    {

                        iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(dt.Columns.Count);

                        // Add the headers to the PDF
                        foreach (DataColumn column in dt.Columns)
                        {
                            table.AddCell(new Phrase(column.ColumnName));
                        }

                        table.HeaderRows = 1;

                        List<string> dates = new List<string>();
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            DateTime date = DateTime.ParseExact(dt.Rows[i][0].ToString(), "M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
                            string s = date.ToString("dd-MM-yyyy");
                            dates.Add(s);
                        }
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            table.AddCell(new Phrase(dates.ElementAt(i)));
                            for (int j = 1; j < dt.Columns.Count; j++)
                            {
                                table.AddCell(new Phrase(dt.Rows[i][j].ToString()));
                            }
                        }
                        tableParagraph = new Paragraph();
                        tableParagraph.Add(table);
                        tableParagraph.SpacingBefore = 30f;
                        doc.Add(tableParagraph);

                        int sum = 0;
                        float avg;

                        for (int i = 0; i < dt.Rows.Count; i++) sum = sum + Int32.Parse(dt.Rows[i]["Quantity"].ToString());
                        avg = sum / dt.Rows.Count;

                        Paragraph conclusionParagraph = new Paragraph("The average quantity bought from suppliers based on the date selected is " + avg);
                        conclusionParagraph.SpacingBefore = 30f;
                        doc.Add(conclusionParagraph);

                        doc.Close();
                        MessageBox.Show("Report created succesfully!", "Succes!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("There was an error while trying  to create the report!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }