160 lines
6.5 KiB
C#
160 lines
6.5 KiB
C#
using ProjectLibrary.Entities;
|
||
using Microsoft.Extensions.Logging;
|
||
using Newtonsoft.Json;
|
||
using Npgsql;
|
||
using Dapper;
|
||
using System.Collections.Generic;
|
||
using ProjectLibrary.Repositores;
|
||
|
||
namespace ProjectLibrary.Repositories
|
||
{
|
||
public class ReaderRepository : IReaderRepository
|
||
{
|
||
private readonly IConnectionString _connectionString;
|
||
private readonly ILogger<ReaderRepository> _logger;
|
||
|
||
public ReaderRepository(IConnectionString connectionString, ILogger<ReaderRepository> logger)
|
||
{
|
||
_connectionString = connectionString;
|
||
_logger = logger;
|
||
}
|
||
|
||
// Добавление нового читателя
|
||
public void CreateReader(Reader reader)
|
||
{
|
||
_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;
|
||
}
|
||
}
|
||
|
||
// Обновление информации о читателе
|
||
public void UpdateReader(Reader reader)
|
||
{
|
||
_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;
|
||
}
|
||
}
|
||
|
||
// Удаление читателя
|
||
public void DeleteReader(int id)
|
||
{
|
||
_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;
|
||
}
|
||
}
|
||
|
||
// Получение читателя по ID
|
||
public Reader ReadReaderById(int id)
|
||
{
|
||
_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;
|
||
}
|
||
}
|
||
|
||
// Получение всех читателей
|
||
public List<Reader> ReadReaders()
|
||
{
|
||
_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;
|
||
}
|
||
}
|
||
}
|
||
}
|