From 7c3e544cf83776316e46c62baa329fdc96ad6a7c Mon Sep 17 00:00:00 2001 From: cyxaruk Date: Thu, 5 Dec 2024 16:52:52 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE=202=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=20=D0=B2=D0=BE=D1=80=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Bus.cs | 8 +- .../Entities/BusCheck.cs | 12 +- .../Entities/Employee.cs | 12 +- .../Entities/RouteList.cs | 8 +- .../Entities/StartingShift.cs | 12 +- .../Entities/StartingShift_Employee.cs | 12 +- .../Forms/FormBus.cs | 4 +- .../Forms/FormEmployee.cs | 6 +- .../Forms/FormRouteList.cs | 4 +- .../Forms/FormRouteLists.Designer.cs | 4 + .../Forms/FormStartingShift.cs | 8 +- .../Implementations/BusCheckRepository.cs | 62 ++++++++- .../Implementations/BusRepository.cs | 128 ++++++++++++++++-- .../Implementations/EmployeeRepository.cs | 10 +- .../Implementations/RouteListRepository.cs | 12 +- .../StartingShiftRepository.cs | 59 +++++++- 16 files changed, 288 insertions(+), 73 deletions(-) diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Bus.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Bus.cs index 83d74fe..011447d 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Bus.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Bus.cs @@ -11,17 +11,17 @@ public class Bus { public int ID { get; private set; } - public string BusName { get; private set; } = string.Empty; + public string Bus_Name { get; private set; } = string.Empty; - public string LicensePlate { get; private set; } = string.Empty; + public string Licence_Plate { get; private set; } = string.Empty; public static Bus CreateEntity(int id, string busName, string licensePlate) { return new Bus { ID = id, - BusName = busName, - LicensePlate = licensePlate + Bus_Name = busName, + Licence_Plate = licensePlate }; } } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/BusCheck.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/BusCheck.cs index 50d7db0..8594ff3 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/BusCheck.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/BusCheck.cs @@ -6,23 +6,23 @@ public class BusCheck { public int ID { get; private set; } - public int BusID { get; private set; } + public int Bus_ID { get; private set; } public int Price { get; private set; } - public DateTime DateReceipt { get; private set; } + public DateTime Date { get; private set; } - public BusElementType BusElementType { get; private set; } + public BusElementType Bus_Element_Type { get; private set; } public static BusCheck CreateOperation(int id, int busID, int price, BusElementType busElementType) { return new BusCheck { ID = id, - BusID = busID, + Bus_ID = busID, Price = price, - DateReceipt = DateTime.Now, - BusElementType = busElementType + Date = DateTime.Now, + Bus_Element_Type = busElementType }; } } \ No newline at end of file diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Employee.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Employee.cs index 45724ae..cbb2edc 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Employee.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/Employee.cs @@ -6,21 +6,21 @@ public class Employee { public int ID { get; private set; } - public string FirstName { get; private set; } = string.Empty; + public string First_Name { get; private set; } = string.Empty; - public string LastName { get; private set; } = string.Empty; + public string Last_Name { get; private set; } = string.Empty; - public EmployeePost EmployeePost { get; private set; } + public EmployeePost Post { get; private set; } public static Employee CreateEntity(int id, string first, string last, EmployeePost employeePost) { return new Employee { ID = id, - FirstName = first ?? string.Empty, - LastName = last ?? string.Empty, - EmployeePost = employeePost + First_Name = first ?? string.Empty, + Last_Name = last ?? string.Empty, + Post = employeePost }; } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/RouteList.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/RouteList.cs index e70f59e..717d60c 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/RouteList.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/RouteList.cs @@ -13,17 +13,17 @@ public class RouteList { public int Id { get; private set; } - public string Name { get; private set; } = string.Empty; + public string Route_Name { get; private set; } = string.Empty; - public string Description { get; private set; } = string.Empty; + public string Route_Description { get; private set; } = string.Empty; public static RouteList CreateEntity(int id, string name, string description) { return new RouteList { Id = id, - Name = name ?? string.Empty, - Description = description ?? string.Empty + Route_Name = name ?? string.Empty, + Route_Description = description ?? string.Empty }; } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift.cs index c686230..d2b29a9 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift.cs @@ -12,11 +12,11 @@ public class StartingShift { public int ID { get; private set; } - public int RouteListID { get; private set; } + public int Route_List_ID { get; private set; } - public int BusID { get; private set; } + public int Bus_ID { get; private set; } - public DateTime StartingShiftDate { get; private set; } + public DateTime Starting_Shift_Date { get; private set; } public IEnumerable StartingShiftEmployees { get; private set; } = []; @@ -25,10 +25,10 @@ public class StartingShift return new StartingShift { ID = id, - RouteListID = routeListID, - BusID = busID, + Route_List_ID = routeListID, + Bus_ID = busID, StartingShiftEmployees = startingShiftEmployees, - StartingShiftDate = DateTime.Now, + Starting_Shift_Date = DateTime.Now, }; } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift_Employee.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift_Employee.cs index d4f0ef8..832eb38 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift_Employee.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Entities/StartingShift_Employee.cs @@ -2,19 +2,19 @@ public class StartingShift_Employee { - public int ID { get; private set; } + public int Starting_Shift_ID { get; private set; } - public int EmployeeID { get; private set; } + public int Employee_ID { get; private set; } - public int ShiftDuration { get; private set; } + public int Shift_Duration { get; private set; } public static StartingShift_Employee CreateElement(int id, int employeeID, int shiftDuration) { return new StartingShift_Employee { - ID = id, - EmployeeID = employeeID, - ShiftDuration = shiftDuration + Starting_Shift_ID = id, + Employee_ID = employeeID, + Shift_Duration = shiftDuration }; } } \ No newline at end of file diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormBus.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormBus.cs index 8cacfd2..dcc06a2 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormBus.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormBus.cs @@ -24,8 +24,8 @@ public partial class FormBus : Form throw new InvalidDataException(nameof(bus)); } - textBoxLicensePlate.Text = bus.LicensePlate; - textBoxBusName.Text = bus.BusName; + textBoxLicensePlate.Text = bus.Licence_Plate; + textBoxBusName.Text = bus.Bus_Name; _busId = value; } catch (Exception ex) diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormEmployee.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormEmployee.cs index 33505ed..bb21afe 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormEmployee.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormEmployee.cs @@ -25,9 +25,9 @@ namespace ProjectPeopleTransportation.Forms throw new InvalidDataException(nameof(employee)); } - textBoxFirstName.Text = employee.FirstName; - textBoxLastName.Text = employee.LastName; - comboBoxPost.SelectedItem = employee.EmployeePost; + textBoxFirstName.Text = employee.First_Name; + textBoxLastName.Text = employee.Last_Name; + comboBoxPost.SelectedItem = employee.Post; _employeeId = value; } catch (Exception ex) diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteList.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteList.cs index 854cba0..ec888b3 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteList.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteList.cs @@ -23,8 +23,8 @@ namespace ProjectPeopleTransportation.Forms } - textBoxName.Text = routeList.Name; - textBoxDescription.Text = routeList.Description; + textBoxName.Text = routeList.Route_Name; + textBoxDescription.Text = routeList.Route_Description; _routeListId = value; } catch (Exception ex) diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteLists.Designer.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteLists.Designer.cs index 0ac1019..7590849 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteLists.Designer.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormRouteLists.Designer.cs @@ -83,6 +83,10 @@ // // dataGridViewRoute // + dataGridViewRoute.AllowUserToAddRows = false; + dataGridViewRoute.AllowUserToDeleteRows = false; + dataGridViewRoute.AllowUserToResizeColumns = false; + dataGridViewRoute.AllowUserToResizeRows = false; dataGridViewRoute.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridViewRoute.Dock = DockStyle.Fill; dataGridViewRoute.Location = new Point(0, 0); diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormStartingShift.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormStartingShift.cs index 9f7d2e0..638c003 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormStartingShift.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Forms/FormStartingShift.cs @@ -16,11 +16,11 @@ namespace ProjectPeopleTransportation.Forms throw new ArgumentNullException(nameof(startingShiftRepository)); ColumnEmployees.DataSource = employeeRepository.ReadEmployees(); - ColumnEmployees.DisplayMember = "FirstName"; + ColumnEmployees.DisplayMember = "First_Name"; ColumnEmployees.ValueMember = "Id"; comboBoxBus.DataSource = busRepository.ReadBuses(); - comboBoxBus.DisplayMember = "BusName"; + comboBoxBus.DisplayMember = "Bus_Name"; comboBoxBus.ValueMember = "Id"; comboBoxRoute.DataSource = routeListRepository.ReadRouteLists(); @@ -60,8 +60,8 @@ namespace ProjectPeopleTransportation.Forms var list = new List(); foreach (DataGridViewRow row in dataGridViewEmployees.Rows) { - if (row.Cells["ColumnFeed"].Value == null || - row.Cells["ColumnCount"].Value == null) + if (row.Cells["ColumnEmployees"].Value == null || + row.Cells["ColumnShiftDuration"].Value == null) { continue; } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusCheckRepository.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusCheckRepository.cs index bca9a67..78990ef 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusCheckRepository.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusCheckRepository.cs @@ -1,20 +1,78 @@ -using ProjectPeopleTransportation.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPeopleTransportation.Entities; using ProjectPeopleTransportation.Entities.Enums; namespace ProjectPeopleTransportation.Repositories.Implementations; public class BusCheckRepository : IBusCheckRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public BusCheckRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } public void CreateBusCheck(BusCheck busCheck) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(busCheck)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO bus_check (date, price, bus_id, bus_element_type) +VALUES (@Date, @Price, @Bus_id, @Bus_Element_Type)"; + connection.Execute(queryInsert, busCheck); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteBusCheck(int id) { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM bus_check +WHERE id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public IEnumerable ReadBusCheck(DateTime? dateForm = null, DateTime? dateTo = null, BusElementType BusElementType = BusElementType.None, int? busId = null, int? price = null) { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @"SELECT * FROM bus_check"; + var services = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(services)); + return services; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusRepository.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusRepository.cs index 23ec99d..346a9f5 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusRepository.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/BusRepository.cs @@ -1,29 +1,127 @@ -using ProjectPeopleTransportation.Entities; -using ProjectPeopleTransportation.Entities.Enums; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPeopleTransportation.Entities; +using System; namespace ProjectPeopleTransportation.Repositories.Implementations; public class BusRepository : IBusRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public BusRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateBus(Bus bus) { - } + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(bus)); - public void DeleteBus(int id) - { - } - - public Bus ReadBusByID(int id) - { - return Bus.CreateEntity(0, string.Empty, string.Empty); - } - - public IEnumerable ReadBuses() - { - return []; + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO bus (licence_plate, bus_name) +VALUES (@Licence_Plate, @Bus_Name)"; + connection.Execute(queryInsert, bus); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void UpdateBus(Bus bus) { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(bus)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE bus +SET + licence_plate=@Licence_Plate, + bus_name=@Bus_Name +WHERE id=@ID"; + connection.Execute(queryUpdate, bus); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } } + + public void DeleteBus(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM bus +WHERE id=@ID"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public Bus ReadBusByID(int busId) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", busId); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM bus +WHERE id=@busId"; + var bus = connection.QueryFirst(querySelect, new { busId }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(bus)); + + return bus; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public IEnumerable ReadBuses() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @"SELECT * FROM bus"; + var buses = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(buses)); + return buses; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + } \ No newline at end of file diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/EmployeeRepository.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/EmployeeRepository.cs index e386364..a9c2d39 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/EmployeeRepository.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/EmployeeRepository.cs @@ -28,7 +28,7 @@ public class EmployeeRepository : IEmployeeRepository using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var queryInsert = @" INSERT INTO employee (first_name, last_name, post) -VALUES (@FirstName, @LastName, @EmployeePost)"; +VALUES (@First_Name, @Last_Name, @Post)"; connection.Execute(queryInsert, employee); } catch (Exception ex) @@ -68,7 +68,7 @@ WHERE id=@ID"; using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @" SELECT * FROM employee -WHERE [id]=@ID"; +WHERE id=@ID"; var employee = connection.QueryFirst(querySelect, new { id }); _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(employee)); @@ -110,9 +110,9 @@ WHERE [id]=@ID"; var queryUpdate = @" UPDATE employee SET - first_name=@FirstName, - last_name=@LastName, - post=@EmployeePost + first_name=@First_Name, + last_name=@Last_Name, + post=@Post WHERE id=@ID"; connection.Execute(queryUpdate, employee); } diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/RouteListRepository.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/RouteListRepository.cs index 3ef880f..932c11b 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/RouteListRepository.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/RouteListRepository.cs @@ -28,7 +28,7 @@ public class RouteListRepository : IRouteListRepository using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var queryInsert = @" INSERT INTO route_list (route_name, route_description) -VALUES (@Name, @Description)"; +VALUES (@Route_Name, @Route_Description)"; connection.Execute(queryInsert, routeList); } catch (Exception ex) @@ -48,7 +48,7 @@ VALUES (@Name, @Description)"; using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var queryDelete = @" DELETE FROM route_list -WHERE id=@ID"; +WHERE id=@id"; connection.Execute(queryDelete, new { id }); } catch (Exception ex) @@ -68,7 +68,7 @@ WHERE id=@ID"; using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @" SELECT * FROM route_list -WHERE [id]=@ID"; +WHERE id=@id"; var routeList = connection.QueryFirst(querySelect, new { id }); _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(routeList)); @@ -110,9 +110,9 @@ WHERE [id]=@ID"; var queryUpdate = @" UPDATE route_list SET - route_name=@Name, - route_description=@Description -WHERE id=@ID"; + route_name=@Route_Name, + route_description=@Route_Description +WHERE id=@Id"; connection.Execute(queryUpdate, routeList); } catch (Exception ex) diff --git a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/StartingShiftRepository.cs b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/StartingShiftRepository.cs index ed5ece8..c50d429 100644 --- a/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/StartingShiftRepository.cs +++ b/ProjectPeopleTransportation/ProjectPeopleTransportation/Repositories/Implementations/StartingShiftRepository.cs @@ -1,15 +1,70 @@ -using ProjectPeopleTransportation.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPeopleTransportation.Entities; +using Dapper; + namespace ProjectPeopleTransportation.Repositories.Implementations; public class StartingShiftRepository : IStartingShiftRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public StartingShiftRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateStartingShift(StartingShift startingShift) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(startingShift)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var queryInsert = @" +INSERT INTO starting_shift (starting_shift_date, route_list_id, bus_id) +VALUES (@Starting_Shift_Date, @Route_list_id, @Bus_id); +SELECT MAX(Id) FROM starting_shift"; + var starting_shift_id = connection.QueryFirst(queryInsert, startingShift, transaction); + var querySubInsert = @" +INSERT INTO starting_shift_employee (starting_shift_id, employee_id, shift_duration) +VALUES (@Starting_shift_id, @Employee_id, @Shift_Duration)"; + foreach (var elem in startingShift.StartingShiftEmployees) + { + connection.Execute(querySubInsert, new { starting_shift_id, elem.Employee_ID, elem.Shift_Duration }, transaction); + } + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public IEnumerable ReadStartingShifts(DateTime? dateForm = null, DateTime? dateTo = null, int? employeeId = null, int? busId = null, int? routelistId = null) { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @"SELECT * FROM starting_shift"; + var startingShifts = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(startingShifts)); + return startingShifts; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } \ No newline at end of file