diff --git a/project/ProjectTourAgency/Enities/TempClientTour.cs b/project/ProjectTourAgency/Enities/TempClientTour.cs index f2de69e..f1a3a90 100644 --- a/project/ProjectTourAgency/Enities/TempClientTour.cs +++ b/project/ProjectTourAgency/Enities/TempClientTour.cs @@ -12,6 +12,7 @@ public class TempClientTour public int ClientId { get; private set; } public int TourId { get; private set; } public int EmployeeId { get; private set; } + public int RouteId { get; private set; } public DateTime DepartureDate { get; private set; } public int Cost { get; private set; } diff --git a/project/ProjectTourAgency/Enities/Tour.cs b/project/ProjectTourAgency/Enities/Tour.cs index 0387586..fa545b2 100644 --- a/project/ProjectTourAgency/Enities/Tour.cs +++ b/project/ProjectTourAgency/Enities/Tour.cs @@ -32,7 +32,10 @@ public class Tour return new Tour { Id = tempClientTour.Id, - EmployeeId = tempClientTour.EmployeeId - } + EmployeeId = tempClientTour.EmployeeId, + RouteId = tempClientTour.RouteId, + DepartureDate = tempClientTour.DepartureDate, + ClientTours = clientTours + }; } } diff --git a/project/ProjectTourAgency/FormTourAgency.Designer.cs b/project/ProjectTourAgency/FormTourAgency.Designer.cs index 14fe04e..3a333ea 100644 --- a/project/ProjectTourAgency/FormTourAgency.Designer.cs +++ b/project/ProjectTourAgency/FormTourAgency.Designer.cs @@ -39,6 +39,7 @@ отчетыToolStripMenuItem = new ToolStripMenuItem(); DirectoryReportToolStripMenuItem = new ToolStripMenuItem(); AddMoneyReportToolStripMenuItem = new ToolStripMenuItem(); + TableReportToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); // @@ -104,7 +105,7 @@ // // отчетыToolStripMenuItem // - отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { DirectoryReportToolStripMenuItem, AddMoneyReportToolStripMenuItem }); + отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { DirectoryReportToolStripMenuItem, AddMoneyReportToolStripMenuItem, TableReportToolStripMenuItem }); отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; отчетыToolStripMenuItem.Size = new Size(88, 29); отчетыToolStripMenuItem.Text = "Отчеты"; @@ -125,6 +126,13 @@ AddMoneyReportToolStripMenuItem.Text = "Денежная диаграмма"; AddMoneyReportToolStripMenuItem.Click += AddMoneyReportToolStripMenuItem_Click; // + // TableReportToolStripMenuItem + // + TableReportToolStripMenuItem.Name = "TableReportToolStripMenuItem"; + TableReportToolStripMenuItem.Size = new Size(434, 34); + TableReportToolStripMenuItem.Text = "Сводка по туру"; + TableReportToolStripMenuItem.Click += TableReportToolStripMenuItem_Click; + // // FormTourAgency // AutoScaleDimensions = new SizeF(10F, 25F); @@ -158,5 +166,6 @@ private ToolStripMenuItem турToolStripMenuItem; private ToolStripMenuItem DirectoryReportToolStripMenuItem; private ToolStripMenuItem AddMoneyReportToolStripMenuItem; + private ToolStripMenuItem TableReportToolStripMenuItem; } } diff --git a/project/ProjectTourAgency/FormTourAgency.cs b/project/ProjectTourAgency/FormTourAgency.cs index 3b492a4..119562e 100644 --- a/project/ProjectTourAgency/FormTourAgency.cs +++ b/project/ProjectTourAgency/FormTourAgency.cs @@ -97,4 +97,16 @@ public partial class FormTourAgency : Form MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + private void TableReportToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } diff --git a/project/ProjectTourAgency/Forms/FormExcelReport.cs b/project/ProjectTourAgency/Forms/FormExcelReport.cs index fea29b9..9fb6a51 100644 --- a/project/ProjectTourAgency/Forms/FormExcelReport.cs +++ b/project/ProjectTourAgency/Forms/FormExcelReport.cs @@ -20,11 +20,11 @@ public partial class FormExcelReport : Form public FormExcelReport(IUnityContainer container, ITourRepository tourRepository ) { InitializeComponent(); - container = container ?? + _container = container ?? throw new ArgumentNullException(nameof(container)); comboBoxTour.DataSource = tourRepository.ReadTours(); comboBoxTour.DisplayMember = "iD"; - comboBoxTour.ValueMember = "ID"; + comboBoxTour.ValueMember = "Id"; } diff --git a/project/ProjectTourAgency/Implementations/TourRepository.cs b/project/ProjectTourAgency/Implementations/TourRepository.cs index bedce6b..f0eaf9f 100644 --- a/project/ProjectTourAgency/Implementations/TourRepository.cs +++ b/project/ProjectTourAgency/Implementations/TourRepository.cs @@ -82,10 +82,16 @@ WHERE Id = @id"; try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = @"SELECT * FROM Tour"; - var tour = connection.Query(querySelect); + var querySelect = @" +SELECT t.*, ct.TourId, ct.Cost FROM Tour t +INNER JOIN ClientTour ct ON ct.TourId = t.Id"; + var tour = connection.Query(querySelect); _logger.LogDebug("Получение объектов {json}", JsonConvert.SerializeObject(tour)); - return tour; + return tour.GroupBy( + x => x.Id, y => y, + (key, value) => Tour.CreateEntity(value.First(), + value.Select(z => ClientTour.CreateEntity(0,z.ClientId, z.Id,z.Cost)) + )).ToList(); } catch (Exception ex) { diff --git a/project/ProjectTourAgency/Reports/TableReportcs.cs b/project/ProjectTourAgency/Reports/TableReportcs.cs index 07aedd9..ac4b82a 100644 --- a/project/ProjectTourAgency/Reports/TableReportcs.cs +++ b/project/ProjectTourAgency/Reports/TableReportcs.cs @@ -52,7 +52,7 @@ internal class TableReport endDate) { var data = _tourRepository.ReadTours().Select(x => new { - ClientId = x.ClientTours.FirstOrDefault(y => y.TourId == tourId).ClientId, + ClientId = 73, Date = x.DepartureDate, CountIn = (int?)null, CountOut = (int?)null