private void ReportFilm_OnClick(object sender, RoutedEventArgs e) { try { using (MsSqlContext db = new MsSqlContext()) { var film = db.films.Include(c => c.Sessions).ToList(); var dest = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Отчёт по продажам билетов на фильм.pdf"; var file = new FileInfo(dest); file.Directory.Create(); var pdf = new PdfDocument(new PdfWriter(dest)); var document = new Document(pdf, PageSize.A2.Rotate()); var font = PdfFontFactory.CreateFont(FONT, PdfEncodings.IDENTITY_H); float[] columnWidths = { 10, 10, 10, 8 }; var table = new Table(UnitValue.CreatePercentArray(columnWidths)); var cell = new Cell(1, 4) .Add(new Paragraph("Отчёт по фильмам")) .SetFont(font) .SetFontSize(13) .SetFontColor(DeviceGray.WHITE) .SetBackgroundColor(DeviceGray.BLACK) .SetWidth(600) .SetTextAlignment(TextAlignment.CENTER); table.AddHeaderCell(cell); Cell[] headerFooter = { new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Фильм")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Количество сеансов")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Количество купленных билетов")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Общая сумма")) }; foreach (var hfCell in headerFooter) { table.AddHeaderCell(hfCell); } int Count_of_places = 0; int all_places = 0; float Summ_price = 0; for (int i = 0; i < film.Count; i++) { Summ_price = 0; table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(film[i].film_name))); table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph($"{film[i].Sessions.Count}"))); for (int f = 0; f <= film[i].Sessions.Count - 1; f++) { ICollection <sessions> sess = film[i].Sessions; sessions buff_ses = sess.ElementAt(f); var places_list = db.places_list.Where(c => c.status == "Куплено").Where(c => c.sessionsId == buff_ses.Id).ToList(); Count_of_places = places_list.Count; all_places = all_places + Count_of_places; Summ_price = Count_of_places * buff_ses.price_of_tickets + Summ_price; } table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(all_places.ToString()))); table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(Summ_price.ToString()))); all_places = 0; } document.Add(table); document.Close(); var p = new Process { StartInfo = new ProcessStartInfo(dest) { UseShellExecute = true } }; p.Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void ReportDate_OnClick(object sender, RoutedEventArgs e) { var date = new dates(); date.ShowDialog(); try { using (MsSqlContext db = new MsSqlContext()) { var places_list = db.places_list.Include(t => t.sessions).Include(g => g.User).Where(c => c.status == "Куплено").Where(x => x.date_of_operation >= dates.begin && x.date_of_operation <= dates.end).ToList(); var dest = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/Отчёт по продажам за промежуток времени.pdf"; var file = new FileInfo(dest); file.Directory.Create(); var pdf = new PdfDocument(new PdfWriter(dest)); var document = new Document(pdf, PageSize.A2.Rotate()); var font = PdfFontFactory.CreateFont(FONT, PdfEncodings.IDENTITY_H); float[] columnWidths = { 10, 10, 10, 8 }; var table = new Table(UnitValue.CreatePercentArray(columnWidths)); var cell = new Cell(1, 4) .Add(new Paragraph("Отчёт за промежуток времени")) .SetFont(font) .SetFontSize(13) .SetFontColor(DeviceGray.WHITE) .SetBackgroundColor(DeviceGray.BLACK) .SetWidth(600) .SetTextAlignment(TextAlignment.CENTER); table.AddHeaderCell(cell); Cell[] headerFooter = { new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("С")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("По")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Количество купленных билетов")), new Cell().SetFont(font).SetWidth(100).SetBackgroundColor(new DeviceGray(0.75f)).Add(new Paragraph("Общая сумма")) }; foreach (var hfCell in headerFooter) { table.AddHeaderCell(hfCell); } int Count_of_places = places_list.Count; float Summ_price = 0; for (int i = 0; i < places_list.Count; i++) { Summ_price = places_list[i].sessions.price_of_tickets + Summ_price; } table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(dates.begin.ToString()))); table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(dates.end.ToString()))); table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(Count_of_places.ToString()))); table.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).SetFont(font).Add(new Paragraph(Summ_price.ToString()))); document.Add(table); document.Close(); var p = new Process { StartInfo = new ProcessStartInfo(dest) { UseShellExecute = true } }; p.Start(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }