From 8f35937785ba5ed2bc128d4ecca4de40f0345498 Mon Sep 17 00:00:00 2001 From: sheymuh Date: Wed, 20 Nov 2024 12:12:55 +0400 Subject: [PATCH 1/4] =?UTF-8?q?=D0=BD=D0=B5=20=D1=81=D0=BE=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectPassengerTransportation/Program.cs | 21 +++ .../ProjectPassengerTransportation.csproj | 18 +++ .../Repositories/IConnectionString.cs | 6 + .../Implementations/BusRepository.cs | 129 +++++++++++++++--- .../Implementations/ConnectionString.cs | 6 + .../appsettings.json | 15 ++ 6 files changed, 177 insertions(+), 18 deletions(-) create mode 100644 ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IConnectionString.cs create mode 100644 ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/ConnectionString.cs create mode 100644 ProjectPassengerTransportation/ProjectPassengerTransportation/appsettings.json diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs index ca70ad9..6687270 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs @@ -2,6 +2,10 @@ using ProjectPassengerTransportation.Repositories.Implementations; using ProjectPassengerTransportation.Repositories; using Unity.Lifetime; using Unity; +using Unity.Microsoft.Logging; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Serilog; namespace ProjectPassengerTransportation { @@ -23,13 +27,30 @@ namespace ProjectPassengerTransportation { var container = new UnityContainer(); + container.AddExtension(new LoggingExtension(CreateLoggerFactory())); + container.RegisterType(new TransientLifetimeManager()); container.RegisterType(new TransientLifetimeManager()); container.RegisterType(new TransientLifetimeManager()); container.RegisterType(new TransientLifetimeManager()); container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + return container; } + + private static LoggerFactory CreateLoggerFactory() + { + var loggerFactory = new LoggerFactory(); + loggerFactory.AddSerilog(new LoggerConfiguration() + .ReadFrom.Configuration(new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build()) + .CreateLogger()); + + return loggerFactory; + } } } \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj b/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj index accbdf0..ebed082 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj @@ -9,7 +9,19 @@ + + + + + + + + + + + + @@ -27,4 +39,10 @@ + + + PreserveNewest + + + \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IConnectionString.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IConnectionString.cs new file mode 100644 index 0000000..fbb4f20 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IConnectionString.cs @@ -0,0 +1,6 @@ +namespace ProjectPassengerTransportation.Repositories; + +public interface IConnectionString +{ + public string ConnectionString { get; } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs index 1cbd805..ef43286 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs @@ -1,32 +1,125 @@ -using ProjectPassengerTransportation.Entities; -using ProjectPassengerTransportation.Entities.Enums; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPassengerTransportation.Entities; +using System.Data.SqlClient; namespace ProjectPassengerTransportation.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 busId) - { - return Bus.CreateEntity(0, string.Empty, BusType.None); - } - - public IEnumerable ReadBuses() - { - return []; + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO bus (licence_plate, bus_type_id) +VALUES (@LicencePlate, @Type)"; + 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=@LicencePlate, + bus_type_id=@Type +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 id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM bus +WHERE [id]=@id"; + var bus = connection.QueryFirst(querySelect, new { id }); + _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; + } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/ConnectionString.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/ConnectionString.cs new file mode 100644 index 0000000..4cf0121 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/ConnectionString.cs @@ -0,0 +1,6 @@ +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class ConnectionString : IConnectionString +{ + string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=passanger_transportation"; +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/appsettings.json b/ProjectPassengerTransportation/ProjectPassengerTransportation/appsettings.json new file mode 100644 index 0000000..dc6a759 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/appsettings.json @@ -0,0 +1,15 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Debug", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/passenger_transportation_log.txt", + "rollingInterval": "Day" + } + } + ] + } +} \ No newline at end of file -- 2.25.1 From 07835de7ef9adbc154c4056757da1770c8fedbb1 Mon Sep 17 00:00:00 2001 From: sheymuh Date: Wed, 20 Nov 2024 12:31:41 +0400 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D0=B5=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Bus.cs | 6 +++--- .../Entities/Enums/BusType.cs | 10 ---------- .../Forms/FormBus.Designer.cs | 19 +++++++++---------- .../Forms/FormBus.cs | 7 +++---- 4 files changed, 15 insertions(+), 27 deletions(-) delete mode 100644 ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs index b0166a1..ed89d0c 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs @@ -8,15 +8,15 @@ public class Bus public string LicensePlate { get; private set; } = string.Empty; - public BusType Type { get; private set; } + public string Model { get; private set; } = string.Empty; - public static Bus CreateEntity(int id, string licensePlate, BusType type) + public static Bus CreateEntity(int id, string licensePlate, string model) { return new Bus { Id = id, LicensePlate = licensePlate, - Type = type + Model = model }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs deleted file mode 100644 index 847aaec..0000000 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectPassengerTransportation.Entities.Enums; - -public enum BusType -{ - None = 0, - - Bus = 1, - - Minibus = 2 -} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs index d1e31f3..943e85e 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs @@ -33,7 +33,7 @@ labelBusTypeName = new Label(); buttonSave = new Button(); buttonCancel = new Button(); - comboBoxBusType = new ComboBox(); + textBoxModel = new TextBox(); SuspendLayout(); // // labelLicensePlate @@ -84,21 +84,20 @@ buttonCancel.UseVisualStyleBackColor = true; buttonCancel.Click += ButtonCancel_Click; // - // comboBoxBusType + // textBoxModel // - comboBoxBusType.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxBusType.FormattingEnabled = true; - comboBoxBusType.Location = new Point(231, 96); - comboBoxBusType.Name = "comboBoxBusType"; - comboBoxBusType.Size = new Size(240, 38); - comboBoxBusType.TabIndex = 8; + textBoxModel.Location = new Point(231, 96); + textBoxModel.MaxLength = 10; + textBoxModel.Name = "textBoxModel"; + textBoxModel.Size = new Size(240, 35); + textBoxModel.TabIndex = 8; // // FormBus // AutoScaleDimensions = new SizeF(12F, 30F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(506, 226); - Controls.Add(comboBoxBusType); + Controls.Add(textBoxModel); Controls.Add(buttonCancel); Controls.Add(buttonSave); Controls.Add(labelBusTypeName); @@ -118,6 +117,6 @@ private Label labelBusTypeName; private Button buttonSave; private Button buttonCancel; - private ComboBox comboBoxBusType; + private TextBox textBoxModel; } } \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs index de4146e..2034708 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs @@ -23,7 +23,7 @@ namespace ProjectPassengerTransportation.Forms } textBoxLicensePlate.Text = bus.LicensePlate; - comboBoxBusType.SelectedItem = bus.Type; + comboBoxBusType.SelectedItem = bus.Model; _busId = value; } catch (Exception ex) @@ -38,14 +38,13 @@ namespace ProjectPassengerTransportation.Forms { InitializeComponent(); _busRepository = busRepository ?? throw new ArgumentNullException(nameof(busRepository)); - comboBoxBusType.DataSource = Enum.GetValues(typeof(BusType)); } private void ButtonSave_Click(object sender, EventArgs e) { try { - if (string.IsNullOrWhiteSpace(textBoxLicensePlate.Text) || comboBoxBusType.SelectedIndex < 1) + if (string.IsNullOrWhiteSpace(textBoxLicensePlate.Text) || string.IsNullOrWhiteSpace(textBoxModel.Text)) { throw new Exception("Имеются незаполненные поля"); } @@ -69,6 +68,6 @@ namespace ProjectPassengerTransportation.Forms private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - private Bus CreateBus(int id) => Bus.CreateEntity(id, textBoxLicensePlate.Text, (BusType)comboBoxBusType.SelectedItem!); + private Bus CreateBus(int id) => Bus.CreateEntity(id, textBoxLicensePlate.Text, textBoxModel.Text); } } -- 2.25.1 From 7110647bdd10fe132d3d9801aeafdcaab162762a Mon Sep 17 00:00:00 2001 From: sheymuh Date: Thu, 28 Nov 2024 19:38:11 +0400 Subject: [PATCH 3/4] =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=B0=202=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/Bus.cs | 6 +- .../Entities/Employee.cs | 8 +- .../Entities/GoToService.cs | 8 +- .../Entities/RouteList.cs | 10 +- .../Entities/StartingShift.cs | 12 +- .../Entities/StartingShiftEmployee.cs | 14 +- .../Forms/FormBus.Designer.cs | 38 +++--- .../Forms/FormBus.cs | 9 +- .../Forms/FormEmployee.cs | 4 +- .../Forms/FormGoToService.Designer.cs | 1 + .../Forms/FormGoToService.cs | 2 +- .../Forms/FormRouteList.cs | 12 +- .../Forms/FormStartingShift.cs | 8 +- .../Forms/FormStartingShifts.Designer.cs | 8 +- .../Implementations/BusRepository.cs | 21 ++- .../Implementations/EmployeeRepository.cs | 129 +++++++++++++++--- .../Implementations/GoToServiceRepository.cs | 68 ++++++++- .../Implementations/RouteListRepository.cs | 128 ++++++++++++++--- .../StartingShiftRepository.cs | 57 +++++++- 19 files changed, 420 insertions(+), 123 deletions(-) diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs index ed89d0c..ce1e3f1 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs @@ -6,16 +6,16 @@ public class Bus { public int Id { get; private set; } - public string LicensePlate { get; private set; } = string.Empty; + public string Licence_plate { get; private set; } = string.Empty; public string Model { get; private set; } = string.Empty; - public static Bus CreateEntity(int id, string licensePlate, string model) + public static Bus CreateEntity(int id, string licencePlate, string model) { return new Bus { Id = id, - LicensePlate = licensePlate, + Licence_plate = licencePlate, Model = model }; } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs index 43cdf5f..204e90c 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs @@ -6,9 +6,9 @@ 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 Post { get; private set; } @@ -17,8 +17,8 @@ public class Employee return new Employee { Id = id, - FirstName = first ?? string.Empty, - LastName = last ?? string.Empty, + First_name = first ?? string.Empty, + Last_name = last ?? string.Empty, Post = post }; } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs index 1b56cec..048b1c1 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs @@ -8,11 +8,11 @@ public class GoToService public DateTime Date { get; private set; } - public BrokenElements BrokenElements { get; private set; } + public BrokenElements Broken_elements { get; private set; } public int Price { get; private set; } - public int BusId { get; private set; } + public int Bus_id { get; private set; } public static GoToService CreateOperation(int id, BrokenElements brokenElements, int price, int busId) { @@ -20,9 +20,9 @@ public class GoToService { Id = id, Date = DateTime.Now, - BrokenElements = brokenElements, + Broken_elements = brokenElements, Price = price, - BusId = busId + Bus_id = busId }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs index 65b8e3c..8980798 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs @@ -4,17 +4,17 @@ public class RouteList { public int Id { get; private set; } - public TimeOnly Start { get; private set; } + public TimeSpan Route_start { get; private set; } - public TimeOnly Finish { get; private set; } + public TimeSpan Route_finish { get; private set; } - public static RouteList CreateEntity(int id, TimeOnly start, TimeOnly finish) + public static RouteList CreateEntity(int id, TimeSpan start, TimeSpan finish) { return new RouteList { Id = id, - Start = start, - Finish = finish + Route_start = start, + Route_finish = finish }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs index cfd130e..7aa4dcf 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs @@ -6,11 +6,11 @@ public class StartingShift public DateTime Date { 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 IEnumerable StartingShiftEmployees { get; private set; } = []; + public IEnumerable Starting_shift_employees { get; private set; } = []; public static StartingShift CreateOperation(int id, int routeListId, int busId, IEnumerable startingShiftEmployees) @@ -19,9 +19,9 @@ public class StartingShift { Id = id, Date = DateTime.Now, - RouteListId = routeListId, - BusId = busId, - StartingShiftEmployees = startingShiftEmployees + Route_list_id = routeListId, + Bus_id = busId, + Starting_shift_employees = startingShiftEmployees }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs index f1735ba..ce5668b 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs @@ -2,19 +2,19 @@ public class StartingShiftEmployee { - public int StartingShiftId { 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 WorkHours { get; private set; } + public int Work_time { get; private set; } - public static StartingShiftEmployee CreateElement(int startingShiftId, int employeeId, int workHours) + public static StartingShiftEmployee CreateElement(int startingShiftId, int employeeId, int workTime) { return new StartingShiftEmployee { - StartingShiftId = startingShiftId, - EmployeeId = employeeId, - WorkHours = workHours + Starting_shift_id = startingShiftId, + Employee_id = employeeId, + Work_time = workTime }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs index 943e85e..bf1a6ef 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs @@ -28,30 +28,30 @@ /// private void InitializeComponent() { - labelLicensePlate = new Label(); - textBoxLicensePlate = new TextBox(); + labelLicencePlate = new Label(); + textBoxLicencePlate = new TextBox(); labelBusTypeName = new Label(); buttonSave = new Button(); buttonCancel = new Button(); textBoxModel = new TextBox(); SuspendLayout(); // - // labelLicensePlate + // labelLicencePlate // - labelLicensePlate.AutoSize = true; - labelLicensePlate.Location = new Point(27, 34); - labelLicensePlate.Name = "labelLicensePlate"; - labelLicensePlate.Size = new Size(107, 30); - labelLicensePlate.TabIndex = 0; - labelLicensePlate.Text = "Госномер"; + labelLicencePlate.AutoSize = true; + labelLicencePlate.Location = new Point(27, 34); + labelLicencePlate.Name = "labelLicencePlate"; + labelLicencePlate.Size = new Size(107, 30); + labelLicencePlate.TabIndex = 0; + labelLicencePlate.Text = "Госномер"; // - // textBoxLicensePlate + // textBoxLicencePlate // - textBoxLicensePlate.Location = new Point(231, 31); - textBoxLicensePlate.MaxLength = 10; - textBoxLicensePlate.Name = "textBoxLicensePlate"; - textBoxLicensePlate.Size = new Size(240, 35); - textBoxLicensePlate.TabIndex = 1; + textBoxLicencePlate.Location = new Point(231, 31); + textBoxLicencePlate.MaxLength = 10; + textBoxLicencePlate.Name = "textBoxLicencePlate"; + textBoxLicencePlate.Size = new Size(240, 35); + textBoxLicencePlate.TabIndex = 1; // // labelBusTypeName // @@ -101,8 +101,8 @@ Controls.Add(buttonCancel); Controls.Add(buttonSave); Controls.Add(labelBusTypeName); - Controls.Add(textBoxLicensePlate); - Controls.Add(labelLicensePlate); + Controls.Add(textBoxLicencePlate); + Controls.Add(labelLicencePlate); Name = "FormBus"; StartPosition = FormStartPosition.CenterParent; Text = "Автобус"; @@ -112,8 +112,8 @@ #endregion - private Label labelLicensePlate; - private TextBox textBoxLicensePlate; + private Label labelLicencePlate; + private TextBox textBoxLicencePlate; private Label labelBusTypeName; private Button buttonSave; private Button buttonCancel; diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs index 2034708..6575937 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs @@ -1,5 +1,4 @@ using ProjectPassengerTransportation.Entities; -using ProjectPassengerTransportation.Entities.Enums; using ProjectPassengerTransportation.Repositories; namespace ProjectPassengerTransportation.Forms @@ -22,8 +21,8 @@ namespace ProjectPassengerTransportation.Forms throw new InvalidDataException(nameof(bus)); } - textBoxLicensePlate.Text = bus.LicensePlate; - comboBoxBusType.SelectedItem = bus.Model; + textBoxLicencePlate.Text = bus.Licence_plate; + textBoxModel.Text = bus.Model; _busId = value; } catch (Exception ex) @@ -44,7 +43,7 @@ namespace ProjectPassengerTransportation.Forms { try { - if (string.IsNullOrWhiteSpace(textBoxLicensePlate.Text) || string.IsNullOrWhiteSpace(textBoxModel.Text)) + if (string.IsNullOrWhiteSpace(textBoxLicencePlate.Text) || string.IsNullOrWhiteSpace(textBoxModel.Text)) { throw new Exception("Имеются незаполненные поля"); } @@ -68,6 +67,6 @@ namespace ProjectPassengerTransportation.Forms private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - private Bus CreateBus(int id) => Bus.CreateEntity(id, textBoxLicensePlate.Text, textBoxModel.Text); + private Bus CreateBus(int id) => Bus.CreateEntity(id, textBoxLicencePlate.Text, textBoxModel.Text); } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs index 1300111..77c34a3 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs @@ -23,8 +23,8 @@ namespace ProjectPassengerTransportation.Forms throw new InvalidDataException(nameof(employee)); } - textBoxFirstName.Text = employee.FirstName; - textBoxLastName.Text = employee.LastName; + textBoxFirstName.Text = employee.First_name; + textBoxLastName.Text = employee.Last_name; comboBoxPost.SelectedItem = employee.Post; _employeeId = value; } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs index 7677995..57181ee 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs @@ -93,6 +93,7 @@ // numericUpDownPrice // numericUpDownPrice.Location = new Point(168, 310); + numericUpDownPrice.Maximum = new decimal(new int[] { 1000000, 0, 0, 0 }); numericUpDownPrice.Name = "numericUpDownPrice"; numericUpDownPrice.Size = new Size(245, 35); numericUpDownPrice.TabIndex = 21; diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs index e39c947..e5aa738 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs @@ -13,7 +13,7 @@ namespace ProjectPassengerTransportation.Forms InitializeComponent(); _goToServiceRepository = goToServiceRepository ?? throw new ArgumentNullException(nameof(goToServiceRepository)); comboBoxBus.DataSource = busRepository.ReadBuses(); - comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.DisplayMember = "Licence_plate"; comboBoxBus.ValueMember = "Id"; foreach (var elem in Enum.GetValues(typeof(BrokenElements))) { diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs index 8d835c0..0131f15 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs @@ -21,10 +21,10 @@ namespace ProjectPassengerTransportation.Forms throw new InvalidDataException(nameof(routeList)); } - numericUpDownStartHour.Value = routeList.Start.Hour; - numericUpDownStartMin.Value = routeList.Start.Minute; - numericUpDownFinishHour.Value = routeList.Finish.Hour; - numericUpDownFinishMin.Value = routeList.Finish.Minute; + numericUpDownStartHour.Value = (decimal)routeList.Route_start.Hours; + numericUpDownStartMin.Value = (decimal)routeList.Route_start.Minutes; + numericUpDownFinishHour.Value = (decimal)routeList.Route_finish.Hours; + numericUpDownFinishMin.Value = (decimal)routeList.Route_finish.Minutes; _routeListId = value; } catch (Exception ex) @@ -65,7 +65,7 @@ namespace ProjectPassengerTransportation.Forms private void ButtonCancel_Click(object sender, EventArgs e) => Close(); private RouteList CreateRouteList(int id) => RouteList.CreateEntity(id, - new TimeOnly(Convert.ToInt32(numericUpDownStartHour.Value), Convert.ToInt32(numericUpDownStartMin.Value)), - new TimeOnly(Convert.ToInt32(numericUpDownFinishHour.Value), Convert.ToInt32(numericUpDownFinishMin.Value))); + new TimeSpan(Convert.ToInt32(numericUpDownStartHour.Value), Convert.ToInt32(numericUpDownStartMin.Value), 0), + new TimeSpan(Convert.ToInt32(numericUpDownFinishHour.Value), Convert.ToInt32(numericUpDownFinishMin.Value), 0)); } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs index c246c3d..9cf3e1b 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs @@ -17,10 +17,10 @@ namespace ProjectPassengerTransportation.Forms comboBoxRouteList.DisplayMember = "Id"; comboBoxRouteList.ValueMember = "Id"; comboBoxBus.DataSource = busRepository.ReadBuses(); - comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.DisplayMember = "Licence_plate"; comboBoxBus.ValueMember = "Id"; ColumnEmployees.DataSource = employeeRepository.ReadEmployees(); - ColumnEmployees.DisplayMember = "FirstName"; + ColumnEmployees.DisplayMember = "First_name"; ColumnEmployees.ValueMember = "Id"; } @@ -55,8 +55,8 @@ namespace ProjectPassengerTransportation.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["ColumnWorkHours"].Value == null) { continue; } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs index ebf0698..8516151 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs @@ -51,16 +51,16 @@ dataGridViewData.RowHeadersVisible = false; dataGridViewData.RowHeadersWidth = 72; dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridViewData.Size = new Size(845, 481); + dataGridViewData.Size = new Size(1280, 636); dataGridViewData.TabIndex = 5; // // panelButtons // panelButtons.Controls.Add(buttonAdd); panelButtons.Dock = DockStyle.Right; - panelButtons.Location = new Point(845, 0); + panelButtons.Location = new Point(1280, 0); panelButtons.Name = "panelButtons"; - panelButtons.Size = new Size(196, 481); + panelButtons.Size = new Size(196, 636); panelButtons.TabIndex = 4; // // buttonAdd @@ -78,7 +78,7 @@ // AutoScaleDimensions = new SizeF(12F, 30F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1041, 481); + ClientSize = new Size(1476, 636); Controls.Add(dataGridViewData); Controls.Add(panelButtons); Name = "FormStartingShifts"; diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs index ef43286..d3b7ead 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Npgsql; using ProjectPassengerTransportation.Entities; -using System.Data.SqlClient; namespace ProjectPassengerTransportation.Repositories.Implementations; @@ -23,13 +22,13 @@ public class BusRepository : IBusRepository { _logger.LogInformation("Добавление объекта"); _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(bus)); - + try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var queryInsert = @" -INSERT INTO bus (licence_plate, bus_type_id) -VALUES (@LicencePlate, @Type)"; +INSERT INTO bus (licence_plate, model) +VALUES (@Licence_plate, @Model)"; connection.Execute(queryInsert, bus); } catch (Exception ex) @@ -50,8 +49,8 @@ VALUES (@LicencePlate, @Type)"; var queryUpdate = @" UPDATE bus SET - licence_plate=@LicencePlate, - bus_type_id=@Type + licence_plate=@Licence_plate, + model=@Model WHERE id=@Id"; connection.Execute(queryUpdate, bus); } @@ -82,18 +81,18 @@ WHERE id=@id"; } } - public Bus ReadBusById(int id) + public Bus ReadBusById(int busId) { _logger.LogInformation("Получение объекта по идентификатору"); - _logger.LogDebug("Объект: {id}", id); + _logger.LogDebug("Объект: {id}", busId); try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @" SELECT * FROM bus -WHERE [id]=@id"; - var bus = connection.QueryFirst(querySelect, new { id }); +WHERE id=@busId"; + var bus = connection.QueryFirst(querySelect, new { busId }); _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(bus)); return bus; @@ -111,7 +110,7 @@ WHERE [id]=@id"; try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM bus"; + var querySelect = @"SELECT * FROM bus"; var buses = connection.Query(querySelect); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(buses)); return buses; diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs index 6d6cccc..c0d4bb8 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs @@ -1,32 +1,125 @@ -using ProjectPassengerTransportation.Entities; -using ProjectPassengerTransportation.Entities.Enums; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPassengerTransportation.Entities; namespace ProjectPassengerTransportation.Repositories.Implementations; public class EmployeeRepository : IEmployeeRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public EmployeeRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateEmployee(Employee employee) { - - } + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(employee)); - public void DeleteEmployee(int id) - { - - } - - public Employee ReadEmployeeById(int employeeId) - { - return Employee.CreateEntity(0, string.Empty, string.Empty, EmployeePost.None); - } - - public IEnumerable ReadEmployees() - { - return []; + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO employee (first_name, last_name, post) +VALUES (@First_name, @Last_name, @Post)"; + connection.Execute(queryInsert, employee); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void UpdateEmployee(Employee employee) { - + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(employee)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE employee +SET + first_name=@First_name, + last_name=@Last_name, + post=@Post +WHERE id=@Id"; + connection.Execute(queryUpdate, employee); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + + public void DeleteEmployee(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM employee +WHERE id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public Employee ReadEmployeeById(int employeeId) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", employeeId); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM employee +WHERE id=@employeeId"; + var employee = connection.QueryFirst(querySelect, new { employeeId }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(employee)); + + return employee; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public IEnumerable ReadEmployees() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM employee"; + var employees = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(employees)); + return employees; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs index 62618ae..b4903f2 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs @@ -1,22 +1,80 @@ -using ProjectPassengerTransportation.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPassengerTransportation.Entities; using ProjectPassengerTransportation.Entities.Enums; namespace ProjectPassengerTransportation.Repositories.Implementations; public class GoToServiceRepository : IGoToServiceRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public GoToServiceRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateGoToService(GoToService goToService) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(goToService)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO go_to_service (date, price, bus_id, broken_elements) +VALUES (@Date, @Price, @Bus_id, @Broken_elements)"; + connection.Execute(queryInsert, goToService); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteGoToService(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM go_to_service +WHERE id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } - public IEnumerable ReadServices(DateTime? dateFrom = null, DateTime? dateTo = null, BrokenElements BrokenElements = BrokenElements.None, int? price = null, int? busId = null) + public IEnumerable ReadServices(DateTime? dateFrom = null, DateTime? dateTo = null, + BrokenElements BrokenElements = BrokenElements.None, int? price = null, int? busId = null) { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @"SELECT * FROM go_to_service"; + var services = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(services)); + return services; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs index e0e1ed1..57f5082 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs @@ -1,31 +1,125 @@ -using ProjectPassengerTransportation.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPassengerTransportation.Entities; +using System; namespace ProjectPassengerTransportation.Repositories.Implementations; public class RouteListRepository : IRouteListRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public RouteListRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateRouteList(RouteList routeList) { - - } + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(routeList)); - public void DeleteRouteList(int id) - { - - } - - public RouteList ReadRouteListById(int routeListId) - { - return RouteList.CreateEntity(0, new TimeOnly(0, 0), new TimeOnly(0, 0)); - } - - public IEnumerable ReadRouteLists() - { - return []; + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO route_list (route_start, route_finish) +VALUES (@Route_start, @Route_finish)"; + connection.Execute(queryInsert, routeList); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void UpdateRouteList(RouteList routeList) { - + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(routeList)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE route_list +SET + route_start=@Route_start, + route_finish=@Route_finish +WHERE id=@Id"; + connection.Execute(queryUpdate, routeList); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + + public void DeleteRouteList(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM route_list +WHERE id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public RouteList ReadRouteListById(int routeListId) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", routeListId); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM route_list +WHERE id=@routeListId"; + var routeList = connection.QueryFirst(querySelect, new { routeListId }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(routeList)); + + return routeList; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public IEnumerable ReadRouteLists() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @"SELECT * FROM route_list"; + var routeLists = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(routeLists)); + return routeLists; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs index 828e725..9921a08 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs @@ -1,17 +1,70 @@ -using ProjectPassengerTransportation.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectPassengerTransportation.Entities; namespace ProjectPassengerTransportation.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 (date, route_list_id, bus_id) +VALUES (@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, work_time) +VALUES (@Starting_shift_id, @Employee_id, @Work_time)"; + foreach (var elem in startingShift.Starting_shift_employees) + { + connection.Execute(querySubInsert, new { starting_shift_id, elem.Employee_id, elem.Work_time }, transaction); + } + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public IEnumerable ReadShifts(DateTime? dateFrom = null, DateTime? dateTo = null, int? routeListId = null, int? employeeId = null, int? busId = 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; + } } } -- 2.25.1 From f023c3a28a91a2c1c774cdaa31875b0e4e819804 Mon Sep 17 00:00:00 2001 From: sheymuh Date: Mon, 9 Dec 2024 14:17:10 +0400 Subject: [PATCH 4/4] =?UTF-8?q?=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectPassengerTransportation/Entities/Bus.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs index fb54fe0..ce1e3f1 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs @@ -10,7 +10,7 @@ public class Bus public string Model { get; private set; } = string.Empty; - public static Bus CreateEntity(int id, string licensePlate, BusType type) + public static Bus CreateEntity(int id, string licencePlate, string model) { return new Bus { -- 2.25.1