160 lines
6.5 KiB
C#
Raw Normal View History

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
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
// Обновление информации о читателе
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
// Удаление читателя
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
// Получение всех читателей
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
}
}
}