Фаза 2
This commit is contained in:
parent
2c89c1bea9
commit
38f4b3f29a
@ -9,19 +9,19 @@ namespace ProjectGSM.Entities;
|
||||
|
||||
public class RouteSheet
|
||||
{
|
||||
public int Trip_ID { get; private set; }
|
||||
public int RouteSheet_ID { get; private set; }
|
||||
public DateTime Start_Date { get; private set; }
|
||||
public DateTime End_Date { get; private set; }
|
||||
public float Fuel_Consumption { get; private set; }
|
||||
public int Car_ID { get; private set; }
|
||||
public int Driver_ID { get; private set; }
|
||||
public IEnumerable<Route> Routes { get; private set; } = [];
|
||||
public IEnumerable<Trip_Route> Routes { get; private set; } = [];
|
||||
|
||||
public static RouteSheet CreateOperation(int trip_id, DateTime start_date, DateTime end_date, float consumption, int car_id, int driver_id, IEnumerable<Route> routes)
|
||||
public static RouteSheet CreateOperation(int routeSheet_id, DateTime start_date, DateTime end_date, float consumption, int car_id, int driver_id, IEnumerable<Trip_Route> routes)
|
||||
{
|
||||
return new RouteSheet
|
||||
{
|
||||
Trip_ID = trip_id,
|
||||
RouteSheet_ID = routeSheet_id,
|
||||
Start_Date = start_date,
|
||||
End_Date = end_date,
|
||||
Fuel_Consumption = consumption,
|
||||
|
22
ProjectGSM/Entities/Trip_Route.cs
Normal file
22
ProjectGSM/Entities/Trip_Route.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectGSM.Entities;
|
||||
|
||||
public class Trip_Route
|
||||
{
|
||||
public int RouteSheet_ID { get; private set; }
|
||||
public int Route_ID { get; private set; }
|
||||
|
||||
public static Trip_Route CreateElement(int routeSheet_ID, int route_id)
|
||||
{
|
||||
return new Trip_Route
|
||||
{
|
||||
RouteSheet_ID = routeSheet_ID,
|
||||
Route_ID = route_id
|
||||
};
|
||||
}
|
||||
}
|
@ -23,7 +23,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
@ -36,7 +36,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
@ -49,7 +49,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
@ -62,7 +62,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
@ -75,7 +75,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
@ -88,7 +88,7 @@ namespace ProjectGSM
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "?????? ??? ????????",
|
||||
MessageBox.Show(ex.Message, "Îøèáêà ïðè çàãðóçêå",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
20
ProjectGSM/Forms/FormCar.Designer.cs
generated
20
ProjectGSM/Forms/FormCar.Designer.cs
generated
@ -31,7 +31,7 @@
|
||||
Car_Mark = new Label();
|
||||
Car_Model = new Label();
|
||||
Car_Type = new Label();
|
||||
labelСategoryRights = new Label();
|
||||
License = new Label();
|
||||
Consumption_Rate = new Label();
|
||||
textBoxCarModel = new TextBox();
|
||||
textBoxCarMark = new TextBox();
|
||||
@ -70,14 +70,14 @@
|
||||
Car_Type.TabIndex = 2;
|
||||
Car_Type.Text = "Тип машины:";
|
||||
//
|
||||
// labelСategoryRights
|
||||
// License
|
||||
//
|
||||
labelСategoryRights.AutoSize = true;
|
||||
labelСategoryRights.Location = new Point(24, 130);
|
||||
labelСategoryRights.Name = "labelСategoryRights";
|
||||
labelСategoryRights.Size = new Size(84, 20);
|
||||
labelСategoryRights.TabIndex = 3;
|
||||
labelСategoryRights.Text = "Категория:";
|
||||
License.AutoSize = true;
|
||||
License.Location = new Point(24, 130);
|
||||
License.Name = "License";
|
||||
License.Size = new Size(84, 20);
|
||||
License.TabIndex = 3;
|
||||
License.Text = "Категория:";
|
||||
//
|
||||
// Consumption_Rate
|
||||
//
|
||||
@ -159,7 +159,7 @@
|
||||
Controls.Add(textBoxCarMark);
|
||||
Controls.Add(textBoxCarModel);
|
||||
Controls.Add(Consumption_Rate);
|
||||
Controls.Add(labelСategoryRights);
|
||||
Controls.Add(License);
|
||||
Controls.Add(Car_Type);
|
||||
Controls.Add(Car_Model);
|
||||
Controls.Add(Car_Mark);
|
||||
@ -176,7 +176,7 @@
|
||||
private Label Car_Mark;
|
||||
private Label Car_Model;
|
||||
private Label Car_Type;
|
||||
private Label labelСategoryRights;
|
||||
private Label License;
|
||||
private Label Consumption_Rate;
|
||||
private TextBox textBoxCarModel;
|
||||
private TextBox textBoxCarMark;
|
||||
|
@ -38,7 +38,7 @@ namespace ProjectGSM.Forms
|
||||
MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Driver_ID"].Value);
|
||||
id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Fuel_ID"].Value);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -23,11 +23,11 @@ namespace ProjectGSM.Forms
|
||||
_routeSheetRepository = routeSheetRepository ??
|
||||
throw new ArgumentNullException(nameof(routeSheetRepository));
|
||||
|
||||
comboBoxCarID.DataSource = routeSheetRepository.ReadTrips();
|
||||
comboBoxCarID.DataSource = carRepository.ReadCars();
|
||||
comboBoxCarID.DisplayMember = "Car_Mark";
|
||||
comboBoxCarID.ValueMember = "Car_ID";
|
||||
|
||||
comboBoxDriverID.DataSource = routeSheetRepository.ReadTrips();
|
||||
comboBoxDriverID.DataSource = driverRepository.ReadDrivers();
|
||||
comboBoxDriverID.DisplayMember = "Firstname";
|
||||
comboBoxDriverID.ValueMember = "Driver_ID";
|
||||
|
||||
@ -36,19 +36,6 @@ namespace ProjectGSM.Forms
|
||||
ColumnRoute.ValueMember = "Route_ID";
|
||||
}
|
||||
|
||||
private List<Route> CreateListDriversFromDataGrid()
|
||||
{
|
||||
var list = new List<Route>();
|
||||
foreach (DataGridViewRow row in dataGridViewRoutes.Rows)
|
||||
{
|
||||
if (row.Cells["ColumnRoute"].Value == null || row.Cells["ColumnEndPoint"].Value == null)
|
||||
continue;
|
||||
|
||||
list.Add(Route.CreateEntity(0, (string)row.Cells["ColumnRoute"].Value, (string)row.Cells["ColumnEndPoint"].Value, 0));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private void buttonSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
@ -56,7 +43,7 @@ namespace ProjectGSM.Forms
|
||||
if (comboBoxCarID.SelectedIndex < 0 || comboBoxDriverID.SelectedIndex < 0 || dataGridViewRoutes.RowCount < 0)
|
||||
throw new Exception("Имеются незаполненные поля");
|
||||
|
||||
_routeSheetRepository.CreateTrip(RouteSheet.CreateOperation(0, dateTimePickerStartDate.Value, dateTimePickerEndDate.Value, (float)numericUpDownConsumptionRate.Value, (int)comboBoxCarID.SelectedValue!, (int)comboBoxDriverID.SelectedValue!, CreateListDriversFromDataGrid()));
|
||||
_routeSheetRepository.CreateRouteSheet(RouteSheet.CreateOperation(0, dateTimePickerStartDate.Value, dateTimePickerEndDate.Value, (float)numericUpDownConsumptionRate.Value, (int)comboBoxCarID.SelectedValue!, (int)comboBoxDriverID.SelectedValue!, CreateListDriversFromDataGrid()));
|
||||
Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -67,5 +54,19 @@ namespace ProjectGSM.Forms
|
||||
}
|
||||
|
||||
private void buttonCancel_Click(object sender, EventArgs e) => Close();
|
||||
|
||||
private List<Trip_Route> CreateListDriversFromDataGrid()
|
||||
{
|
||||
var list = new List<Trip_Route>();
|
||||
foreach (DataGridViewRow row in dataGridViewRoutes.Rows)
|
||||
{
|
||||
if (row.Cells["ColumnRoute"].Value == null)
|
||||
continue;
|
||||
|
||||
list.Add(Trip_Route.CreateElement(0, Convert.ToInt32(row.Cells["ColumnRoute"].Value)));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@ namespace ProjectGSM.Forms
|
||||
throw new ArgumentNullException(nameof(routeSheetRepository));
|
||||
}
|
||||
|
||||
private void LoadList() => dataGridView.DataSource = _routeSheetRepository.ReadTrips();
|
||||
private void LoadList() => dataGridView.DataSource = _routeSheetRepository.ReadRouteSheet();
|
||||
|
||||
private void buttonAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
@ -1,6 +1,11 @@
|
||||
using ProjectGSM.Repositories;
|
||||
using ProjectGSM.Repositories.Implementation;
|
||||
using ProjectGSM.Repositories.Implementations;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Unity;
|
||||
using Serilog;
|
||||
using Unity.Microsoft.Logging;
|
||||
|
||||
namespace ProjectGSM
|
||||
{
|
||||
@ -20,14 +25,31 @@ namespace ProjectGSM
|
||||
private static IUnityContainer CreateContainer()
|
||||
{
|
||||
var container = new UnityContainer();
|
||||
|
||||
container.AddExtension(new LoggingExtension(CreateLoggerFactory()));
|
||||
|
||||
container.RegisterType<ICarRepository, CarRepository>();
|
||||
container.RegisterType<IDriverRepository, DriverRepository>();
|
||||
container.RegisterType<IPetrolStationRepository, PetrolStationRepository>();
|
||||
container.RegisterType<IRefillRepository, RefillRepository>();
|
||||
container.RegisterType<IRouteRepository, RouteRepository>();
|
||||
container.RegisterType<IRouteSheetRepository, RouteSheetRepository>();
|
||||
container.RegisterType<IConnectionString, ConnectionString>();
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -9,7 +9,18 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="Npgsql" Version="9.0.2" />
|
||||
<PackageReference Include="Serilog" Version="4.2.0" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Include="Serilog.Settings.Configuration" Version="9.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||
<PackageReference Include="Unity" Version="5.11.10" />
|
||||
<PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -27,4 +38,10 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="appsettings.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
12
ProjectGSM/Repositories/IConnectionString.cs
Normal file
12
ProjectGSM/Repositories/IConnectionString.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectGSM.Repositories;
|
||||
|
||||
public interface IConnectionString
|
||||
{
|
||||
public string ConnectionString { get; }
|
||||
}
|
@ -9,7 +9,7 @@ namespace ProjectGSM.Repositories;
|
||||
|
||||
public interface IRouteSheetRepository
|
||||
{
|
||||
IEnumerable<RouteSheet> ReadTrips(DateTime? dateFrom = null, DateTime? dateTo = null, int? carId = null, int? driverId = null, int? routeId = null);
|
||||
IEnumerable<RouteSheet> ReadRouteSheet(DateTime? dateFrom = null, DateTime? dateTo = null, int? carId = null, int? driverId = null, int? routeId = null);
|
||||
|
||||
void CreateTrip(RouteSheet trip);
|
||||
void CreateRouteSheet(RouteSheet routeSheet);
|
||||
}
|
||||
|
@ -1,34 +1,123 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class CarRepository : ICarRepository
|
||||
{
|
||||
|
||||
private readonly IConnectionString _connectionString;
|
||||
|
||||
private readonly ILogger<CarRepository> _logger;
|
||||
|
||||
public CarRepository(IConnectionString connectionString, ILogger<CarRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void CreateCar(Car car)
|
||||
{
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(car));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryInsert = @"INSERT INTO Car (Car_Mark, Car_Model, Car_Type, License, Consumption_Rate)
|
||||
VALUES (@Car_Mark, @Car_Model, @Car_Type, @License, @Consumption_Rate)";
|
||||
connection.Execute(queryInsert, car);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteCar(int id)
|
||||
{
|
||||
_logger.LogInformation("Удаление объекта");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryDelete = @"
|
||||
DELETE FROM Car
|
||||
WHERE Car_ID=@id";
|
||||
connection.Execute(queryDelete, new { id });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public Car ReadCarByID(int id)
|
||||
{
|
||||
return Car.CreateEntity(0, string.Empty, string.Empty, 0, 0, 0);
|
||||
_logger.LogInformation("Получение объекта по идентификатору");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = @"
|
||||
SELECT * FROM Car
|
||||
WHERE Car_ID=@id";
|
||||
var car = connection.QueryFirst<Car>(querySelect, new { id });
|
||||
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(car));
|
||||
return car;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<Car> ReadCars()
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM Car";
|
||||
var cars = connection.Query<Car>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(cars));
|
||||
return cars;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateCar(Car car)
|
||||
{
|
||||
_logger.LogInformation("Редактирование объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(car));
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryUpdate = @"
|
||||
UPDATE Car
|
||||
SET
|
||||
Car_Mark=@Car_Mark,
|
||||
Car_Model=@Car_Model,
|
||||
Car_Type=@Car_Type,
|
||||
License=@License,
|
||||
Consumption_Rate=@Consumption_Rate
|
||||
WHERE Car_ID=@Car_ID";
|
||||
connection.Execute(queryUpdate, car);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
11
ProjectGSM/Repositories/Implementation/ConnectionString.cs
Normal file
11
ProjectGSM/Repositories/Implementation/ConnectionString.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementation;
|
||||
public class ConnectionString : IConnectionString
|
||||
{
|
||||
string IConnectionString.ConnectionString => "Server=localhost; Port=5432;Database= postgres;User Id=postgres; Password=postgres";
|
||||
}
|
@ -1,34 +1,121 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class DriverRepository : IDriverRepository
|
||||
{
|
||||
|
||||
private readonly IConnectionString _connectionString;
|
||||
|
||||
private readonly ILogger<DriverRepository> _logger;
|
||||
|
||||
public DriverRepository(IConnectionString connectionString, ILogger<DriverRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void CreateDriver(Driver driver)
|
||||
{
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(driver));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryInsert = @"INSERT INTO Driver (Firstname, Secondname, Driver_License)
|
||||
VALUES (@Firstname, @Secondname, @Driver_License)";
|
||||
connection.Execute(queryInsert, driver);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteDriver(int id)
|
||||
{
|
||||
_logger.LogInformation("Удаление объекта");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryDelete = @"
|
||||
DELETE FROM Driver
|
||||
WHERE Driver_ID=@id";
|
||||
connection.Execute(queryDelete, new { id });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public Driver ReadDriverByID(int id)
|
||||
{
|
||||
return Driver.CreateEntity(0, string.Empty, string.Empty, 0);
|
||||
_logger.LogInformation("Получение объекта по идентификатору");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = @"
|
||||
SELECT * FROM Driver
|
||||
WHERE Driver_ID=@id";
|
||||
var driver = connection.QueryFirst<Driver>(querySelect, new { id });
|
||||
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(driver));
|
||||
return driver;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<Driver> ReadDrivers()
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM Driver";
|
||||
var drivers = connection.Query<Driver>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(drivers));
|
||||
return drivers;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateDriver(Driver driver)
|
||||
{
|
||||
_logger.LogInformation("Редактирование объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(driver));
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryUpdate = @"
|
||||
UPDATE Driver
|
||||
SET
|
||||
Firstname=@Firstname,
|
||||
Secondname=@Secondname,
|
||||
Driver_License=@Driver_License
|
||||
WHERE Driver_ID=@Driver_ID";
|
||||
connection.Execute(queryUpdate, driver);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,34 +1,120 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class PetrolStationRepository : IPetrolStationRepository
|
||||
{
|
||||
private readonly IConnectionString _connectionString;
|
||||
|
||||
private readonly ILogger<PetrolStationRepository> _logger;
|
||||
|
||||
public PetrolStationRepository(IConnectionString connectionString, ILogger<PetrolStationRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void CreatePetrolStation(PetrolStation fuel)
|
||||
{
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(fuel));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryInsert = @"INSERT INTO PetrolStation (Fuel_Type, Price_Per_Liter, Amount)
|
||||
VALUES (@Fuel_Type, @Price_Per_Liter, @Amount)";
|
||||
connection.Execute(queryInsert, fuel);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeletePetrolStation(int id)
|
||||
{
|
||||
_logger.LogInformation("Удаление объекта");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryDelete = @"
|
||||
DELETE FROM PetrolStation
|
||||
WHERE Fuel_ID=@id";
|
||||
connection.Execute(queryDelete, new { id });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public PetrolStation ReadPetrolStationByID(int id)
|
||||
{
|
||||
return PetrolStation.CreateEntity(0, 0, 0, 0);
|
||||
_logger.LogInformation("Получение объекта по идентификатору");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = @"
|
||||
SELECT * FROM PetrolStation
|
||||
WHERE Fuel_ID=@id";
|
||||
var fuel = connection.QueryFirst<PetrolStation>(querySelect, new { id });
|
||||
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(fuel));
|
||||
return fuel;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<PetrolStation> ReadPetrolStations()
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM PetrolStation";
|
||||
var fuels = connection.Query<PetrolStation>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(fuels));
|
||||
return fuels;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdatePetrolStation(PetrolStation PetrolStation)
|
||||
{
|
||||
_logger.LogInformation("Редактирование объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(PetrolStation));
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryUpdate = @"
|
||||
UPDATE PetrolStation
|
||||
SET
|
||||
Fuel_Type=@Fuel_Type,
|
||||
Price_Per_Liter=@Price_Per_Liter,
|
||||
Amount=@Amount
|
||||
WHERE Fuel_ID=@Fuel_ID";
|
||||
connection.Execute(queryUpdate, PetrolStation);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,57 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class RefillRepository : IRefillRepository
|
||||
{
|
||||
|
||||
private readonly IConnectionString _connectionString;
|
||||
private readonly ILogger<RefillRepository> _logger;
|
||||
public RefillRepository(IConnectionString connectionString, ILogger<RefillRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
||||
public void CreateRefill(Refill refill)
|
||||
{
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(refill));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryInsert = @"INSERT INTO Refill (Refill_Date, Quantity, Fuel_ID, Car_ID)
|
||||
VALUES (@Refill_Date, @Quantity, @Fuel_ID, @Car_ID)";
|
||||
connection.Execute(queryInsert, refill);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<Refill> ReadRefills(DateTime? dateFrom = null, DateTime? dateTo = null, int? fuelId = null, int? carId = null)
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM Refill";
|
||||
var refills = connection.Query<Refill>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(refills));
|
||||
return refills;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,34 +1,122 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class RouteRepository : IRouteRepository
|
||||
{
|
||||
|
||||
private readonly IConnectionString _connectionString;
|
||||
|
||||
private readonly ILogger<RouteRepository> _logger;
|
||||
|
||||
public RouteRepository(IConnectionString connectionString, ILogger<RouteRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void CreateRoute(Route route)
|
||||
{
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(route));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryInsert = @"INSERT INTO Route (Start_Point, End_Point, Route_Length)
|
||||
VALUES (@Start_Point, @End_Point, @Route_Length)";
|
||||
connection.Execute(queryInsert, route);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteRoute(int id)
|
||||
{
|
||||
_logger.LogInformation("Удаление объекта");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryDelete = @"
|
||||
DELETE FROM Route
|
||||
WHERE Route_ID=@id";
|
||||
connection.Execute(queryDelete, new { id });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public Route ReadRouteByID(int id)
|
||||
{
|
||||
return Route.CreateEntity(0, string.Empty, string.Empty, 0);
|
||||
_logger.LogInformation("Получение объекта по идентификатору");
|
||||
_logger.LogDebug("Объект: {id}", id);
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = @"
|
||||
SELECT * FROM Route
|
||||
WHERE Route_ID=@id";
|
||||
var route = connection.QueryFirst<Route>(querySelect, new { id });
|
||||
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(route));
|
||||
return route;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<Route> ReadRoutes()
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM Route";
|
||||
var routes = connection.Query<Route>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(routes));
|
||||
return routes;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateRoute(Route route)
|
||||
{
|
||||
_logger.LogInformation("Редактирование объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(route));
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var queryUpdate = @"
|
||||
UPDATE Route
|
||||
SET
|
||||
Start_Point=@Start_Point,
|
||||
End_Point=@End_Point,
|
||||
Route_Length=@Route_Length
|
||||
WHERE Route_ID=@Route_ID";
|
||||
connection.Execute(queryUpdate, route);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,78 @@
|
||||
using ProjectGSM.Entities;
|
||||
using ProjectGSM.Repositories;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using Npgsql;
|
||||
using ProjectGSM.Entities;
|
||||
using Dapper;
|
||||
|
||||
namespace ProjectGSM.Repositories.Implementations;
|
||||
|
||||
public class RouteSheetRepository : IRouteSheetRepository
|
||||
{
|
||||
public void CreateTrip(RouteSheet routeSheet)
|
||||
|
||||
private readonly IConnectionString _connectionString;
|
||||
|
||||
private readonly ILogger<RouteSheetRepository> _logger;
|
||||
|
||||
public RouteSheetRepository(IConnectionString connectionString, ILogger<RouteSheetRepository> logger)
|
||||
{
|
||||
_connectionString = connectionString;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public IEnumerable<RouteSheet> ReadTrips(DateTime? dateFrom = null, DateTime? dateTo = null, int? carId = null, int? driverId = null, int? routeId = null)
|
||||
|
||||
public void CreateRouteSheet(RouteSheet routeSheet)
|
||||
{
|
||||
return [];
|
||||
_logger.LogInformation("Добавление объекта");
|
||||
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(routeSheet));
|
||||
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
connection.Open();
|
||||
using var transaction = connection.BeginTransaction();
|
||||
var queryInsert = @"
|
||||
INSERT INTO RouteSheet (Start_Date, End_Date, Fuel_Consumption, Car_ID, Driver_ID)
|
||||
VALUES (@Start_Date, @End_Date, @Fuel_Consumption, @Car_ID, @Driver_ID);
|
||||
SELECT MAX(RouteSheet_ID) FROM RouteSheet";
|
||||
var RouteSheetId = connection.QueryFirst<int>(queryInsert, routeSheet, transaction);
|
||||
var querySubInsert = @"
|
||||
INSERT INTO Trip_Route (RouteSheet_ID, Route_ID)
|
||||
VALUES (@RouteSheetID, @Route_ID)";
|
||||
foreach (var elem in routeSheet.Routes)
|
||||
{
|
||||
connection.Execute(querySubInsert, new
|
||||
{
|
||||
RouteSheetId,
|
||||
elem.Route_ID
|
||||
}, transaction);
|
||||
}
|
||||
transaction.Commit();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<RouteSheet> ReadRouteSheet(DateTime? dateFrom = null, DateTime? dateTo = null, int? carId = null, int? driverId = null, int? routeId = null)
|
||||
{
|
||||
_logger.LogInformation("Получение всех объектов");
|
||||
try
|
||||
{
|
||||
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||
var querySelect = "SELECT * FROM RouteSheet";
|
||||
var routeSheets = connection.Query<RouteSheet>(querySelect);
|
||||
_logger.LogDebug("Полученные объекты: {json}",
|
||||
JsonConvert.SerializeObject(routeSheets));
|
||||
return routeSheets;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
15
ProjectGSM/appsettings.json
Normal file
15
ProjectGSM/appsettings.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"Serilog": {
|
||||
"Using": [ "Serilog.Sinks.File" ],
|
||||
"MinimumLevel": "Debug",
|
||||
"WriteTo": [
|
||||
{
|
||||
"Name": "File",
|
||||
"Args": {
|
||||
"path": "Logs.txt",
|
||||
"rollingInterval": "Day"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user