From 578f9735f41241eed962f224d40a06d113a99b32 Mon Sep 17 00:00:00 2001 From: Bulat Date: Thu, 21 Nov 2024 21:41:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/FormDoctorPayment.cs | 4 +- .../Forms/FormDrugs.cs | 2 +- .../Repositories/IDoctorPaymentsRepository.cs | 6 +- .../DoctorPaymentsRepository.cs | 67 ++++++++-- .../Implementations/DoctorRepository.cs | 116 ++++++++++++++++-- .../MedicalHistoryRepository.cs | 2 - 6 files changed, 167 insertions(+), 30 deletions(-) diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDoctorPayment.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDoctorPayment.cs index 2c7c665..791c85b 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDoctorPayment.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDoctorPayment.cs @@ -38,8 +38,8 @@ namespace RegistrationPatientsPolyclinic.Forms // Получаем значение из первой строки колонки ColumnMonth string month = dataGridViewPayment.Rows[0].Cells["ColumnMonth"].Value?.ToString(); - int countPatient = int.Parse(dataGridViewPayment.Rows[0].Cells["Column2"].Value?.ToString() ?? "0"); - int payment = int.Parse(dataGridViewPayment.Rows[0].Cells["Column3"].Value?.ToString() ?? "0"); + int countPatient = int.Parse(dataGridViewPayment.Rows[0].Cells["ColumnCount"].Value?.ToString() ?? "0"); + int payment = int.Parse(dataGridViewPayment.Rows[0].Cells["ColumnPayment"].Value?.ToString() ?? "0"); // Проверяем, что месяц не пустой if (string.IsNullOrEmpty(month)) diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDrugs.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDrugs.cs index 3ee7682..cf7422c 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDrugs.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Forms/FormDrugs.cs @@ -75,7 +75,7 @@ namespace RegistrationPatientsPolyclinic.Forms try { - var form = _container.Resolve(); + var form = _container.Resolve(); form.Id = findId; form.ShowDialog(); LoadList(); diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/IDoctorPaymentsRepository.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/IDoctorPaymentsRepository.cs index 63515e3..bb151d8 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/IDoctorPaymentsRepository.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/IDoctorPaymentsRepository.cs @@ -9,13 +9,9 @@ namespace RegistrationPatientsPolyclinic.Repositories; public interface IDoctorPaymentsRepository { - IEnumerable ReadDoctorPayments(); + IEnumerable ReadDoctorPayments(); - DoctorPayments ReadDoctorPaymentsById(int id); void CreateDoctorPayments(DoctorPayments doctorPayments); - void UpdateDoctorPayments(DoctorPayments doctorPayments); - - void DeleteDoctorPayments(int id); } diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorPaymentsRepository.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorPaymentsRepository.cs index c70b5be..7bcfd5c 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorPaymentsRepository.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorPaymentsRepository.cs @@ -1,7 +1,14 @@ -using RegistrationPatientsPolyclinic.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RegistrationPatientsPolyclinic.Entities; +using Serilog.Core; using System; using System.Collections.Generic; +using System.Data.SqlClient; using System.Linq; +using System.Numerics; using System.Text; using System.Threading.Tasks; @@ -9,25 +16,59 @@ namespace RegistrationPatientsPolyclinic.Repositories.Implementations; public class DoctorPaymentsRepository : IDoctorPaymentsRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public DoctorPaymentsRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } public void CreateDoctorPayments(DoctorPayments doctorPayments) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(doctorPayments)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO DoctorPayments (IdDoctor, Month, Count_Patient, Payment) +VALUES (@IdDoctor, @Month, @Count_Patient, @Payment)"; + connection.Execute(queryInsert, doctorPayments); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } - public void DeleteDoctorPayments(int id) + public IEnumerable ReadDoctorPayments() { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM DoctorPayments"; + var doctorPayments = + connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(doctorPayments)); + return doctorPayments; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } - public IEnumerable ReadDoctorPayments() - { - return []; - } - public DoctorPayments ReadDoctorPaymentsById(int id) - { - return DoctorPayments.CreateElement(0, 0, string.Empty, 0, 0); - } - public void UpdateDoctorPayments(DoctorPayments doctorPayments) - { - } } diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorRepository.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorRepository.cs index 488d638..1c7e9c8 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorRepository.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/DoctorRepository.cs @@ -1,4 +1,8 @@ -using RegistrationPatientsPolyclinic.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using RegistrationPatientsPolyclinic.Entities; using RegistrationPatientsPolyclinic.Entities.Enums; using System; using System.Collections.Generic; @@ -10,25 +14,123 @@ namespace RegistrationPatientsPolyclinic.Repositories.Implementations; public class DoctorRepository : IDoctorRepository { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public DoctorRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } public void CreateDoctor(Doctor doctor) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(doctor)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO Doctor (First_Name, Last_Name, DoctorPost) +VALUES (@First_Name, @Last_Name, @DoctorPost)"; + connection.Execute(queryInsert, doctor); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + public void UpdateDoctor(Doctor doctor) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(doctor)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE Doctor +SET +First_Name=@First_Name, +Last_Name=@Last_Name, +DoctorPost=@DoctorPost +WHERE Id=@Id"; + connection.Execute(queryUpdate, doctor); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } } - public void DeleteDoctor(int id) { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM Doctor +WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public Doctor ReadDoctorById(int id) { - return Doctor.CreateEntity(0, string.Empty, string.Empty, DoctorPost.None); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM Doctor +WHERE Id=@id"; + var doctor = connection.QueryFirst(querySelect, new + { + id + }); + _logger.LogDebug("Найденный объект: {json}", + JsonConvert.SerializeObject(doctor)); + return doctor; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } } public IEnumerable ReadDoctors() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Doctor"; + var doctor = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(doctor)); + return doctor; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } - public void UpdateDoctor(Doctor doctor) - { - } + } diff --git a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/MedicalHistoryRepository.cs b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/MedicalHistoryRepository.cs index a16c292..9ca514b 100644 --- a/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/MedicalHistoryRepository.cs +++ b/RegistrationPatientsPolyclinic/RegistrationPatientsPolyclinic/Repositories/Implementations/MedicalHistoryRepository.cs @@ -26,6 +26,4 @@ public class MedicalHistoryRepository : IMedicalHistoryRepository return []; } - - }