PIbd-21 Ryabov I.V. LabWork04 #4
@ -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)
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace TransportEnterprise.Entities.Enums;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace TransportEnterprise.Entities.Enums;
|
||||
[Flags]
|
||||
public enum BreakDownType
|
||||
{
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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> 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<RouteSheet_Employee> routeSheetEmployees)
|
||||
|
@ -1,4 +1,6 @@
|
||||
namespace TransportEnterprise.Entities;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace TransportEnterprise.Entities;
|
||||
|
||||
public class RouteSheet_Employee
|
||||
{
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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<string[]> 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<string[]>() { item }
|
||||
.Union(
|
||||
data1
|
||||
data
|
||||
.Select(x => new string[] {
|
||||
x.Name.ToString(), x.Date.ToString(), x.Count.ToString()
|
||||
}))
|
||||
|
@ -1,9 +1,9 @@
|
||||
namespace TransportEnterprise.Entities.Repositories;
|
||||
public interface IRouteSheetRepository
|
||||
{
|
||||
IEnumerable<RouteSheet> ReadRouteSheets();
|
||||
IEnumerable<RouteSheet> ReadRouteSheets(DateTime? dateFrom = null, DateTime? dateTo = null);
|
||||
RouteSheet ReadRouteSheeteById(int id);
|
||||
IEnumerable<RouteSheet_Employee> ReadRouteSheets_Employee();
|
||||
IEnumerable<RouteSheet_Employee> ReadRouteSheets_Employee(int? employeeId =null);
|
||||
void CreateRouteSheet(RouteSheet routeSheet);
|
||||
void UpdateRouteSheet(RouteSheet routeSheet);
|
||||
void DeleteRouteSheet(int id);
|
@ -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}";
|
||||
}
|
||||
}
|
@ -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<RepairRequest>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}",
|
||||
JsonConvert.SerializeObject(repairRequests));
|
@ -123,15 +123,43 @@ public class RouteSheetRepository : IRouteSheetRepository
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<RouteSheet> ReadRouteSheets()
|
||||
public IEnumerable<RouteSheet> 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<RouteSheet>(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<RouteSheet>(querySelect, new {dateFrom,dateTo});
|
||||
_logger.LogDebug("Полученные объекты: {json}",
|
||||
JsonConvert.SerializeObject(routeSheets));
|
||||
return routeSheets;
|
||||
@ -143,15 +171,22 @@ public class RouteSheetRepository : IRouteSheetRepository
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<RouteSheet_Employee> ReadRouteSheets_Employee()
|
||||
public IEnumerable<RouteSheet_Employee> 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<RouteSheet_Employee>(querySelect);
|
||||
var querySelect = $@"SELECT rse.*
|
||||
FROM RouteSheet_Employee rse
|
||||
{builder.Build()}";
|
||||
var routeSheets = connection.Query<RouteSheet_Employee>(querySelect, new {employeeId});
|
||||
_logger.LogDebug("Полученные объекты: {json}",
|
||||
JsonConvert.SerializeObject(routeSheets));
|
||||
return routeSheets;
|
Loading…
x
Reference in New Issue
Block a user