2 лаба готова
This commit is contained in:
parent
b35480e955
commit
0f718e3c87
@ -76,7 +76,7 @@ namespace ProjectPolyclinic.Forms
|
|||||||
var list = new List<Medicines_Visiting>();
|
var list = new List<Medicines_Visiting>();
|
||||||
foreach (DataGridViewRow row in dataGridViewMedicines.Rows)
|
foreach (DataGridViewRow row in dataGridViewMedicines.Rows)
|
||||||
{
|
{
|
||||||
if (row.Cells["ColumnFeed"].Value == null ||
|
if (row.Cells["ColumnMedicines"].Value == null ||
|
||||||
row.Cells["ColumnCount"].Value == null)
|
row.Cells["ColumnCount"].Value == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectPolyclinic.Entities;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectPolyclinic.Entities;
|
||||||
using ProjectPolyclinic.Entities.Enums;
|
using ProjectPolyclinic.Entities.Enums;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@ -8,27 +12,108 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace ProjectPolyclinic.Repositories.Implementations
|
namespace ProjectPolyclinic.Repositories.Implementations
|
||||||
{
|
{
|
||||||
internal class DoctorRepository:IDoctorRepository
|
public class DoctorRepository:IDoctorRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<DoctorRepository> _logger;
|
||||||
|
public DoctorRepository(IConnectionString connectionString, ILogger<DoctorRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateDoctor(Doctor doctor)
|
public void CreateDoctor(Doctor doctor)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
}
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(doctor));
|
||||||
public void DeleteDoctor(int id)
|
try
|
||||||
{
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
}
|
var queryInsert = @"INSERT INTO Doctors (First_Name, Last_Name, Specialization)
|
||||||
public Doctor ReadDoctorById(int id)
|
VALUES (@First_Name, @Last_Name, @Specialization)";
|
||||||
{
|
connection.Execute(queryInsert, doctor);
|
||||||
return Doctor.CreateEntity(0, string.Empty, string.Empty, Specialization.None);
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
public IEnumerable<Doctor> ReadDoctors()
|
{
|
||||||
{
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
return [];
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public void UpdateDoctor(Doctor doctor)
|
public void UpdateDoctor(Doctor doctor)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(doctor));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"UPDATE Doctors SET
|
||||||
|
First_Name = @First_Name,
|
||||||
|
Last_Name = @Last_Name,
|
||||||
|
Specialization= @Specialization
|
||||||
|
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 Doctors WHERE ID=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Doctor ReadDoctorById(int id)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"SELECT * FROM Doctors WHERE Id=@id";
|
||||||
|
var doctor = connection.QueryFirst<Doctor>(querySelect, new
|
||||||
|
{
|
||||||
|
id
|
||||||
|
});
|
||||||
|
_logger.LogDebug("Найденный объект: {json}",
|
||||||
|
JsonConvert.SerializeObject(doctor));
|
||||||
|
return doctor;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public IEnumerable<Doctor> ReadDoctors()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Doctors";
|
||||||
|
var doctors = connection.Query<Doctor>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}",
|
||||||
|
JsonConvert.SerializeObject(doctors));
|
||||||
|
return doctors;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,34 +1,120 @@
|
|||||||
using ProjectPolyclinic.Entities;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectPolyclinic.Entities;
|
||||||
using ProjectPolyclinic.Entities.Enums;
|
using ProjectPolyclinic.Entities.Enums;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ProjectPolyclinic.Repositories.Implementations
|
namespace ProjectPolyclinic.Repositories.Implementations
|
||||||
{
|
{
|
||||||
internal class MedicationRepository:IMedicationRepository
|
public class MedicationRepository:IMedicationRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<MedicationRepository> _logger;
|
||||||
|
public MedicationRepository(IConnectionString connectionString, ILogger<MedicationRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateMedication(Medication medication)
|
public void CreateMedication(Medication medication)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
}
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(medication));
|
||||||
public void DeleteMedication(int id)
|
try
|
||||||
{
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
}
|
var queryInsert = @"INSERT INTO Medicines (MedicinesType, Dosing, Description)
|
||||||
public Medication ReadMedicationById(int id)
|
VALUES (@MedicinesType, @Dosing, @Description)";
|
||||||
{
|
connection.Execute(queryInsert, medication);
|
||||||
return Medication.CreateEntity(0, MedicinesType.None, string.Empty, string.Empty);
|
}
|
||||||
}
|
catch (Exception ex)
|
||||||
public IEnumerable<Medication> ReadMedication()
|
{
|
||||||
{
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
return [];
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public void UpdateMedication(Medication medication)
|
public void UpdateMedication(Medication medication)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(medication));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"UPDATE Medicines SET
|
||||||
|
MedicinesType = @MedicinesType,
|
||||||
|
Dosing = @Dosing,
|
||||||
|
Description= @Description
|
||||||
|
WHERE Id=@id";
|
||||||
|
connection.Execute(queryUpdate, medication);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
public void DeleteMedication(int id)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Удаление объекта");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryDelete = @"DELETE FROM Medicines WHERE ID=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public Medication ReadMedicationById(int id)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"SELECT * FROM Medicines WHERE Id=@id";
|
||||||
|
var medication = connection.QueryFirst<Medication>(querySelect, new
|
||||||
|
{
|
||||||
|
id
|
||||||
|
});
|
||||||
|
_logger.LogDebug("Найденный объект: {json}",
|
||||||
|
JsonConvert.SerializeObject(medication));
|
||||||
|
return medication;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public IEnumerable<Medication> ReadMedication()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Medicines";
|
||||||
|
var medicines = connection.Query<Medication>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}",
|
||||||
|
JsonConvert.SerializeObject(medicines));
|
||||||
|
return medicines;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
using ProjectPolyclinic.Entities;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectPolyclinic.Entities;
|
||||||
|
using Serilog.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -7,15 +12,56 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace ProjectPolyclinic.Repositories.Implementations
|
namespace ProjectPolyclinic.Repositories.Implementations
|
||||||
{
|
{
|
||||||
internal class ProfessionalDevelopmentRepository:IProfessionalDevelopmentRepository
|
public class ProfessionalDevelopmentRepository:IProfessionalDevelopmentRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<ProfessionalDevelopmentRepository> _logger;
|
||||||
|
public ProfessionalDevelopmentRepository(IConnectionString connectionString,ILogger<ProfessionalDevelopmentRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
public void CreateProfessionalDevelopment(ProfessionalDevelopment professionalDevelopment)
|
public void CreateProfessionalDevelopment(ProfessionalDevelopment professionalDevelopment)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}",
|
||||||
|
JsonConvert.SerializeObject(professionalDevelopment));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new
|
||||||
|
NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryInsert = @"
|
||||||
|
INSERT INTO ProfessionalDevelopments (DoctorId, ProfessionalDevelopmentTime)
|
||||||
|
VALUES (@DoctorId, @ProfessionalDevelopmentTime)";
|
||||||
|
connection.Execute(queryInsert, professionalDevelopment);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<ProfessionalDevelopment> ReadProfessionalDevelopment(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? Id = null)
|
public IEnumerable<ProfessionalDevelopment> ReadProfessionalDevelopment(DateTime? dateForm = null, DateTime? dateTo = null, int? doctorId = null, int? Id = null)
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new
|
||||||
|
NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM ProfessionalDevelopments";
|
||||||
|
var professionalDevelopments =
|
||||||
|
connection.Query<ProfessionalDevelopment>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}",
|
||||||
|
JsonConvert.SerializeObject(professionalDevelopments));
|
||||||
|
return professionalDevelopments;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
using ProjectPolyclinic.Entities;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectPolyclinic.Entities;
|
||||||
|
using Serilog.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -7,19 +12,94 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace ProjectPolyclinic.Repositories.Implementations
|
namespace ProjectPolyclinic.Repositories.Implementations
|
||||||
{
|
{
|
||||||
internal class VisitingRepository:IVisitingRepository
|
public class VisitingRepository:IVisitingRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<VisitingRepository> _logger;
|
||||||
|
|
||||||
|
public VisitingRepository(IConnectionString connectionString,ILogger<VisitingRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
public void CreateVisiting(Visiting visiting)
|
public void CreateVisiting(Visiting visiting)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}",
|
||||||
|
JsonConvert.SerializeObject(visiting));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new
|
||||||
|
NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
connection.Open();
|
||||||
|
using var transaction = connection.BeginTransaction();
|
||||||
|
var queryInsert = @"
|
||||||
|
INSERT INTO Visitings (DoctorId, PatientId,DiagnosisName,VisitingTime)
|
||||||
|
VALUES (@DoctorId, @PatientId, @DiagnosisName,@VisitingTime );
|
||||||
|
SELECT MAX(Id) FROM Visitings";
|
||||||
|
var visitingId = connection.QueryFirst<int>(queryInsert, visiting, transaction);
|
||||||
|
var querySubInsert = @"
|
||||||
|
INSERT INTO Medicines_Visiting (MedicinesId, VisitingId, Count)
|
||||||
|
VALUES (@MedicinesId,@VisitingId, @Count)";
|
||||||
|
foreach (var elem in visiting.Medicines)
|
||||||
|
{
|
||||||
|
connection.Execute(querySubInsert, new
|
||||||
|
{
|
||||||
|
visitingId,
|
||||||
|
elem.MedicinesId,
|
||||||
|
elem.Count
|
||||||
|
}, transaction);
|
||||||
|
}
|
||||||
|
transaction.Commit();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteVisiting(int id)
|
public void DeleteVisiting(int id)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Удаление объекта");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new
|
||||||
|
NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryDelete = @"
|
||||||
|
DELETE FROM Visitings
|
||||||
|
WHERE Id=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Visiting> ReadVisiting(DateTime? dateForm = null, DateTime? dateTo = null, int? patientId = null, int? doctorId = null,int ? visitingId = null)
|
public IEnumerable<Visiting> ReadVisiting(DateTime? dateForm = null, DateTime? dateTo = null, int? patientId = null, int? doctorId = null,int ? visitingId = null)
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new
|
||||||
|
NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"SELECT * FROM Visitings";
|
||||||
|
var visitings =
|
||||||
|
connection.Query<Visiting>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}",
|
||||||
|
JsonConvert.SerializeObject(visitings));
|
||||||
|
return visitings;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user