diff --git a/TransportEnterprise/TransportEnterprise/Entities/Bus.cs b/TransportEnterprise/TransportEnterprise/Entities/Bus.cs index 6312b94..49aed61 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Bus.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Bus.cs @@ -1,15 +1,24 @@ -using TransportEnterprise.Entities.Enums; +using System.ComponentModel; +using TransportEnterprise.Entities.Enums; namespace TransportEnterprise.Entities; public class Bus { public int Id { get; private set; } + [DisplayName ("Модель")] public string Model { get; private set; } = string.Empty; - public int Capacity { get; private set; } - public string LicensePlate { get; private set; } = string.Empty; + [DisplayName("Бренд")] public string Brand { get; private set; } = string.Empty; + public string BusDisplayName => $"{Brand} {Model} {LicensePlate} "; + [DisplayName("Вместимость")] + public int Capacity { get; private set; } + [DisplayName("Номерной знак")] + public string LicensePlate { get; private set; } = string.Empty; + + [DisplayName("Год выпуска")] public int Year { get; private set; } + [DisplayName("Техническое состояние")] public TechnicalCondition TechnicalCondition { get; private set; } public static Bus CreateBus(int id, string model, int capacity, string licensePlate, string brand, int year, TechnicalCondition technicalCondition) diff --git a/TransportEnterprise/TransportEnterprise/Entities/Employee.cs b/TransportEnterprise/TransportEnterprise/Entities/Employee.cs index d779ff5..11eff15 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Employee.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Employee.cs @@ -1,13 +1,19 @@ -using TransportEnterprise.Entities.Enums; +using DocumentFormat.OpenXml.Wordprocessing; +using System.ComponentModel; +using TransportEnterprise.Entities.Enums; namespace TransportEnterprise.Entities; public class Employee { public int Id { get; private set; } + [DisplayName("ФИО")] public string Name { get; private set; } = string.Empty; + [DisplayName("Табельный номер")] public int Number { get; private set; } + [DisplayName("Должность")] public PositionOfEmployee PositionOfEmployee { get; private set; } + [DisplayName("Номер телефона")] public string PhoneNumber { get; private set; } = string.Empty; public static Employee CreateEmployee(int id, string name, int number, PositionOfEmployee positionOfEmployee, string phoheNumber) { diff --git a/TransportEnterprise/TransportEnterprise/Entities/Enums/BreakDownType.cs b/TransportEnterprise/TransportEnterprise/Entities/Enums/BreakDownType.cs index ebf6302..c3297ef 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Enums/BreakDownType.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Enums/BreakDownType.cs @@ -1,4 +1,6 @@ -namespace TransportEnterprise.Entities.Enums; +using System.ComponentModel.DataAnnotations; + +namespace TransportEnterprise.Entities.Enums; [Flags] public enum BreakDownType { diff --git a/TransportEnterprise/TransportEnterprise/Entities/Enums/PositionOfEmployee.cs b/TransportEnterprise/TransportEnterprise/Entities/Enums/PositionOfEmployee.cs index b773808..718a14e 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Enums/PositionOfEmployee.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Enums/PositionOfEmployee.cs @@ -1,10 +1,16 @@ -namespace TransportEnterprise.Entities.Enums; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace TransportEnterprise.Entities.Enums; public enum PositionOfEmployee { None = 0, + [Display(Name = "Инженер")] Enginer = 1, + [Display(Name = "Кондуктор")] Conductor = 2, + [Display(Name = "Водитель")] Driver = 3, Admin = 4 } diff --git a/TransportEnterprise/TransportEnterprise/Entities/Enums/TechnicalCondition.cs b/TransportEnterprise/TransportEnterprise/Entities/Enums/TechnicalCondition.cs index 2d90866..cc5206c 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Enums/TechnicalCondition.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Enums/TechnicalCondition.cs @@ -1,8 +1,11 @@ -namespace TransportEnterprise.Entities.Enums; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; + +namespace TransportEnterprise.Entities.Enums; public enum TechnicalCondition { None = 0, ReadyToGo = 1, RequiresRepair = 2, - ReadyToGo_NeedsRepair=4 + ReadyToGo_NeedsRepair =4 } diff --git a/TransportEnterprise/TransportEnterprise/Entities/RepairRequest.cs b/TransportEnterprise/TransportEnterprise/Entities/RepairRequest.cs index 3eaca74..5bbf23c 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/RepairRequest.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/RepairRequest.cs @@ -1,14 +1,23 @@ -using TransportEnterprise.Entities.Enums; +using System.ComponentModel; +using TransportEnterprise.Entities.Enums; namespace TransportEnterprise.Entities; public class RepairRequest { public int Id { get; private set; } + [Browsable(false)] public int BusId { get; private set; } + [DisplayName("Тип поломки")] public BreakDownType BreakDownType { get; private set; } + [DisplayName("Дата")] public DateTime DateTime { get; private set; } + [Browsable(false)] public int EmployeeId { get; private set; } + [DisplayName("Автобус")] + public string BusName { get; private set; } = string.Empty; + [DisplayName("Сотрудник")] + public string EmployeeName { get; private set; } = string.Empty; public static RepairRequest CreateRepairRequest(int id, int busId, BreakDownType breakDownType, DateTime dateTime, int employeeId) { return new RepairRequest diff --git a/TransportEnterprise/TransportEnterprise/Entities/Route.cs b/TransportEnterprise/TransportEnterprise/Entities/Route.cs index 8de472f..86db215 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Route.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/Route.cs @@ -1,11 +1,18 @@ -namespace TransportEnterprise.Entities; +using System.ComponentModel; + +namespace TransportEnterprise.Entities; public class Route { public int Id { get; private set; } + [DisplayName("Название")] public string Name { get; private set; } = string.Empty; + [DisplayName("Номер")] public int Number { get; private set; } + public string RouteDisplayName => $"{Number} {Name}"; + [DisplayName("Интервал движения")] public int Interval { get; private set; } + [DisplayName("График движения")] public string Schedule { get; private set; } = string.Empty; public static Route CreateRoute (int id, string name, int number, int interval, string schedule) { diff --git a/TransportEnterprise/TransportEnterprise/Entities/RouteSheet.cs b/TransportEnterprise/TransportEnterprise/Entities/RouteSheet.cs index 87510ab..50cc178 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/RouteSheet.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/RouteSheet.cs @@ -1,13 +1,26 @@  +using System.ComponentModel; + namespace TransportEnterprise.Entities; public class RouteSheet { public int Id { get; private set; } + [DisplayName("Дата")] public DateTime DateTime { get; private set; } + [Browsable(false)] public int BusId { get; private set; } + [Browsable (false)] public int RouteId { get; private set; } + [Browsable(false)] public IEnumerable RouteSheet_Employee { get; private set; } = []; + [DisplayName("Сотрудник")] + public string Employee { get; private set; } = string.Empty; + [DisplayName("Автобус")] + public string BusName { get; private set; } = string.Empty; + [DisplayName("Маршрут")] + public string RouteName { get; private set; } = string.Empty; + public static RouteSheet CreateRouteSheet(int id, DateTime dateTime, int bus, int route, IEnumerable routeSheetEmployees) diff --git a/TransportEnterprise/TransportEnterprise/Entities/RouteSheet_Employee.cs b/TransportEnterprise/TransportEnterprise/Entities/RouteSheet_Employee.cs index ba5cabf..399de30 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/RouteSheet_Employee.cs +++ b/TransportEnterprise/TransportEnterprise/Entities/RouteSheet_Employee.cs @@ -1,4 +1,6 @@ -namespace TransportEnterprise.Entities; +using System.ComponentModel; + +namespace TransportEnterprise.Entities; public class RouteSheet_Employee { diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.Designer.cs b/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.Designer.cs index cd6b470..d8bcc9b 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.Designer.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.Designer.cs @@ -52,14 +52,14 @@ dataGridView.RowHeadersVisible = false; dataGridView.RowHeadersWidth = 62; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(1113, 832); + dataGridView.Size = new Size(1661, 832); dataGridView.TabIndex = 3; // // panel1 // panel1.Controls.Add(buttonAdd); panel1.Dock = DockStyle.Right; - panel1.Location = new Point(1119, 0); + panel1.Location = new Point(1667, 0); panel1.Name = "panel1"; panel1.Size = new Size(194, 832); panel1.TabIndex = 2; @@ -79,7 +79,7 @@ // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1313, 832); + ClientSize = new Size(1861, 832); Controls.Add(dataGridView); Controls.Add(panel1); Name = "FormAddingRouteSheet"; diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.cs b/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.cs index 23febeb..0072ac4 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormAddingRouteSheet.cs @@ -43,19 +43,9 @@ public partial class FormAddingRouteSheet : Form } private void LoadList() { var data = _routeSheetRepository.ReadRouteSheets(); - var data1 = _routeSheetRepository.ReadRouteSheets_Employee(); - var filteredData = data.Select(rs => new - { - - rs.Id, - rs.BusId, - rs.RouteId, - + dataGridView.DataSource = data; + dataGridView.Columns["Id"].Visible = false; - }).ToList(); - - dataGridView.DataSource = filteredData; - } } diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormBuses.cs b/TransportEnterprise/TransportEnterprise/Forms/FormBuses.cs index d555f11..d92c375 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormBuses.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormBuses.cs @@ -90,7 +90,11 @@ namespace TransportEnterprise.Forms } - private void LoadList() => dataGridView.DataSource = _busRepository.ReadBuses(); + private void LoadList() { + dataGridView.DataSource = _busRepository.ReadBuses(); + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["BusDisplayName"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormEmployees.cs b/TransportEnterprise/TransportEnterprise/Forms/FormEmployees.cs index be07924..a48cbc3 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormEmployees.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormEmployees.cs @@ -75,7 +75,11 @@ public partial class FormEmployees : Form MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void LoadList() => dataGridView.DataSource = _employeeRepository.ReadEmployees(); + private void LoadList() + { + dataGridView.DataSource = _employeeRepository.ReadEmployees(); + dataGridView.Columns["Id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.Designer.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.Designer.cs index d8e60e9..6639d1d 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.Designer.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.Designer.cs @@ -66,7 +66,7 @@ comboBoxBus.FormattingEnabled = true; comboBoxBus.Location = new Point(242, 35); comboBoxBus.Name = "comboBoxBus"; - comboBoxBus.Size = new Size(300, 33); + comboBoxBus.Size = new Size(350, 33); comboBoxBus.TabIndex = 17; // // comboBoxEmployee @@ -75,14 +75,14 @@ comboBoxEmployee.FormattingEnabled = true; comboBoxEmployee.Location = new Point(242, 363); comboBoxEmployee.Name = "comboBoxEmployee"; - comboBoxEmployee.Size = new Size(300, 33); + comboBoxEmployee.Size = new Size(350, 33); comboBoxEmployee.TabIndex = 15; // // dateTimePicker // dateTimePicker.Location = new Point(242, 276); dateTimePicker.Name = "dateTimePicker"; - dateTimePicker.Size = new Size(300, 31); + dateTimePicker.Size = new Size(350, 31); dateTimePicker.TabIndex = 14; // // labelBus @@ -126,7 +126,7 @@ checkedListBoxBreakDownType.FormattingEnabled = true; checkedListBoxBreakDownType.Location = new Point(242, 114); checkedListBoxBreakDownType.Name = "checkedListBoxBreakDownType"; - checkedListBoxBreakDownType.Size = new Size(300, 144); + checkedListBoxBreakDownType.Size = new Size(350, 144); checkedListBoxBreakDownType.TabIndex = 21; // // FormRepairRequest diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.cs index 6ccafa4..126011d 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequest.cs @@ -14,7 +14,7 @@ public partial class FormRepairRequest : Form InitializeComponent(); _repairRequestRepository = repairRequestRepository ?? throw new ArgumentNullException(nameof(repairRequestRepository)); comboBoxBus.DataSource = busRepository.ReadBuses(); - comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.DisplayMember = "BusDisplayName"; comboBoxBus.ValueMember = "Id"; comboBoxEmployee.DataSource = employeeRepository.ReadEmployees(); diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.Designer.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.Designer.cs index 24550c6..cedf27f 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.Designer.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.Designer.cs @@ -52,14 +52,14 @@ dataGridView.RowHeadersVisible = false; dataGridView.RowHeadersWidth = 62; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(1091, 894); + dataGridView.Size = new Size(1306, 894); dataGridView.TabIndex = 5; // // panel1 // panel1.Controls.Add(buttonAdd); panel1.Dock = DockStyle.Right; - panel1.Location = new Point(1091, 0); + panel1.Location = new Point(1306, 0); panel1.Name = "panel1"; panel1.Size = new Size(187, 894); panel1.TabIndex = 4; @@ -79,7 +79,7 @@ // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1278, 894); + ClientSize = new Size(1493, 894); Controls.Add(dataGridView); Controls.Add(panel1); Name = "FormRepairRequests"; diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.cs index 39d4ba7..bcf629c 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRepairRequests.cs @@ -36,8 +36,13 @@ namespace TransportEnterprise.Forms MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - - private void LoadList() => dataGridView.DataSource = _repairRequestRepository.ReadRepairRequests(); + + private void LoadList() + { + dataGridView.DataSource = _repairRequestRepository.ReadRepairRequests(); + dataGridView.Columns["DateTime"].DefaultCellStyle.Format = "dd.MM.yyyy"; + dataGridView.Columns["Id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheet.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheet.cs index 7eac303..f4ad6cd 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheet.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheet.cs @@ -12,7 +12,7 @@ public partial class FormRouteSheet : Form InitializeComponent(); _routeSheetRepository = routeSheetRepository ?? throw new ArgumentNullException(nameof(routeSheetRepository)); comboBoxRoute.DataSource = routeRepository.ReadRoutes(); - comboBoxRoute.DisplayMember = "Name"; + comboBoxRoute.DisplayMember = "RouteDisplayName"; comboBoxRoute.ValueMember = "Id"; ColumnName.DataSource = employeeRepository.ReadEmployees(); @@ -21,7 +21,7 @@ public partial class FormRouteSheet : Form comboBoxBus.DataSource = busRepository.ReadBuses(); - comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.DisplayMember = "BusDisplayName"; comboBoxBus.ValueMember = "Id"; } private void buttonSave_Click(object sender, EventArgs e) diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeeReport.Designer.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeeReport.Designer.cs index c7b39e4..7e4c865 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeeReport.Designer.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeeReport.Designer.cs @@ -127,7 +127,7 @@ buttonMakeReport.UseVisualStyleBackColor = true; buttonMakeReport.Click += buttonMakeReport_Click; // - // RouteSheetEmployeeReport + // FormRouteSheetEmployeeReport // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; @@ -142,8 +142,8 @@ Controls.Add(labelStartDate); Controls.Add(labelEmployee); Controls.Add(labelSelectFile); - Name = "RouteSheetEmployeeReport"; - Text = "RouteSheetEmployeeReport"; + Name = "FormRouteSheetEmployeeReport"; + Text = "Отчёт по работникам"; ResumeLayout(false); PerformLayout(); } diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeesDistributionReport.Designer.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeesDistributionReport.Designer.cs index dd1b365..d80adc7 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeesDistributionReport.Designer.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRouteSheetEmployeesDistributionReport.Designer.cs @@ -80,7 +80,7 @@ buttonCreate.UseVisualStyleBackColor = true; buttonCreate.Click += buttonCreate_Click; // - // RouteSheetEmployeesDistributionReport + // FormRouteSheetEmployeesDistributionReport // AutoScaleDimensions = new SizeF(10F, 25F); AutoScaleMode = AutoScaleMode.Font; @@ -90,8 +90,8 @@ Controls.Add(labelDate); Controls.Add(labelFileName); Controls.Add(buttonSelectFileName); - Name = "RouteSheetEmployeesDistributionReport"; - Text = "RouteSheetEmployeesDistributionReport"; + Name = "FormRouteSheetEmployeesDistributionReport"; + Text = "Отчёт по среди работников"; ResumeLayout(false); PerformLayout(); } diff --git a/TransportEnterprise/TransportEnterprise/Forms/FormRoutes.cs b/TransportEnterprise/TransportEnterprise/Forms/FormRoutes.cs index 36504d1..fdd7fa5 100644 --- a/TransportEnterprise/TransportEnterprise/Forms/FormRoutes.cs +++ b/TransportEnterprise/TransportEnterprise/Forms/FormRoutes.cs @@ -75,7 +75,12 @@ public partial class FormRoutes : Form MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void LoadList() => dataGridView.DataSource = _routeRepository.ReadRoutes(); + private void LoadList() + { + dataGridView.DataSource = _routeRepository.ReadRoutes(); + dataGridView.Columns["Id"].Visible = false; + dataGridView.Columns["RouteDisplayName"].Visible=false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/TransportEnterprise/TransportEnterprise/Reports/ChartReport.cs b/TransportEnterprise/TransportEnterprise/Reports/ChartReport.cs index baba23a..03aaec9 100644 --- a/TransportEnterprise/TransportEnterprise/Reports/ChartReport.cs +++ b/TransportEnterprise/TransportEnterprise/Reports/ChartReport.cs @@ -23,7 +23,7 @@ internal class ChartReport { new PdfBuilder(filePath) .AddHeader("Рейсы работников") - .AddPieChart("Работники", GetData(dateTime)) + .AddPieChart($"Работники { dateTime:dd MMMM yyyy}", GetData(dateTime)) .Build(); return true; } @@ -36,8 +36,7 @@ internal class ChartReport private List<(string Caption, double Value)> GetData(DateTime dateTime) { - var routeSheets = _routeSheetRepository.ReadRouteSheets() - .Where(x => x.DateTime.Date == dateTime.Date) .ToList(); + var routeSheets = _routeSheetRepository.ReadRouteSheets(dateFrom:dateTime).ToList(); var routeSheetEmployees = _routeSheetRepository.ReadRouteSheets_Employee(); diff --git a/TransportEnterprise/TransportEnterprise/Reports/TableReport.cs b/TransportEnterprise/TransportEnterprise/Reports/TableReport.cs index 446aab4..ce659d1 100644 --- a/TransportEnterprise/TransportEnterprise/Reports/TableReport.cs +++ b/TransportEnterprise/TransportEnterprise/Reports/TableReport.cs @@ -25,7 +25,7 @@ internal class TableReport var data = GetData(employeeId, startDate, endDate); new ExcelBuilder(filePath) .AddHeader("Сводка по движению рейсов", 0, 2) - .AddParagraph("за период", 0) + .AddParagraph($"за период c {startDate: dd MMMM yyyy} по {endDate: dd MMMM yyyy}", 0) .AddTable([10, 15, 15], data) .Build(); return true; @@ -39,17 +39,15 @@ internal class TableReport private List GetData(int employeeId, DateTime startDate, DateTime endDate) { - var routeSheets = _routeSheetRepository.ReadRouteSheets() - .Where(x => x.DateTime >= startDate && x.DateTime <= endDate) + var routeSheets = _routeSheetRepository.ReadRouteSheets(dateFrom:startDate, dateTo:endDate) .ToList(); - var routeSheetEmployees = _routeSheetRepository.ReadRouteSheets_Employee() - .Where(x => x.EmployeeId == employeeId) + var routeSheetEmployees = _routeSheetRepository.ReadRouteSheets_Employee(employeeId:employeeId) .ToList(); var Employee = _employeeRepository.ReadEmployeeById(employeeId); - var data1 = from x in routeSheets + var data = from x in routeSheets join y in routeSheetEmployees on x.Id equals y.RouteSheetId select new { @@ -58,7 +56,7 @@ internal class TableReport Count = y.Count }; - var groupedData = data1 + var groupedData = data .GroupBy(x => new { x.Name, x.Date }) .Select(g => new { @@ -73,7 +71,7 @@ internal class TableReport var result = new List() { item } .Union( - data1 + data .Select(x => new string[] { x.Name.ToString(), x.Date.ToString(), x.Count.ToString() })) diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IBusRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/IBusRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IBusRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IBusRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IConnectionString.cs b/TransportEnterprise/TransportEnterprise/Repositories/IConnectionString.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IConnectionString.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IConnectionString.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IEmployeeRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/IEmployeeRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IEmployeeRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IEmployeeRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IRepairRequestRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/IRepairRequestRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IRepairRequestRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IRepairRequestRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IRouteRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/IRouteRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IRouteRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IRouteRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IRouteSheetRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/IRouteSheetRepository.cs similarity index 60% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/IRouteSheetRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/IRouteSheetRepository.cs index 3c5b06a..d6aa300 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Repositories/IRouteSheetRepository.cs +++ b/TransportEnterprise/TransportEnterprise/Repositories/IRouteSheetRepository.cs @@ -1,9 +1,9 @@ namespace TransportEnterprise.Entities.Repositories; public interface IRouteSheetRepository { - IEnumerable ReadRouteSheets(); + IEnumerable ReadRouteSheets(DateTime? dateFrom = null, DateTime? dateTo = null); RouteSheet ReadRouteSheeteById(int id); - IEnumerable ReadRouteSheets_Employee(); + IEnumerable ReadRouteSheets_Employee(int? employeeId =null); void CreateRouteSheet(RouteSheet routeSheet); void UpdateRouteSheet(RouteSheet routeSheet); void DeleteRouteSheet(int id); diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/BusRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/BusRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/BusRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/BusRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/ConnectionString.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/ConnectionString.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/ConnectionString.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/ConnectionString.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/EmployeeRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/EmployeeRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/EmployeeRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/EmployeeRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Repositories/Implementations/QueryBuilder.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/QueryBuilder.cs new file mode 100644 index 0000000..a8d1cac --- /dev/null +++ b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/QueryBuilder.cs @@ -0,0 +1,26 @@ +using System.Text; +internal class QueryBuilder +{ + private readonly StringBuilder _builder; + public QueryBuilder() + { + _builder = new(); + } + public QueryBuilder AddCondition(string condition) + { + if (_builder.Length > 0) + { + _builder.Append(" AND "); + } + _builder.Append(condition); + return this; + } + public string Build() + { + if (_builder.Length == 0) + { + return string.Empty; + } + return $"WHERE {_builder}"; + } +} \ No newline at end of file diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RepairRequestRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/RepairRequestRepository.cs similarity index 89% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RepairRequestRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/RepairRequestRepository.cs index dbaea0a..ca22248 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RepairRequestRepository.cs +++ b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/RepairRequestRepository.cs @@ -68,7 +68,15 @@ public class RepairRequestRepository : IRepairRequestRepository { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM RepairRequest"; + var querySelect = + @"SELECT + rr.*, + CONCAT(b.Brand, ' ', b.Model, ' ', b.LicensePlate) as BusName, + e.name as EmployeeName + FROM RepairRequest rr + LEFT JOIN Employee e ON e.Id = rr.EmployeeId + LEFT JOIN Bus b ON b.Id = rr.BusId + "; var repairRequests = connection.Query(querySelect); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(repairRequests)); diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RouteRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/RouteRepository.cs similarity index 100% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RouteRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/RouteRepository.cs diff --git a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RouteSheetRepository.cs b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/RouteSheetRepository.cs similarity index 76% rename from TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RouteSheetRepository.cs rename to TransportEnterprise/TransportEnterprise/Repositories/Implementations/RouteSheetRepository.cs index 1c39cee..e60f9ab 100644 --- a/TransportEnterprise/TransportEnterprise/Entities/Repositories/Implementations/RouteSheetRepository.cs +++ b/TransportEnterprise/TransportEnterprise/Repositories/Implementations/RouteSheetRepository.cs @@ -123,15 +123,43 @@ public class RouteSheetRepository : IRouteSheetRepository } } - public IEnumerable ReadRouteSheets() + public IEnumerable ReadRouteSheets(DateTime? dateFrom = null, DateTime? dateTo =null) { _logger.LogInformation("Получение всех объектов"); try { + var builder = new QueryBuilder(); + if (dateFrom.HasValue && !dateTo.HasValue) + { + builder.AddCondition("rs.DateTime >= @dateFrom"); + builder.AddCondition("rs.DateTime <= @dateTo"); + dateFrom = dateFrom.Value.Date; + dateTo = dateFrom.Value.Date.AddDays(1); + } + else if (dateFrom.HasValue) + { + builder.AddCondition("rs.DateTime >= @dateFrom"); + } + if (dateTo.HasValue) + { + builder.AddCondition("rs.DateTime <= @dateTo"); + } + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM RouteSheet"; - var routeSheets = connection.Query(querySelect); + var querySelect = $@"SELECT + rs.*, + CONCAT(b.Brand, ' ', b.Model, ' ', b.LicensePlate) as BusName, + CONCAT(r.Number, ' ', r.Name) as RouteName, + CONCAT(e.Name, ' ', rse.Count, ' рейсов') as Employee + FROM RouteSheet rs + LEFT JOIN RouteSheet_Employee rse ON rse.RouteSheetId = rs.Id + LEFT JOIN Employee e ON e.Id = rse.EmployeeId + LEFT JOIN Bus b ON b.Id = rs.BusId + LEFT JOIN Route r ON r.Id = rs.RouteId + {builder.Build()}"; + + var routeSheets = connection.Query(querySelect, new {dateFrom,dateTo}); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(routeSheets)); return routeSheets; @@ -143,15 +171,22 @@ public class RouteSheetRepository : IRouteSheetRepository } } - public IEnumerable ReadRouteSheets_Employee() + public IEnumerable ReadRouteSheets_Employee(int? employeeId = null) { _logger.LogInformation("Получение всех объектов"); try { + var builder = new QueryBuilder(); + if (employeeId.HasValue) + { + builder.AddCondition("rse.EmployeeId = @employeeId"); + } using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM RouteSheet_Employee"; - var routeSheets = connection.Query(querySelect); + var querySelect = $@"SELECT rse.* + FROM RouteSheet_Employee rse + {builder.Build()}"; + var routeSheets = connection.Query(querySelect, new {employeeId}); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(routeSheets)); return routeSheets;