160 lines
6.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}
}