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); } } }