2024-11-20 19:31:06 +04:00
|
|
|
|
using ProjectLibrary.Entities;
|
2024-12-08 13:24:07 +04:00
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Npgsql;
|
|
|
|
|
using Dapper;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using ProjectLibrary.Repositores;
|
2024-11-12 23:13:20 +04:00
|
|
|
|
|
2024-11-19 19:46:02 +04:00
|
|
|
|
namespace ProjectLibrary.Repositories
|
2024-11-12 23:13:20 +04:00
|
|
|
|
{
|
|
|
|
|
public class ReaderRepository : IReaderRepository
|
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
private readonly IConnectionString _connectionString;
|
|
|
|
|
private readonly ILogger<ReaderRepository> _logger;
|
|
|
|
|
|
|
|
|
|
public ReaderRepository(IConnectionString connectionString, ILogger<ReaderRepository> logger)
|
|
|
|
|
{
|
|
|
|
|
_connectionString = connectionString;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Добавление нового читателя
|
2024-11-20 19:31:06 +04:00
|
|
|
|
public void CreateReader(Reader reader)
|
2024-11-12 23:13:20 +04:00
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
_logger.LogInformation("Добавление читателя");
|
|
|
|
|
_logger.LogDebug("Читатель: {json}", JsonConvert.SerializeObject(reader));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
|
|
|
|
var queryInsert = @"
|
|
|
|
|
INSERT INTO Reader (Name, ReaderTicket, RegistrationDateRT) -- Используем правильные названия столбцов из вашей таблицы
|
|
|
|
|
VALUES (@Name, @ReaderTicket, @RegistrationDateRT)";
|
|
|
|
|
connection.Execute(queryInsert, reader);
|
|
|
|
|
_logger.LogInformation("Читатель успешно добавлен");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка при добавлении читателя");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
2024-11-12 23:13:20 +04:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-08 13:24:07 +04:00
|
|
|
|
// Обновление информации о читателе
|
2024-11-19 19:46:02 +04:00
|
|
|
|
public void UpdateReader(Reader reader)
|
2024-11-12 23:13:20 +04:00
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
_logger.LogInformation("Редактирование читателя");
|
|
|
|
|
_logger.LogDebug("Читатель: {json}", JsonConvert.SerializeObject(reader));
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
|
|
|
|
var queryUpdate = @"
|
|
|
|
|
UPDATE Reader -- Используем правильное имя таблицы
|
|
|
|
|
SET
|
|
|
|
|
Name = @Name, -- Используем правильные названия столбцов
|
|
|
|
|
ReaderTicket = @ReaderTicket,
|
|
|
|
|
RegistrationDateRT = @RegistrationDateRT
|
|
|
|
|
WHERE ID = @ID";
|
|
|
|
|
var affectedRows = connection.Execute(queryUpdate, new
|
|
|
|
|
{
|
|
|
|
|
Name = reader.Name,
|
|
|
|
|
ReaderTicket = reader.ReaderTicket,
|
|
|
|
|
RegistrationDateRT = reader.RegistrationDateRT,
|
|
|
|
|
ID = reader.Id
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (affectedRows > 0)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation("Читатель успешно обновлен");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning("Читатель с ID={Id} не найден для обновления", reader.Id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка при редактировании читателя");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
2024-11-12 23:13:20 +04:00
|
|
|
|
}
|
|
|
|
|
|
2024-12-08 13:24:07 +04:00
|
|
|
|
// Удаление читателя
|
2024-11-19 19:46:02 +04:00
|
|
|
|
public void DeleteReader(int id)
|
2024-11-12 23:13:20 +04:00
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
_logger.LogInformation("Удаление читателя с ID={id}", id);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
|
|
|
|
var queryDelete = @"
|
|
|
|
|
DELETE FROM Reader -- Используем правильное имя таблицы
|
|
|
|
|
WHERE ID = @id";
|
|
|
|
|
var affectedRows = connection.Execute(queryDelete, new { id });
|
|
|
|
|
|
|
|
|
|
if (affectedRows > 0)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation("Читатель с ID={id} успешно удален", id);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning("Читатель с ID={id} не найден для удаления", id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка при удалении читателя с ID={id}", id);
|
|
|
|
|
throw;
|
|
|
|
|
}
|
2024-11-12 23:13:20 +04:00
|
|
|
|
}
|
2024-12-08 13:24:07 +04:00
|
|
|
|
|
|
|
|
|
// Получение читателя по ID
|
2024-11-20 19:31:06 +04:00
|
|
|
|
public Reader ReadReaderById(int id)
|
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
_logger.LogInformation("Получение читателя по ID={id}", id);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
|
|
|
|
var querySelect = @"
|
|
|
|
|
SELECT * FROM Reader -- Используем правильное имя таблицы
|
|
|
|
|
WHERE ID = @id";
|
|
|
|
|
var reader = connection.QueryFirstOrDefault<Reader>(querySelect, new { id });
|
|
|
|
|
|
|
|
|
|
if (reader != null)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Найден читатель: {json}", JsonConvert.SerializeObject(reader));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_logger.LogWarning("Читатель с ID={id} не найден", id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return reader;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка при поиске читателя");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
2024-11-20 19:31:06 +04:00
|
|
|
|
}
|
2024-11-12 23:13:20 +04:00
|
|
|
|
|
2024-12-08 13:24:07 +04:00
|
|
|
|
// Получение всех читателей
|
2024-11-19 19:46:02 +04:00
|
|
|
|
public List<Reader> ReadReaders()
|
2024-11-12 23:13:20 +04:00
|
|
|
|
{
|
2024-12-08 13:24:07 +04:00
|
|
|
|
_logger.LogInformation("Получение всех читателей");
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
|
|
|
|
var querySelect = "SELECT * FROM Reader"; // Используем правильное имя таблицы
|
|
|
|
|
var readers = connection.Query<Reader>(querySelect).ToList();
|
|
|
|
|
_logger.LogDebug("Полученные читатели: {json}", JsonConvert.SerializeObject(readers));
|
|
|
|
|
return readers;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogError(ex, "Ошибка при чтении списка читателей");
|
|
|
|
|
throw;
|
|
|
|
|
}
|
2024-11-12 23:13:20 +04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|