From 370bbdedcdfe038ea993900ddae1030e313dff4b Mon Sep 17 00:00:00 2001 From: andrei-mihnea-cerbu Date: Mon, 8 Apr 2024 13:37:58 +0300 Subject: [PATCH] jwt v1.0 --- .gitignore | Bin 692 -> 696 bytes backend/.vs/HealthcareManagerAPI/v17/.suo | Bin 119808 -> 121856 bytes .../v17/DocumentLayout.json | 20 +- backend/API/API.csproj | 1 + backend/API/Controllers/BaseController.cs | 2 +- backend/API/Controllers/ChatController.cs | 35 +- backend/API/Controllers/DoctorsController.cs | 60 +++- .../Controllers/MedicalHistoryController.cs | 44 ++- backend/API/Controllers/PatientsController.cs | 51 ++- backend/API/Middlewares/JwtMiddleware.cs | 57 ++++ backend/API/Program.cs | 20 +- backend/API/appsettings.json | 6 + backend/API/bin/Debug/net8.0/API.dll | Bin 32768 -> 36864 bytes backend/API/bin/Debug/net8.0/API.exe | Bin 142848 -> 142848 bytes backend/API/bin/Debug/net8.0/API.pdb | Bin 28112 -> 29880 bytes backend/API/bin/Debug/net8.0/Application.dll | Bin 59904 -> 76288 bytes backend/API/bin/Debug/net8.0/Application.pdb | Bin 25384 -> 30180 bytes backend/API/bin/Debug/net8.0/Core.dll | Bin 7680 -> 7680 bytes backend/API/bin/Debug/net8.0/Core.pdb | Bin 12528 -> 13308 bytes .../API/bin/Debug/net8.0/Infrastructure.dll | Bin 39424 -> 39424 bytes .../API/bin/Debug/net8.0/Infrastructure.pdb | Bin 19688 -> 26900 bytes backend/API/bin/Debug/net8.0/appsettings.json | 2 +- backend/API/obj/API.csproj.nuget.dgspec.json | 36 +- .../API/obj/Debug/net8.0/API.AssemblyInfo.cs | 2 +- .../Debug/net8.0/API.AssemblyInfoInputs.cache | 2 +- backend/API/obj/Debug/net8.0/API.assets.cache | Bin 31799 -> 37389 bytes .../net8.0/API.csproj.AssemblyReference.cache | Bin 14704 -> 18354 bytes .../net8.0/API.csproj.CoreCompileInputs.cache | 2 +- backend/API/obj/Debug/net8.0/API.dll | Bin 32768 -> 36864 bytes backend/API/obj/Debug/net8.0/API.pdb | Bin 28112 -> 29880 bytes .../API/obj/Debug/net8.0/API.sourcelink.json | 2 +- backend/API/obj/Debug/net8.0/apphost.exe | Bin 142848 -> 142848 bytes backend/API/obj/Debug/net8.0/ref/API.dll | Bin 14336 -> 16384 bytes backend/API/obj/Debug/net8.0/refint/API.dll | Bin 14336 -> 16384 bytes backend/API/obj/project.assets.json | 322 +++++++++++++++++- backend/API/obj/project.nuget.cache | 10 +- backend/API/obj/project.packagespec.json | 2 +- .../API/obj/rider.project.model.nuget.info | 2 +- backend/API/obj/rider.project.restore.info | 2 +- .../Endpoints/Chats/ChatHandler.cs | 150 ++++++++ .../Endpoints/Chats/ChatIdentifier.cs | 18 + .../Endpoints/Chats/GetConversationDto.cs | 7 + .../Chats/GetConversationValidator.cs | 15 + .../Endpoints/Chats/SendMessageDto.cs | 8 + .../Endpoints/Chats/SendMessageValidator.cs | 18 + .../FileManagement/MedicalHistoryCreateDto.cs | 7 + .../MedicalHistoryCreateValidation.cs | 28 ++ .../MedicalHistoryFileManagementHandler.cs | 156 +++++++++ .../FileManagement/MedicalHistoryUpdateDto.cs | 7 + .../MedicalHistoryUpdateValidation.cs | 30 ++ ...icalHistoryManageAuthorizationDoctorDto.cs | 7 + ...edicalHistoryManageAuthorizationHandler.cs | 141 ++++++++ ...calHistoryManageAuthorizationValidation.cs | 39 +++ .../MongoDB/IChatHistoryMongoDbService.cs | 14 +- .../MongoDB/IMedicalHistoryMongoDbService.cs | 10 +- .../Application/Services/Jwt/IJwtService.cs | 10 + .../bin/Debug/net8.0/Application.dll | Bin 59904 -> 76288 bytes .../bin/Debug/net8.0/Application.pdb | Bin 25384 -> 30180 bytes backend/Application/bin/Debug/net8.0/Core.dll | Bin 7680 -> 7680 bytes backend/Application/bin/Debug/net8.0/Core.pdb | Bin 12528 -> 13308 bytes .../obj/Application.csproj.nuget.dgspec.json | 12 +- .../Debug/net8.0/Application.AssemblyInfo.cs | 2 +- .../Application.AssemblyInfoInputs.cache | 2 +- ...Application.csproj.AssemblyReference.cache | Bin 6473 -> 6473 bytes ...Application.csproj.CoreCompileInputs.cache | 2 +- .../obj/Debug/net8.0/Application.dll | Bin 59904 -> 76288 bytes .../obj/Debug/net8.0/Application.pdb | Bin 25384 -> 30180 bytes .../Debug/net8.0/Application.sourcelink.json | 2 +- .../obj/Debug/net8.0/ref/Application.dll | Bin 21504 -> 25088 bytes .../obj/Debug/net8.0/refint/Application.dll | Bin 21504 -> 25088 bytes backend/Application/obj/project.assets.json | 6 +- backend/Application/obj/project.nuget.cache | 2 +- .../Application/obj/project.packagespec.json | 2 +- .../obj/rider.project.model.nuget.info | 2 +- .../obj/rider.project.restore.info | 2 +- backend/Backup/HealthcareManagerAPI.sln | 57 ++++ backend/Core/Entities/Chat.cs | 25 +- backend/Core/bin/Debug/net8.0/Core.dll | Bin 7680 -> 7680 bytes backend/Core/bin/Debug/net8.0/Core.pdb | Bin 12528 -> 13308 bytes .../Core/obj/Core.csproj.nuget.dgspec.json | 6 +- .../obj/Debug/net8.0/Core.AssemblyInfo.cs | 2 +- .../net8.0/Core.AssemblyInfoInputs.cache | 2 +- .../Core.csproj.CoreCompileInputs.cache | 2 +- backend/Core/obj/Debug/net8.0/Core.dll | Bin 7680 -> 7680 bytes backend/Core/obj/Debug/net8.0/Core.pdb | Bin 12528 -> 13308 bytes .../obj/Debug/net8.0/Core.sourcelink.json | 2 +- backend/Core/obj/Debug/net8.0/ref/Core.dll | Bin 7168 -> 6656 bytes backend/Core/obj/Debug/net8.0/refint/Core.dll | Bin 7168 -> 6656 bytes backend/Core/obj/project.assets.json | 6 +- backend/Core/obj/project.nuget.cache | 2 +- backend/Core/obj/project.packagespec.json | 2 +- .../Core/obj/rider.project.model.nuget.info | 2 +- backend/Core/obj/rider.project.restore.info | 2 +- .../HealthcareManagerAPI.sln.DotSettings.user | 3 + backend/Infrastructure/Infrastructure.csproj | 2 + backend/Infrastructure/InfrastructureDI.cs | 39 ++- .../Infrastructure/Services/Jwt/JWTService.cs | 115 +++++++ .../Services/MongoDB/ChatMongoDbService.cs | 4 +- .../MongoDB/MedicalHistoryMongoDbService.cs | 4 +- .../Services/MongoDB/MongoDBServices.cs | 10 +- .../bin/Debug/net8.0/Application.dll | Bin 59904 -> 76288 bytes .../bin/Debug/net8.0/Application.pdb | Bin 25384 -> 30180 bytes .../Infrastructure/bin/Debug/net8.0/Core.dll | Bin 7680 -> 7680 bytes .../Infrastructure/bin/Debug/net8.0/Core.pdb | Bin 12528 -> 13308 bytes .../bin/Debug/net8.0/Infrastructure.dll | Bin 39424 -> 39424 bytes .../bin/Debug/net8.0/Infrastructure.pdb | Bin 19688 -> 26900 bytes .../net8.0/Infrastructure.AssemblyInfo.cs | 2 +- .../Infrastructure.AssemblyInfoInputs.cache | 2 +- .../Debug/net8.0/Infrastructure.assets.cache | Bin 55532 -> 59058 bytes ...rastructure.csproj.AssemblyReference.cache | Bin 21824 -> 23820 bytes ...rastructure.csproj.CoreCompileInputs.cache | 2 +- .../obj/Debug/net8.0/Infrastructure.dll | Bin 39424 -> 39424 bytes .../obj/Debug/net8.0/Infrastructure.pdb | Bin 19688 -> 26900 bytes .../net8.0/Infrastructure.sourcelink.json | 2 +- .../obj/Debug/net8.0/ref/Infrastructure.dll | Bin 14336 -> 14336 bytes .../Debug/net8.0/refint/Infrastructure.dll | Bin 14336 -> 14336 bytes .../Infrastructure.csproj.nuget.dgspec.json | 26 +- .../Infrastructure/obj/project.assets.json | 211 +++++++++++- .../Infrastructure/obj/project.nuget.cache | 7 +- .../obj/project.packagespec.json | 2 +- .../obj/rider.project.model.nuget.info | 2 +- .../obj/rider.project.restore.info | 2 +- backend/UpgradeLog.htm | 282 +++++++++++++++ backend/UpgradeLog2.htm | 268 +++++++++++++++ backend/UpgradeLog3.htm | 268 +++++++++++++++ backend/UpgradeLog4.htm | 268 +++++++++++++++ .../.idea/.gitignore | 13 + .../.idea.HealthcareManagerUI/.idea/.name | 1 + .../.idea/encodings.xml | 4 + .../.idea/indexLayout.xml | 8 + .../.idea.HealthcareManagerUI/.idea/vcs.xml | 7 + frontend/HealthcareManagerUI.sln | 25 ++ .../Components/Layout/AuthLayout.razor | 16 + .../Components/Pages/AlertMessage.razor | 12 + .../Components/Pages/ChooseRolePage.razor | 15 + .../Components/Pages/DashboardPage.razor | 9 + .../Components/Pages/LoginPage.razor | 77 +++++ .../Components/Pages/RegisterPage.razor | 84 +++++ .../Components/Pages/ResetPasswordPage.razor | 75 ++++ .../HealthcareManagerUI.csproj | 14 + .../Models/BaseResponse.cs | 10 + .../Models/PacientRegisterModel.cs | 8 + .../Models/UserRegisterModel.cs | 9 + frontend/HealthcareManagerUI/Program.cs | 34 ++ .../Authentication/AuthenticationService.cs | 129 +++++++ .../Authentication/IAuthenticationService.cs | 18 + .../Services/Http/HttpService.cs | 83 +++++ frontend/HealthcareManagerUI/appsettings.json | 10 + ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../HealthcareManagerUI.AssemblyInfo.cs | 22 ++ ...althcareManagerUI.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 47 +++ .../HealthcareManagerUI.GlobalUsings.g.cs | 17 + .../net8.0/HealthcareManagerUI.assets.cache | Bin 0 -> 159 bytes ...althcareManagerUI.csproj.nuget.dgspec.json | 64 ++++ .../HealthcareManagerUI.csproj.nuget.g.props | 15 + ...HealthcareManagerUI.csproj.nuget.g.targets | 2 + .../obj/project.assets.json | 69 ++++ .../obj/project.nuget.cache | 8 + .../obj/project.packagespec.json | 1 + .../obj/rider.project.model.nuget.info | 1 + .../obj/rider.project.restore.info | 1 + .../wwwroot/AuthLayout.css | 71 ++++ .../HealthcareManagerUI/wwwroot/LoginPage.css | 82 +++++ 164 files changed, 3915 insertions(+), 161 deletions(-) create mode 100644 backend/API/Middlewares/JwtMiddleware.cs create mode 100644 backend/Application/Endpoints/Chats/ChatHandler.cs create mode 100644 backend/Application/Endpoints/Chats/ChatIdentifier.cs create mode 100644 backend/Application/Endpoints/Chats/GetConversationDto.cs create mode 100644 backend/Application/Endpoints/Chats/GetConversationValidator.cs create mode 100644 backend/Application/Endpoints/Chats/SendMessageDto.cs create mode 100644 backend/Application/Endpoints/Chats/SendMessageValidator.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateDto.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateValidation.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryFileManagementHandler.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateDto.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateValidation.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationDoctorDto.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationHandler.cs create mode 100644 backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationValidation.cs create mode 100644 backend/Application/Services/Jwt/IJwtService.cs create mode 100644 backend/Backup/HealthcareManagerAPI.sln create mode 100644 backend/HealthcareManagerAPI.sln.DotSettings.user create mode 100644 backend/Infrastructure/Services/Jwt/JWTService.cs create mode 100644 backend/UpgradeLog.htm create mode 100644 backend/UpgradeLog2.htm create mode 100644 backend/UpgradeLog3.htm create mode 100644 backend/UpgradeLog4.htm create mode 100644 frontend/.idea/.idea.HealthcareManagerUI/.idea/.gitignore create mode 100644 frontend/.idea/.idea.HealthcareManagerUI/.idea/.name create mode 100644 frontend/.idea/.idea.HealthcareManagerUI/.idea/encodings.xml create mode 100644 frontend/.idea/.idea.HealthcareManagerUI/.idea/indexLayout.xml create mode 100644 frontend/.idea/.idea.HealthcareManagerUI/.idea/vcs.xml create mode 100644 frontend/HealthcareManagerUI.sln create mode 100644 frontend/HealthcareManagerUI/Components/Layout/AuthLayout.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/AlertMessage.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/ChooseRolePage.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/DashboardPage.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/LoginPage.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/RegisterPage.razor create mode 100644 frontend/HealthcareManagerUI/Components/Pages/ResetPasswordPage.razor create mode 100644 frontend/HealthcareManagerUI/HealthcareManagerUI.csproj create mode 100644 frontend/HealthcareManagerUI/Models/BaseResponse.cs create mode 100644 frontend/HealthcareManagerUI/Models/PacientRegisterModel.cs create mode 100644 frontend/HealthcareManagerUI/Models/UserRegisterModel.cs create mode 100644 frontend/HealthcareManagerUI/Program.cs create mode 100644 frontend/HealthcareManagerUI/Services/Authentication/AuthenticationService.cs create mode 100644 frontend/HealthcareManagerUI/Services/Authentication/IAuthenticationService.cs create mode 100644 frontend/HealthcareManagerUI/Services/Http/HttpService.cs create mode 100644 frontend/HealthcareManagerUI/appsettings.json create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfo.cs create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfoInputs.cache create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GlobalUsings.g.cs create mode 100644 frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.assets.cache create mode 100644 frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.dgspec.json create mode 100644 frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.props create mode 100644 frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.targets create mode 100644 frontend/HealthcareManagerUI/obj/project.assets.json create mode 100644 frontend/HealthcareManagerUI/obj/project.nuget.cache create mode 100644 frontend/HealthcareManagerUI/obj/project.packagespec.json create mode 100644 frontend/HealthcareManagerUI/obj/rider.project.model.nuget.info create mode 100644 frontend/HealthcareManagerUI/obj/rider.project.restore.info create mode 100644 frontend/HealthcareManagerUI/wwwroot/AuthLayout.css create mode 100644 frontend/HealthcareManagerUI/wwwroot/LoginPage.css diff --git a/.gitignore b/.gitignore index 713c514407034e050a3a18b218b14d276b3bd74a..ef885f5c8d17af3656e5453430c4cd8dd072f5f1 100644 GIT binary patch delta 32 ocmdnOx`TCt0TX8$LlHwhLmorPxFN diff --git a/backend/.vs/HealthcareManagerAPI/v17/.suo b/backend/.vs/HealthcareManagerAPI/v17/.suo index 2190b6593549b1db1ea18ec1fd5c389f8d6971cb..679781a388293e7e4b8dd95f632ed1119e93398a 100644 GIT binary patch delta 6432 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 + diff --git a/backend/API/Controllers/BaseController.cs b/backend/API/Controllers/BaseController.cs index 2587bc2..8f75c2d 100644 --- a/backend/API/Controllers/BaseController.cs +++ b/backend/API/Controllers/BaseController.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; -namespace HealthcareManager.API.Controllers; +namespace API.Controllers; [Route("api/v1/[controller]")] [ApiController] diff --git a/backend/API/Controllers/ChatController.cs b/backend/API/Controllers/ChatController.cs index 47f585e..bd3128d 100644 --- a/backend/API/Controllers/ChatController.cs +++ b/backend/API/Controllers/ChatController.cs @@ -1,13 +1,38 @@ -using Infrastructure.Services.MongoDB; +using Application.Endpoints; +using Application.Endpoints.Chats; +using Application.Services.Database; +using Application.Services.Database.MongoDB; +using Microsoft.AspNetCore.Mvc; -namespace HealthcareManager.API.Controllers; +namespace API.Controllers; public class ChatController : BaseApiController { - private readonly MongoDbService _mongoDbService; + private readonly IChatMongoDbService _chatMongoDbService; + private readonly IPatientRepository _patientRepository; + private readonly IDoctorRepository _doctorRepository; - public ChatController(MongoDbService mongoDbService) + public ChatController(IChatMongoDbService chatMongoDbService, IPatientRepository patientRepository, + IDoctorRepository doctorRepository) { - _mongoDbService = mongoDbService; + _chatMongoDbService = chatMongoDbService; + _patientRepository = patientRepository; + _doctorRepository = doctorRepository; + } + + [HttpPost("send_message")] + public async Task> SendMessage(SendMessageDto sendMessageDto) + { + var handler = new ChatHandler(_chatMongoDbService, _patientRepository, _doctorRepository); + var response = await handler.HandleSendMessage(sendMessageDto).ConfigureAwait(false); + return StatusCode(response.StatusCode, response); + } + + [HttpPost("get_conversation")] + public async Task> GetConversation(GetConversationDto getConversationDto) + { + var handler = new ChatHandler(_chatMongoDbService, _patientRepository, _doctorRepository); + var response = await handler.HandleGetConversation(getConversationDto).ConfigureAwait(false); + return StatusCode(response.StatusCode, response); } } \ No newline at end of file diff --git a/backend/API/Controllers/DoctorsController.cs b/backend/API/Controllers/DoctorsController.cs index a589f37..cdec67d 100644 --- a/backend/API/Controllers/DoctorsController.cs +++ b/backend/API/Controllers/DoctorsController.cs @@ -5,6 +5,8 @@ using Application.Endpoints.Doctors.Registration; using Application.Endpoints.Doctors.ResetPassword; using Application.Services.Database; using Application.Services.HashingAlgorithms; +using Application.Services.Jwt; +using Core.Entities; using Microsoft.AspNetCore.Mvc; namespace API.Controllers; @@ -15,29 +17,77 @@ public class DoctorsController : ControllerBase { private readonly IDoctorRepository _database; private readonly IHashingAlgorithms _hashingAlgorithms; + private readonly IJwtService _jwtService; - public DoctorsController(IDoctorRepository database, IHashingAlgorithms hashingAlgorithms) + public DoctorsController(IDoctorRepository database, IHashingAlgorithms hashingAlgorithms, + IJwtService jwtService) { _database = database; _hashingAlgorithms = hashingAlgorithms; + _jwtService = jwtService; } [HttpPost("register")] - public async Task> Register(DoctorRegistrationDto doctor) + public async Task> Register(DoctorRegistrationDto doctorRegistrationDto) { var handler = new DoctorRegistrationHandler(_database, _hashingAlgorithms); - var response = await handler.Handle(doctor).ConfigureAwait(false); + var response = await handler.Handle(doctorRegistrationDto).ConfigureAwait(false); return StatusCode(response.StatusCode, response); } [HttpPost("login")] - public async Task> Login(DoctorLoginDto doctor) + public async Task> Login(DoctorLoginDto doctorLoginDto) { var handler = new DoctorLoginHandler(_database, _hashingAlgorithms); - var response = await handler.Handle(doctor).ConfigureAwait(false); + var response = await handler.Handle(doctorLoginDto).ConfigureAwait(false); + if (response.Data != null) + { + Doctor doctor = (Doctor)response.Data; + var authToken = _jwtService.GenerateJwtToken(doctor.Email); + + HttpContext.Response.Headers.Add("Authorization", $"Bearer {authToken}"); + } + return StatusCode(response.StatusCode, response); } + [HttpPost("refresh_token")] + public async Task> RefreshToken() + { + var authorizationHeader = Request.Headers["Authorization"].FirstOrDefault(); + if (string.IsNullOrEmpty(authorizationHeader) || !authorizationHeader.StartsWith("Bearer ")) + { + return StatusCode(HttpStatusCodes.BadRequest, new BaseResponse + { + StatusCode = HttpStatusCodes.BadRequest, + Message = "Invalid request header format.", + Data = null + }); + } + + var oldToken = authorizationHeader.Substring("Bearer ".Length).Trim(); + + if (!_jwtService.ValidateJwtToken(oldToken)) + { + return StatusCode(HttpStatusCodes.Unauthorized, new BaseResponse + { + StatusCode = HttpStatusCodes.Unauthorized, + Message = "Invalid JWT token.", + Data = null + }); + } + else + { + var newToken = _jwtService.RefreshToken(oldToken); + return StatusCode(HttpStatusCodes.OK, new BaseResponse + { + StatusCode = HttpStatusCodes.OK, + Message = "Token refreshed successfully.", + Data = new { Token = newToken } + }); + } + } + [HttpPost("reset_password")] public async Task> ResetPassword(DoctorResetPasswordDto resetDoctorDto) { diff --git a/backend/API/Controllers/MedicalHistoryController.cs b/backend/API/Controllers/MedicalHistoryController.cs index d56a1db..d303b08 100644 --- a/backend/API/Controllers/MedicalHistoryController.cs +++ b/backend/API/Controllers/MedicalHistoryController.cs @@ -1,5 +1,6 @@ using Application.Endpoints; -using Application.Endpoints.MedicalHistories; +using Application.Endpoints.MedicalHistories.FileManagement; +using Application.Endpoints.MedicalHistories.ManageAuthorization; using Application.Services.Database; using Application.Services.Database.MongoDB; using Microsoft.AspNetCore.Mvc; @@ -13,19 +14,23 @@ public class MedicalHistoryController : ControllerBase private readonly IMedicalHistoryRepository _medicalHistoryRepository; private readonly IMedicalHistoryMongoDbService _medicalHistoryMongoDbService; private readonly IPatientRepository _patientRepository; + private readonly IDoctorRepository _doctorRepository; public MedicalHistoryController(IMedicalHistoryRepository medicalHistoryRepository, - IPatientRepository patientRepository, IMedicalHistoryMongoDbService mongoDbService) + IPatientRepository patientRepository, IMedicalHistoryMongoDbService mongoDbService, + IDoctorRepository doctorRepository) { _medicalHistoryRepository = medicalHistoryRepository; _patientRepository = patientRepository; _medicalHistoryMongoDbService = mongoDbService; + _doctorRepository = doctorRepository; } [HttpGet("{id}")] public async Task> GetAsync(Guid id) { - var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); + var handler = new MedicalHistoryFileManagementHandler(_medicalHistoryRepository, _patientRepository, + _medicalHistoryMongoDbService); var response = await handler.HandleGet(id); return StatusCode(response.StatusCode, response); } @@ -33,7 +38,8 @@ public class MedicalHistoryController : ControllerBase [HttpGet] public async Task> GetAllDoctors() { - var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); + var handler = new MedicalHistoryFileManagementHandler(_medicalHistoryRepository, _patientRepository, + _medicalHistoryMongoDbService); var response = await handler.HandleGetAll(); return StatusCode(response.StatusCode, response); } @@ -41,7 +47,8 @@ public class MedicalHistoryController : ControllerBase [HttpPost] public async Task> PostAsync(MedicalHistoryCreateDto medicalHistoryCreateDto) { - var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); + var handler = new MedicalHistoryFileManagementHandler(_medicalHistoryRepository, _patientRepository, + _medicalHistoryMongoDbService); var response = await handler.HandleCreate(medicalHistoryCreateDto); return StatusCode(response.StatusCode, response); } @@ -49,7 +56,8 @@ public class MedicalHistoryController : ControllerBase [HttpPut] public async Task> UpdateAsync(MedicalHistoryUpdateDto medicalHistoryUpdateDto) { - var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); + var handler = new MedicalHistoryFileManagementHandler(_medicalHistoryRepository, _patientRepository, + _medicalHistoryMongoDbService); var response = await handler.HandleUpdate(medicalHistoryUpdateDto).ConfigureAwait(false); return StatusCode(response.StatusCode, response); } @@ -57,16 +65,30 @@ public class MedicalHistoryController : ControllerBase [HttpDelete("{id}")] public async Task> DeleteAsync(Guid id) { - var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); + var handler = new MedicalHistoryFileManagementHandler(_medicalHistoryRepository, _patientRepository, + _medicalHistoryMongoDbService); var response = await handler.HandleDelete(id); return StatusCode(response.StatusCode, response); } - /* + [HttpPut("grant_access")] - public async Task> GrantAccessToMedicalHistory(GrantAccessMedicalHistoryDto) + public async Task> GrantAccessToMedicalHistory( + MedicalHistoryManageAuthorizationDoctorDto infoDto) { - return NotFound(); + var handler = new MedicalHistoryManageAuthorizationHandler(_medicalHistoryRepository, + _medicalHistoryMongoDbService, _doctorRepository); + var response = await handler.HandleGrantDoctorAccess(infoDto); + return StatusCode(response.StatusCode, response); + } + + [HttpPut("revoke_access")] + public async Task> RevokeAccessToMedicalHistory( + MedicalHistoryManageAuthorizationDoctorDto infoDto) + { + var handler = new MedicalHistoryManageAuthorizationHandler(_medicalHistoryRepository, + _medicalHistoryMongoDbService, _doctorRepository); + var response = await handler.HandleRevokeDoctorAccess(infoDto); + return StatusCode(response.StatusCode, response); } - */ } \ No newline at end of file diff --git a/backend/API/Controllers/PatientsController.cs b/backend/API/Controllers/PatientsController.cs index 90beb2b..d719f74 100644 --- a/backend/API/Controllers/PatientsController.cs +++ b/backend/API/Controllers/PatientsController.cs @@ -5,6 +5,8 @@ using Application.Endpoints.Patients.Registration; using Application.Endpoints.Patients.ResetPassword; using Application.Services.Database; using Application.Services.HashingAlgorithms; +using Application.Services.Jwt; +using Core.Entities; using Microsoft.AspNetCore.Mvc; namespace API.Controllers; @@ -15,11 +17,14 @@ public class PatientsController : ControllerBase { private readonly IHashingAlgorithms _hashingAlgorithms; private readonly IPatientRepository _patientRepository; + private readonly IJwtService _jwtService; - public PatientsController(IPatientRepository patientRepository, IHashingAlgorithms hashingAlgorithms) + public PatientsController(IPatientRepository patientRepository, IHashingAlgorithms hashingAlgorithms, + IJwtService jwtService) { _patientRepository = patientRepository; _hashingAlgorithms = hashingAlgorithms; + _jwtService = jwtService; } [HttpGet] @@ -43,8 +48,52 @@ public class PatientsController : ControllerBase { var handler = new PatientLoginHandler(_patientRepository); var response = await handler.Handle(patientLoginDto).ConfigureAwait(false); + if (response.Data != null) + { + Patient patient = (Patient)response.Data; + var authToken = _jwtService.GenerateJwtToken(patient.Email); + + HttpContext.Response.Headers.Add("Authorization", $"Bearer {authToken}"); + } return StatusCode(response.StatusCode, response); } + + [HttpPost("refresh_token")] + public async Task> RefreshToken() + { + var authorizationHeader = Request.Headers["Authorization"].FirstOrDefault(); + if (string.IsNullOrEmpty(authorizationHeader) || !authorizationHeader.StartsWith("Bearer ")) + { + return StatusCode(HttpStatusCodes.BadRequest, new BaseResponse + { + StatusCode = HttpStatusCodes.BadRequest, + Message = "Invalid request header format.", + Data = null + }); + } + + var oldToken = authorizationHeader.Substring("Bearer ".Length).Trim(); + + if (!_jwtService.ValidateJwtToken(oldToken)) + { + return StatusCode(HttpStatusCodes.Unauthorized, new BaseResponse + { + StatusCode = HttpStatusCodes.Unauthorized, + Message = "Invalid JWT token.", + Data = null + }); + } + else + { + var newToken = _jwtService.RefreshToken(oldToken); + return StatusCode(HttpStatusCodes.OK, new BaseResponse + { + StatusCode = HttpStatusCodes.OK, + Message = "Token refreshed successfully.", + Data = new { Token = newToken } + }); + } + } [HttpPost("register")] public async Task> Register(PatientRegistrationDto patientRegistrationDto) diff --git a/backend/API/Middlewares/JwtMiddleware.cs b/backend/API/Middlewares/JwtMiddleware.cs new file mode 100644 index 0000000..ee0c2f2 --- /dev/null +++ b/backend/API/Middlewares/JwtMiddleware.cs @@ -0,0 +1,57 @@ +using System.Text.Json; +using Application.Endpoints; + +namespace API.Middlewares; + +using Microsoft.AspNetCore.Http; +using System.Threading.Tasks; +using System.Linq; +using Application.Services.Jwt; + +public class JwtMiddleware +{ + private readonly RequestDelegate _next; + private readonly IJwtService _jwtService; + + public JwtMiddleware(RequestDelegate next, IJwtService jwtService) + { + _next = next; + _jwtService = jwtService; + } + + public async Task Invoke(HttpContext context) + { + var path = context.Request.Path.ToString().ToLower(); + + // Define the paths that should bypass JWT validation + var bypassPaths = new string[] + { + "/api/doctors/login", + "/api/doctors/register", + "/api/patients/login", + "/api/patients/register" + }; + + if (!bypassPaths.Contains(path)) + { + var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last(); + if (token != null && _jwtService.ValidateJwtToken(token)) + { + await _next(context); + } + else + { + context.Response.StatusCode = StatusCodes.Status401Unauthorized; + context.Response.ContentType = "application/json"; + var response = new BaseResponse + { + StatusCode = StatusCodes.Status401Unauthorized, + Message = "Invalid JWT Token", + Data = null + }; + var responseJson = JsonSerializer.Serialize(response); + await context.Response.WriteAsync(responseJson); + } + } + } +} \ No newline at end of file diff --git a/backend/API/Program.cs b/backend/API/Program.cs index 613c55b..d68d8ef 100644 --- a/backend/API/Program.cs +++ b/backend/API/Program.cs @@ -1,9 +1,15 @@ +using System.Text; using API.Middlewares; using Infrastructure; using Infrastructure.Data; using Microsoft.EntityFrameworkCore; +using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.IdentityModel.Tokens; +using System.Text; + var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); @@ -46,7 +52,19 @@ if (app.Environment.IsDevelopment()) } app.UseHttpsRedirection(); -app.UseAuthorization(); + +builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:SecretKey"])), + ValidateIssuer = false, + ValidateAudience = false, + ClockSkew = TimeSpan.Zero + }; + }); app.MapControllers(); diff --git a/backend/API/appsettings.json b/backend/API/appsettings.json index 41a5cdc..a10feee 100644 --- a/backend/API/appsettings.json +++ b/backend/API/appsettings.json @@ -17,5 +17,11 @@ "ApiKeySettings": { "ApiKey": "testapikey" }, + "Jwt": { + "SecretKey": "HealthcareManagerJwtKey", + "Issuer": "HealthcareManager", + "Audience": "HealthCareManagerUsers", + "ExpirationMinutes": 1440 + }, "AllowedHosts": "*" } diff --git a/backend/API/bin/Debug/net8.0/API.dll b/backend/API/bin/Debug/net8.0/API.dll index 7f1157a8934d3fdfe31c779f368127c038e56f13..97022a56bc6d5cc9b756a1c58281d8bf203357a5 100644 GIT binary patch literal 36864 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�qJUEVUte0RK8$w|K{PUQ$579Zp&< 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 literal 32768 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 diff --git a/backend/API/bin/Debug/net8.0/API.exe b/backend/API/bin/Debug/net8.0/API.exe index 8f171b50db8f5ace6781f268b148da6535206863..cf6299a7fad425a6ac7c48db98766ffeefd11f43 100644 GIT binary patch delta 99 zcmZp;!_fdlEsR^3&S?3YFjz38G9)n=F(fjiFeC$6DGY`TCJdH9b_#73BOp78A$7a7Hq%ok06oVOKL7v# delta 99 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 delta 3896 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
  • ;5_A(PqFwq3Vd4}^0&oMm5 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 diff --git a/backend/Application/bin/Debug/net8.0/Application.pdb b/backend/Application/bin/Debug/net8.0/Application.pdb index 9acaaf3735df6ab960b61ebb8b328f8adc6bc04f..582da16c63abc5b408132b7e5f0912daa232bfc5 100644 GIT binary patch delta 11855 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 A!vFvP literal 7680 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 GA^is+i>$c- diff --git a/backend/Application/obj/Application.csproj.nuget.dgspec.json b/backend/Application/obj/Application.csproj.nuget.dgspec.json index dd8cc07..19ba6c9 100644 --- a/backend/Application/obj/Application.csproj.nuget.dgspec.json +++ b/backend/Application/obj/Application.csproj.nuget.dgspec.json @@ -14,14 +14,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -69,7 +67,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } }, @@ -83,14 +81,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -130,7 +126,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/Application/obj/Debug/net8.0/Application.AssemblyInfo.cs b/backend/Application/obj/Debug/net8.0/Application.AssemblyInfo.cs index 9e74a7f..67cba58 100644 --- a/backend/Application/obj/Debug/net8.0/Application.AssemblyInfo.cs +++ b/backend/Application/obj/Debug/net8.0/Application.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Application")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+61a55fa7353346bdad2d677f0ec3c044c3aa87d5")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90604e48ae9f78fa417a446c05f7759001447de5")] [assembly: System.Reflection.AssemblyProductAttribute("Application")] [assembly: System.Reflection.AssemblyTitleAttribute("Application")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/backend/Application/obj/Debug/net8.0/Application.AssemblyInfoInputs.cache b/backend/Application/obj/Debug/net8.0/Application.AssemblyInfoInputs.cache index 9944b37..2d8e3ba 100644 --- a/backend/Application/obj/Debug/net8.0/Application.AssemblyInfoInputs.cache +++ b/backend/Application/obj/Debug/net8.0/Application.AssemblyInfoInputs.cache @@ -1 +1 @@ -ca8d9dbfc6e022b60b63524e70a3acb8ce1eaa86a2b066fce9c4864553b6125d +4068cc9959fca65509f12b041892bbe15b7b0ed4cb99494d72cf4e4d471b7ce1 diff --git a/backend/Application/obj/Debug/net8.0/Application.csproj.AssemblyReference.cache b/backend/Application/obj/Debug/net8.0/Application.csproj.AssemblyReference.cache index c92b39032f7dc14ac53c4cb0033e3fd7a13b7978..070add5af006018bbbb9983d7518782c5f2fe0fa 100644 GIT binary patch delta 16 XcmX?Ubkb--7Hfx5qVkfB`L`qhJ9q}_ delta 16 XcmX?Ubkb--7Hg-)J1f_X`L`qhK060C diff --git a/backend/Application/obj/Debug/net8.0/Application.csproj.CoreCompileInputs.cache b/backend/Application/obj/Debug/net8.0/Application.csproj.CoreCompileInputs.cache index 2f0a718..61c98ff 100644 --- a/backend/Application/obj/Debug/net8.0/Application.csproj.CoreCompileInputs.cache +++ b/backend/Application/obj/Debug/net8.0/Application.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -e99f7362e6da84368608067cdbb0c281eef010bca303f59d33c712edf6a9964f +a14527b9f0436826149b6114fc93ca0d3615f169c5065e509d90189e6d49d7bf diff --git a/backend/Application/obj/Debug/net8.0/Application.dll b/backend/Application/obj/Debug/net8.0/Application.dll index 7a8b24f479184672e6f0fe12b416217f6f6159a6..ac54dcf25ed90746701c41b5607b31ab85d9d7f6 100644 GIT binary patch literal 76288 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
  • ;5_A(PqFwq3Vd4}^0&oMm5 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 diff --git a/backend/Application/obj/Debug/net8.0/Application.pdb b/backend/Application/obj/Debug/net8.0/Application.pdb index 9acaaf3735df6ab960b61ebb8b328f8adc6bc04f..582da16c63abc5b408132b7e5f0912daa232bfc5 100644 GIT binary patch delta 11855 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

    y+usgYUjwd-{ZM@( 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

    y+usgYUjwd-{ZM@( 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 gmB1 Messages { get; private set; } = new(); - public Guid PatientId { get; set; } - public Guid DoctorId { get; set; } - - public List Messages { get; set; } = new(); + public void SetId(string id) { Id = id; } + public void SetMessages(List messages) { Messages = messages; } } public class Message { - [BsonRepresentation(BsonType.String)] public Guid UserId { get; set; } + public Message(Guid userId, string content) + { + UserId = userId; + Content = content; + } + + [BsonRepresentation(BsonType.String)] + public Guid UserId { get; private set; } - public string Content { get; set; } + public string Content { get; private set; } + + public void SetUserId(Guid userId) { UserId = userId; } + public void SetContent(string content) { Content = content; } } \ No newline at end of file diff --git a/backend/Core/bin/Debug/net8.0/Core.dll b/backend/Core/bin/Debug/net8.0/Core.dll index 02b0d4689a3b78c659f41dd00b70416e72ee5f74..62444bc073370050d6609d87acea8c5efc65b1d5 100644 GIT binary patch delta 3208 zcmZ{mdu$w66~@0ikM;Vs-nDoAh~uzpC-LH@re51|9Gb?i`-nx8+HxG?(x~2-gDG{| z*bvdg*>zk(LQ^SbP%6=i+LTslpeVrtTB$-Y0V+WSNL5u{Dhcoh5ds7f5}?xX-80uw z2-K_j&H2uE&YhX-y?3X0d-3+uC!EVy=g%&jT5Fx_S~#~yje1J8y17nZx0kRsd1I>8 zIv@3psiO@iyC8o%NDD5;n*k>RD6gZg#~ZSm2ijoSNec*|O+rV)UDk9pP&P}$v63|m z(KcZM-B6~hEGJo^&)#EJi{C71KNP2J&-I>Ul!GLB>45j5wcfjGb$WN$+v{1jdI4B| zO+v|c|a6rk& zy}vrK!gp*%t*hU$`kesw*qU#vcBcwynavMbkJ|xkvtK8lv@~}J^TPLp^}-*@2z4^T zAC(@b)4j<0*Cc*{V+QbVvJ46lUhxySSg=EQT1A}@&RH)z)ws?6JBuD+o4%=_28;D4 zjCS`qXWMm^R$AGt(O#>gm5VA-(^6T64~W_-suCNi4&Wa08V1RE45OgXpmgd0g~GSQ z{;}{G;ctb$s~dFv==;_W#q|vz4{pL3Yxato3wH7b71E-P2Oo9z@yk5vdxhYvGeLRK zH<4zkjaj2UPtU;#U)3i#GcKOJt{$cOwy%O)aR?>&uBf@--8e$^y7BIG$2dzrHQp{a zO!af$Lt%)erTCqZ56~>bpM514EQiBywEs+pP>u>w`k9VU#f&$p#!!JK;~i9Cs*T3` zqCJL6v>Wfsc9^Qic&P##L)dQ2?Q9HThcSP_#wrXM?+(b5n?8 z8j~tvco;LP6(7S%)y_5XRkZU9_cGatH^>&eMc#rMx}9huKa3RwA^T*w zenUOz0J4}OAI7X2mweh#yIFCw;!bim`+_QpJ7=hC=2JgSCzXY9sUV5KLK^rgO zNj}Yr*ehaRlD13Ic17}6B(IcyZl&}PafuU#I@2d{zoE_yDn0VJWYUH@UzB)GO&4g- z$#6@OT9WuBXG*55=KT`CE3xmc)<5^Y_5MW_m$NO0%bRdea4AapW1)B( zC5+3d6nF1Z#$hVG$jTX4^A;7q*OiQ;@-rJFE$)I5=Icm{TUiZbZefh$+({J@q=jbs zitC_`@p}3S8%PVSXl$cMa-mpUzfFwWNQ;X_|8j34EiSnP<8~yxYn8FlMQ$GcTLB-G zf7@_^nVWNs`W=V8`ZZ|vFUk$)=DIf}cZ)X}`e@Baer9w!e{e8|Px+^jy!Ve#@A5=d zTrHmo|HP_f#m@Znbb5b&8jpAn)?BJ!X5hfoOnzzxS+732G5pJL^x^TT)BOvly04yj z=MRJ4P;^6KG!U!asj4e@vB+>BtkAR$cA0X6=eIvph`d#{)e3}4OpP6g4BLSw*N!6; z+4<1k+pwO3%8a02TYae A!vFvP literal 7680 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 GA^is+i>$c- diff --git a/backend/Core/obj/Core.csproj.nuget.dgspec.json b/backend/Core/obj/Core.csproj.nuget.dgspec.json index 9823e4f..55cdb2d 100644 --- a/backend/Core/obj/Core.csproj.nuget.dgspec.json +++ b/backend/Core/obj/Core.csproj.nuget.dgspec.json @@ -14,14 +14,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -61,7 +59,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/Core/obj/Debug/net8.0/Core.AssemblyInfo.cs b/backend/Core/obj/Debug/net8.0/Core.AssemblyInfo.cs index 041072b..1ccf283 100644 --- a/backend/Core/obj/Debug/net8.0/Core.AssemblyInfo.cs +++ b/backend/Core/obj/Debug/net8.0/Core.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Core")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2ccec617a59a712428e67340dc46bebefb152aca")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90604e48ae9f78fa417a446c05f7759001447de5")] [assembly: System.Reflection.AssemblyProductAttribute("Core")] [assembly: System.Reflection.AssemblyTitleAttribute("Core")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/backend/Core/obj/Debug/net8.0/Core.AssemblyInfoInputs.cache b/backend/Core/obj/Debug/net8.0/Core.AssemblyInfoInputs.cache index 9e003ed..d329607 100644 --- a/backend/Core/obj/Debug/net8.0/Core.AssemblyInfoInputs.cache +++ b/backend/Core/obj/Debug/net8.0/Core.AssemblyInfoInputs.cache @@ -1 +1 @@ -232a219588f79d4fe98faad4c868c44fc40b96e3f6b7bc8086f4447599f3e74e +5ede8fc56c8888c470a0873d22c6c4a215f0f44ccdf0f65ca635f6a6e2268a9e diff --git a/backend/Core/obj/Debug/net8.0/Core.csproj.CoreCompileInputs.cache b/backend/Core/obj/Debug/net8.0/Core.csproj.CoreCompileInputs.cache index d0352f9..2feed48 100644 --- a/backend/Core/obj/Debug/net8.0/Core.csproj.CoreCompileInputs.cache +++ b/backend/Core/obj/Debug/net8.0/Core.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -481a6e81c3fb29f18f770ac0db64e6d4af0d1f426e06832b919c28802ccff560 +6236e3f912b0532e598b72e522cff0eefd892ca01f330905ca686a017c34f569 diff --git a/backend/Core/obj/Debug/net8.0/Core.dll b/backend/Core/obj/Debug/net8.0/Core.dll index 02b0d4689a3b78c659f41dd00b70416e72ee5f74..62444bc073370050d6609d87acea8c5efc65b1d5 100644 GIT binary patch delta 3208 zcmZ{mdu$w66~@0ikM;Vs-nDoAh~uzpC-LH@re51|9Gb?i`-nx8+HxG?(x~2-gDG{| z*bvdg*>zk(LQ^SbP%6=i+LTslpeVrtTB$-Y0V+WSNL5u{Dhcoh5ds7f5}?xX-80uw z2-K_j&H2uE&YhX-y?3X0d-3+uC!EVy=g%&jT5Fx_S~#~yje1J8y17nZx0kRsd1I>8 zIv@3psiO@iyC8o%NDD5;n*k>RD6gZg#~ZSm2ijoSNec*|O+rV)UDk9pP&P}$v63|m z(KcZM-B6~hEGJo^&)#EJi{C71KNP2J&-I>Ul!GLB>45j5wcfjGb$WN$+v{1jdI4B| zO+v|c|a6rk& zy}vrK!gp*%t*hU$`kesw*qU#vcBcwynavMbkJ|xkvtK8lv@~}J^TPLp^}-*@2z4^T zAC(@b)4j<0*Cc*{V+QbVvJ46lUhxySSg=EQT1A}@&RH)z)ws?6JBuD+o4%=_28;D4 zjCS`qXWMm^R$AGt(O#>gm5VA-(^6T64~W_-suCNi4&Wa08V1RE45OgXpmgd0g~GSQ z{;}{G;ctb$s~dFv==;_W#q|vz4{pL3Yxato3wH7b71E-P2Oo9z@yk5vdxhYvGeLRK zH<4zkjaj2UPtU;#U)3i#GcKOJt{$cOwy%O)aR?>&uBf@--8e$^y7BIG$2dzrHQp{a zO!af$Lt%)erTCqZ56~>bpM514EQiBywEs+pP>u>w`k9VU#f&$p#!!JK;~i9Cs*T3` zqCJL6v>Wfsc9^Qic&P##L)dQ2?Q9HThcSP_#wrXM?+(b5n?8 z8j~tvco;LP6(7S%)y_5XRkZU9_cGatH^>&eMc#rMx}9huKa3RwA^T*w zenUOz0J4}OAI7X2mweh#yIFCw;!bim`+_QpJ7=hC=2JgSCzXY9sUV5KLK^rgO zNj}Yr*ehaRlD13Ic17}6B(IcyZl&}PafuU#I@2d{zoE_yDn0VJWYUH@UzB)GO&4g- z$#6@OT9WuBXG*55=KT`CE3xmc)<5^Y_5MW_m$NO0%bRdea4AapW1)B( zC5+3d6nF1Z#$hVG$jTX4^A;7q*OiQ;@-rJFE$)I5=Icm{TUiZbZefh$+({J@q=jbs zitC_`@p}3S8%PVSXl$cMa-mpUzfFwWNQ;X_|8j34EiSnP<8~yxYn8FlMQ$GcTLB-G zf7@_^nVWNs`W=V8`ZZ|vFUk$)=DIf}cZ)X}`e@Baer9w!e{e8|Px+^jy!Ve#@A5=d zTrHmo|HP_f#m@Znbb5b&8jpAn)?BJ!X5hfoOnzzxS+732G5pJL^x^TT)BOvly04yj z=MRJ4P;^6KG!U!asj4e@vB+>BtkAR$cA0X6=eIvph`d#{)e3}4OpP6g4BLSw*N!6; z+4<1k+pwO3%8a02TYae A!vFvP literal 7680 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 GA^is+i>$c- diff --git a/backend/Core/obj/Debug/net8.0/Core.sourcelink.json b/backend/Core/obj/Debug/net8.0/Core.sourcelink.json index e351cc3..84ecd88 100644 --- a/backend/Core/obj/Debug/net8.0/Core.sourcelink.json +++ b/backend/Core/obj/Debug/net8.0/Core.sourcelink.json @@ -1 +1 @@ -{"documents":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\*":"https://raw.githubusercontent.com/andrei-mihnea-cerbu/CC-FinalProj/2ccec617a59a712428e67340dc46bebefb152aca/*"}} \ No newline at end of file +{"documents":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\*":"https://raw.githubusercontent.com/andrei-mihnea-cerbu/CC-FinalProj/48eb2adcbd149cd66c77ba558f492179d2bf29be/*"}} \ No newline at end of file diff --git a/backend/Core/obj/Debug/net8.0/ref/Core.dll b/backend/Core/obj/Debug/net8.0/ref/Core.dll index 57e2a13fb97eea809aa41c1fc6ec254f72691e82..5106d40832449de50e24774405105e137cfa9471 100644 GIT binary patch delta 2153 zcmZWqUu;uV9RAL^w_UfI2Cn1QHWq`s7Rq^F`w$JZkoU3C0H^@kJ7i-}$xO?ew19?|k3y-#O>r zbMBq*n~z_7f7^w>CVofxTE(_Vz1j@~Xz-PcM^X#dUQlq9>h#M`dR)v217y!w%9{AqR3zJBNSv)`V0Xf3w9^~_SxexOX zaFxfd7^gUWzkSX+Al#_;P*Ps;g{_jR7d2dtY-keMQkHGbgPKjnNoyCaqe(Ns1-#5s zu9~rW`7X-7WIWJ-J1NB&iaay^=_yrnVPH2dR?`j z1G=i+J_7$*-Y)w^S4qvlnvcsZ@<3G{n^~``%z9mA*1M);O|CL)YN%AfEZ1u`w?ann zH203e7`etEcXo-ZGB1{bE=lND+PHbdh<^%yy9(FG)WUC>4QqBq3$cz9G`ySGhf+0pLl?q$m$(^U5IgAY z!VX*`_TWD8NjxMD;BVsdsAJZc*k2(grP=^q$9^?{0tQtvDXwnW;dP*QM8Q1iuEY&H*^ha20=tp^-q15Q|J;xJw#?zN5O74%jjv$!w&>BpUZt)np#bZU86D{Z1QHD6*hb~9sefdl*oy%r&-SPfx zuD3UvNMzD`_Vi81`(xdS{#-0G9qZ5JorQ3Zvl0%5qUC?CndsAoCl}hAbUfw!6TY_; zXu76H;^;%3ACef-$ng+nh~0?ud}qme*|JEmW$53-)`w~F#u$}gRF0V$+G6Ax)P@@Kner4$ym0otOFTr4uu9crgJj{4C}grlb0#0F9gG_ zk`NY&5pPULOvnh~1AI~z4Jsd&VB!})NTPf+H5!w}D1I=87^D8r)3tXaF*Z5B^ZcKe z)AQV(dv9~`T*tfT*Tr9JyoI?>9_yl&ss#wq5hyq}_FcR&q`q;Ls`uUM1y;Fhb(6ba z?W<@CGNX$lfa0PFx8L8;SycwqodI6w{Dw_?AbWD`#E}V8_j@Hk7wQHF@PM}2W!>(< z4 zd2A=|su?SS=X5~!Rk-+yd5TSR+c&Llv5lHWL77!T*k=_~ji}?cQ;@YHd*=$H=&5PkhZl+X+FL-GK z#V-lskK%Jl|{8Y>9F6bqLjUP%5?83)4it#?Y*cj)urryPf5SQQq25> zo-*xv>YjGyOVe*DC_Q<~^i)$^6s9M0wlJ|{0L6cs>P=wqBzaI>XAlL zHR3GoM!bz@R5O3C{ou7L;kD zOE@gd2`80_PKiA$HuPyYml5T}0^zVQC!En{zj+}nV-H&vGx^JOzrQl6DnuHpNj*+uRkJ zM>I@Ect$kG5^^z?kt=y@HCAy}SWRj?!dYPrsj(Jo98T+KXdbCLay>S{&J|uc-2U8W zmh;>TRyg(EPQhMEUp*wZG znbEOy>e!yK39f!hzWL!-zMBiLNe%`++6Cjr(&qja2?hV+AC}^0X`dThRI3Ah?xTx-oNm!gYC5?1hTa$B^C684 zM>`)w38b)v526&UR>TnJ=wP&+x{a!ZhcnH&9V7IbahPmnO^h{Zq^8T3DWw~B$UmNo HEoJ`#5Se%% diff --git a/backend/Core/obj/Debug/net8.0/refint/Core.dll b/backend/Core/obj/Debug/net8.0/refint/Core.dll index 57e2a13fb97eea809aa41c1fc6ec254f72691e82..5106d40832449de50e24774405105e137cfa9471 100644 GIT binary patch delta 2153 zcmZWqUu;uV9RAL^w_UfI2Cn1QHWq`s7Rq^F`w$JZkoU3C0H^@kJ7i-}$xO?ew19?|k3y-#O>r zbMBq*n~z_7f7^w>CVofxTE(_Vz1j@~Xz-PcM^X#dUQlq9>h#M`dR)v217y!w%9{AqR3zJBNSv)`V0Xf3w9^~_SxexOX zaFxfd7^gUWzkSX+Al#_;P*Ps;g{_jR7d2dtY-keMQkHGbgPKjnNoyCaqe(Ns1-#5s zu9~rW`7X-7WIWJ-J1NB&iaay^=_yrnVPH2dR?`j z1G=i+J_7$*-Y)w^S4qvlnvcsZ@<3G{n^~``%z9mA*1M);O|CL)YN%AfEZ1u`w?ann zH203e7`etEcXo-ZGB1{bE=lND+PHbdh<^%yy9(FG)WUC>4QqBq3$cz9G`ySGhf+0pLl?q$m$(^U5IgAY z!VX*`_TWD8NjxMD;BVsdsAJZc*k2(grP=^q$9^?{0tQtvDXwnW;dP*QM8Q1iuEY&H*^ha20=tp^-q15Q|J;xJw#?zN5O74%jjv$!w&>BpUZt)np#bZU86D{Z1QHD6*hb~9sefdl*oy%r&-SPfx zuD3UvNMzD`_Vi81`(xdS{#-0G9qZ5JorQ3Zvl0%5qUC?CndsAoCl}hAbUfw!6TY_; zXu76H;^;%3ACef-$ng+nh~0?ud}qme*|JEmW$53-)`w~F#u$}gRF0V$+G6Ax)P@@Kner4$ym0otOFTr4uu9crgJj{4C}grlb0#0F9gG_ zk`NY&5pPULOvnh~1AI~z4Jsd&VB!})NTPf+H5!w}D1I=87^D8r)3tXaF*Z5B^ZcKe z)AQV(dv9~`T*tfT*Tr9JyoI?>9_yl&ss#wq5hyq}_FcR&q`q;Ls`uUM1y;Fhb(6ba z?W<@CGNX$lfa0PFx8L8;SycwqodI6w{Dw_?AbWD`#E}V8_j@Hk7wQHF@PM}2W!>(< z4 zd2A=|su?SS=X5~!Rk-+yd5TSR+c&Llv5lHWL77!T*k=_~ji}?cQ;@YHd*=$H=&5PkhZl+X+FL-GK z#V-lskK%Jl|{8Y>9F6bqLjUP%5?83)4it#?Y*cj)urryPf5SQQq25> zo-*xv>YjGyOVe*DC_Q<~^i)$^6s9M0wlJ|{0L6cs>P=wqBzaI>XAlL zHR3GoM!bz@R5O3C{ou7L;kD zOE@gd2`80_PKiA$HuPyYml5T}0^zVQC!En{zj+}nV-H&vGx^JOzrQl6DnuHpNj*+uRkJ zM>I@Ect$kG5^^z?kt=y@HCAy}SWRj?!dYPrsj(Jo98T+KXdbCLay>S{&J|uc-2U8W zmh;>TRyg(EPQhMEUp*wZG znbEOy>e!yK39f!hzWL!-zMBiLNe%`++6Cjr(&qja2?hV+AC}^0X`dThRI3Ah?xTx-oNm!gYC5?1hTa$B^C684 zM>`)w38b)v526&UR>TnJ=wP&+x{a!ZhcnH&9V7IbahPmnO^h{Zq^8T3DWw~B$UmNo HEoJ`#5Se%% diff --git a/backend/Core/obj/project.assets.json b/backend/Core/obj/project.assets.json index 67b5972..9aa5c4a 100644 --- a/backend/Core/obj/project.assets.json +++ b/backend/Core/obj/project.assets.json @@ -137,14 +137,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -184,7 +182,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/Core/obj/project.nuget.cache b/backend/Core/obj/project.nuget.cache index 2752587..3810bab 100644 --- a/backend/Core/obj/project.nuget.cache +++ b/backend/Core/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "7w8jrDBwgqCxUk4JCLDDAjFhEwshlhuMIblS2oyN6q5PKozln6O0dA8f6jN7yAtN9OFFP5VyVOSdJRz2HZbDHQ==", + "dgSpecHash": "nUJYWQem8SFagSjBlwYcU+nbTi53nWZSxYTrPiHNTHcOWnBld4SMEechWWzFO+t4nThl0DYYE7H20aSoUlJA8A==", "success": true, "projectFilePath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj", "expectedPackageFiles": [ diff --git a/backend/Core/obj/project.packagespec.json b/backend/Core/obj/project.packagespec.json index 7f5d9cb..e493125 100644 --- a/backend/Core/obj/project.packagespec.json +++ b/backend/Core/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj","projectName":"Core","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"MongoDB.Bson":{"target":"Package","version":"[2.24.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj","projectName":"Core","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"MongoDB.Bson":{"target":"Package","version":"[2.24.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/backend/Core/obj/rider.project.model.nuget.info b/backend/Core/obj/rider.project.model.nuget.info index f1b88e0..756c08a 100644 --- a/backend/Core/obj/rider.project.model.nuget.info +++ b/backend/Core/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17122552827080702 \ No newline at end of file +17125558124496805 \ No newline at end of file diff --git a/backend/Core/obj/rider.project.restore.info b/backend/Core/obj/rider.project.restore.info index 3b72989..5cd0972 100644 --- a/backend/Core/obj/rider.project.restore.info +++ b/backend/Core/obj/rider.project.restore.info @@ -1 +1 @@ -17125075151943813 \ No newline at end of file +17125685577652628 \ No newline at end of file diff --git a/backend/HealthcareManagerAPI.sln.DotSettings.user b/backend/HealthcareManagerAPI.sln.DotSettings.user new file mode 100644 index 0000000..622dbc0 --- /dev/null +++ b/backend/HealthcareManagerAPI.sln.DotSettings.user @@ -0,0 +1,3 @@ + + + C:\Users\Andrei Cerbu\.dotnet\sdk\8.0.203\MSBuild.dll \ No newline at end of file diff --git a/backend/Infrastructure/Infrastructure.csproj b/backend/Infrastructure/Infrastructure.csproj index 6b60d16..9d82a19 100644 --- a/backend/Infrastructure/Infrastructure.csproj +++ b/backend/Infrastructure/Infrastructure.csproj @@ -16,8 +16,10 @@ + + diff --git a/backend/Infrastructure/InfrastructureDI.cs b/backend/Infrastructure/InfrastructureDI.cs index 15b22b8..b63491a 100644 --- a/backend/Infrastructure/InfrastructureDI.cs +++ b/backend/Infrastructure/InfrastructureDI.cs @@ -1,10 +1,13 @@ using Application.Services.Database; using Application.Services.Database.MongoDB; using Application.Services.HashingAlgorithms; +using Application.Services.Jwt; + using Infrastructure.Data; using Infrastructure.Services.HashingAlgorithms; using Infrastructure.Services.MongoDB; using Infrastructure.Services.PostgreSQL; + using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -25,29 +28,39 @@ public static class DependencyInjection services.AddScoped(); services.AddScoped(); - // MongoDB Service - var mongoDbConnectionString = configuration.GetValue("ConnectionStrings:MongoDBConnection"); - - // Extract MongoDB database names - var healthcareManagerDatabaseName = configuration.GetValue("HealthcareManagerDatabase:Name"); - var medicalHistoryCollectionName = configuration.GetValue("HealthcareManagerDatabase:MedicalRecordCollectionName"); - var chatCollectionName = configuration.GetValue("HealthcareManagerDatabase:ChatCollectionName"); - - // Register MongoDB services + // MongoDB services services.AddSingleton(serviceProvider => - new MedicalHistoryMongoDbService(mongoDbConnectionString, healthcareManagerDatabaseName, medicalHistoryCollectionName)); + { + var configuration = serviceProvider.GetRequiredService(); + var connectionString = configuration.GetConnectionString("MongoDBConnection"); + var databaseName = configuration["HealthcareManagerDatabase:Name"]; + var collectionName = configuration["HealthcareManagerDatabase:MedicalRecordCollectionName"]; + return new MedicalHistoryMongoDbService(connectionString, databaseName, collectionName); + }); + services.AddSingleton(serviceProvider => - new ChatMongoDbService(mongoDbConnectionString, healthcareManagerDatabaseName, chatCollectionName)); - + { + var configuration = serviceProvider.GetRequiredService(); + var connectionString = configuration.GetConnectionString("MongoDBConnection"); + var databaseName = configuration["HealthcareManagerDatabase:Name"]; + var collectionName = configuration["HealthcareManagerDatabase:ChatCollectionName"]; + return new ChatMongoDbService(connectionString, databaseName, collectionName); + }); + // Other Services services.AddScoped(); + services.AddSingleton(serviceProvider => + { + var configuration = serviceProvider.GetRequiredService(); + return new JwtService(configuration); + }); // services.AddScoped(); return services; } - + private static string ExtractMongoDbDatabaseName(string connectionString) { var connectionStringBuilder = new MongoUrlBuilder(connectionString); diff --git a/backend/Infrastructure/Services/Jwt/JWTService.cs b/backend/Infrastructure/Services/Jwt/JWTService.cs new file mode 100644 index 0000000..e32f613 --- /dev/null +++ b/backend/Infrastructure/Services/Jwt/JWTService.cs @@ -0,0 +1,115 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.IdentityModel.Tokens; +using System; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; +using Application.Services.Jwt; + +public class JwtService : IJwtService +{ + private readonly string _secretKey; + private readonly string _issuer; + private readonly string _audience; + private readonly double _expiryMinutes; + + public JwtService(IConfiguration configuration) + { + _secretKey = configuration["Jwt:SecretKey"]; + _issuer = configuration["Jwt:Issuer"]; + _audience = configuration["Jwt:Audience"]; + _expiryMinutes = double.Parse(configuration["Jwt:ExpiryMinutes"]); + } + + public string GenerateJwtToken(string email) + { + var tokenHandler = new JwtSecurityTokenHandler(); + var key = Encoding.ASCII.GetBytes(_secretKey); + var tokenDescriptor = new SecurityTokenDescriptor + { + Subject = new ClaimsIdentity(new[] + { + new Claim(ClaimTypes.Email, email) + }), + Expires = DateTime.UtcNow.AddMinutes(_expiryMinutes), + Issuer = _issuer, + Audience = _audience, + SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) + }; + + var token = tokenHandler.CreateToken(tokenDescriptor); + return tokenHandler.WriteToken(token); + } + + public bool ValidateJwtToken(string token) + { + if (string.IsNullOrWhiteSpace(token)) + return false; + + var tokenHandler = new JwtSecurityTokenHandler(); + var key = Encoding.ASCII.GetBytes(_secretKey); + try + { + tokenHandler.ValidateToken(token, new TokenValidationParameters + { + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(key), + ValidateIssuer = true, + ValidateAudience = true, + ValidIssuer = _issuer, + ValidAudience = _audience, + ClockSkew = TimeSpan.Zero, + }, out SecurityToken validatedToken); + + return true; + } + catch + { + return false; + } + } + + public string RefreshToken(string token) + { + var principal = ValidateTokenAndGetPrincipal(token); + if (principal == null) + { + throw new SecurityTokenException("Invalid token."); + } + + var emailClaim = principal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email); + if (emailClaim == null) + { + throw new SecurityTokenException("Token does not contain an email claim."); + } + + return GenerateJwtToken(emailClaim.Value); + } + + private ClaimsPrincipal ValidateTokenAndGetPrincipal(string token) + { + var tokenHandler = new JwtSecurityTokenHandler(); + var key = Encoding.ASCII.GetBytes(_secretKey); + try + { + var principal = tokenHandler.ValidateToken(token, new TokenValidationParameters + { + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(key), + ValidateIssuer = true, + ValidateAudience = true, + ValidIssuer = _issuer, + ValidAudience = _audience, + ClockSkew = TimeSpan.Zero, + }, out _); + + return principal; + } + catch + { + // Log or handle validation errors if necessary + return null; + } + } + +} \ No newline at end of file diff --git a/backend/Infrastructure/Services/MongoDB/ChatMongoDbService.cs b/backend/Infrastructure/Services/MongoDB/ChatMongoDbService.cs index c9f9af9..3ed50d9 100644 --- a/backend/Infrastructure/Services/MongoDB/ChatMongoDbService.cs +++ b/backend/Infrastructure/Services/MongoDB/ChatMongoDbService.cs @@ -4,10 +4,10 @@ namespace Infrastructure.Services.MongoDB; public class ChatMongoDbService : MongoDbService, IChatMongoDbService { - public ChatMongoDbService(string connectionString, string databaseName, string collectionName) + public ChatMongoDbService(string connectionString, string databaseName, string collectionName) : base(connectionString, databaseName, collectionName) { } - + // Implement additional methods specific to Chat database if needed } \ No newline at end of file diff --git a/backend/Infrastructure/Services/MongoDB/MedicalHistoryMongoDbService.cs b/backend/Infrastructure/Services/MongoDB/MedicalHistoryMongoDbService.cs index 7560990..ff8e3d8 100644 --- a/backend/Infrastructure/Services/MongoDB/MedicalHistoryMongoDbService.cs +++ b/backend/Infrastructure/Services/MongoDB/MedicalHistoryMongoDbService.cs @@ -4,10 +4,10 @@ namespace Infrastructure.Services.MongoDB; public class MedicalHistoryMongoDbService : MongoDbService, IMedicalHistoryMongoDbService { - public MedicalHistoryMongoDbService(string connectionString, string databaseName, string collectionName) + public MedicalHistoryMongoDbService(string connectionString, string databaseName, string collectionName) : base(connectionString, databaseName, collectionName) { } - + // Implement additional methods specific to Medical History database if needed } \ No newline at end of file diff --git a/backend/Infrastructure/Services/MongoDB/MongoDBServices.cs b/backend/Infrastructure/Services/MongoDB/MongoDBServices.cs index 6af5e45..b2048e4 100644 --- a/backend/Infrastructure/Services/MongoDB/MongoDBServices.cs +++ b/backend/Infrastructure/Services/MongoDB/MongoDBServices.cs @@ -14,7 +14,7 @@ namespace Infrastructure.Services.MongoDB { _databaseName = databaseName; _collectionName = collectionName; - + Console.WriteLine($"Connection string: {connectionString}"); Console.WriteLine($"Database Name: {databaseName}"); Console.WriteLine($"Collection Name: {collectionName}"); @@ -23,12 +23,12 @@ namespace Infrastructure.Services.MongoDB settings.ServerApi = new ServerApi(ServerApiVersion.V1); _database = new MongoClient(settings); - try + try { var result = _database.GetDatabase("admin").RunCommand(new BsonDocument("ping", 1)); Console.WriteLine("Pinged your deployment. You successfully connected to MongoDB!"); - } - catch (Exception ex) + } + catch (Exception ex) { Console.WriteLine(ex); } @@ -71,4 +71,4 @@ namespace Infrastructure.Services.MongoDB await collection.DeleteOneAsync(filter); } } -} +} \ No newline at end of file diff --git a/backend/Infrastructure/bin/Debug/net8.0/Application.dll b/backend/Infrastructure/bin/Debug/net8.0/Application.dll index 7a8b24f479184672e6f0fe12b416217f6f6159a6..ac54dcf25ed90746701c41b5607b31ab85d9d7f6 100644 GIT binary patch literal 76288 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

  • ;5_A(PqFwq3Vd4}^0&oMm5 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 diff --git a/backend/Infrastructure/bin/Debug/net8.0/Application.pdb b/backend/Infrastructure/bin/Debug/net8.0/Application.pdb index 9acaaf3735df6ab960b61ebb8b328f8adc6bc04f..582da16c63abc5b408132b7e5f0912daa232bfc5 100644 GIT binary patch delta 11855 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 A!vFvP literal 7680 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 GA^is+i>$c- diff --git a/backend/Infrastructure/bin/Debug/net8.0/Infrastructure.dll b/backend/Infrastructure/bin/Debug/net8.0/Infrastructure.dll index 3c7b6d1b075a436215a93762e24511822dc7230b..589a16f80f72e835a76dcd2b7173c1c985ce1da8 100644 GIT binary patch delta 238 zcmZqJ!ql*ZX+j6fi&bm4ZR`;#6X+M4FLHnNXU7$O-IL9V!%H@AC}S4YFtJEYGD=KI zPD(K}u}n@eGfOr%Pf9d3wMa9uG%_@|OfgDIGqOxd-F&;-l#S)-d$xwjB9j6HJk`G| zH_Y+y-&oHZwmy5F)Z~&$wF*!{{X(c9P&LETM(#R)U8fZ+zxuXq7M#q@;%~xW!H~+3 z#9+jb$dJO23}mG+7&4eJSOVE83}!%>%wP_LNkDm1Ahcje1Iro#Rha`-r2us%0mY1f O>?DTN&DqnZG64WOT}lH0 delta 238 zcmZqJ!ql*ZX+j6fvV(GqHui{=2?$B~GD%4!`p@xMa-xj2=lkXjWz3=)W`>ETrfG@h z#-_%`CT2+~i77@YX6EK;2C2!$$p$7S$;OF^7Un6Yn{RiUva!tcm)SE}WKw{@AM>*h zZyH$pcB`}cymDI>Fu7z>tpZeV?rEqXP_<2ajZb)(=MA00t51`K%LE8P>_i~60LrE? Lm~PIVK9vaoG-604 diff --git a/backend/Infrastructure/bin/Debug/net8.0/Infrastructure.pdb b/backend/Infrastructure/bin/Debug/net8.0/Infrastructure.pdb index 7fe98f514aa7388623718246c898c176b7932277..b2032af7fa36d82f327a880e6ffe79183c4eaf2c 100644 GIT binary patch delta 9645 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 O?_M1Fo5{64;Qk+=P1(T! delta 2437 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 delta 8828 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 delta 191 zcmeC##du&9BL^F!G6MqxWA@~SI${&$qF5!l8?Qx7tZipvWS{(G=Zqw?fBChp1C znFJ=g_^3==z%qFOBP(3Umnmd&IG57I1-w8ZevR6v9=G&&J@^1Ll7SISFfxhRumMa78g(6FCz-kqs+sNBtJQU$$qj2vk_w~#66mmLl~7=J1yQ>xo)mu RyyCDq%WDzeW{zkUCIF3FJx>4t diff --git a/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.csproj.CoreCompileInputs.cache b/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.csproj.CoreCompileInputs.cache index b8d6b84..11f6f8f 100644 --- a/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.csproj.CoreCompileInputs.cache +++ b/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -39d9df72cda14e46450bf8a8087069ed85d06562c962bd2ab07df607c60c7cf4 +0fc8c2fdc4b952d96dcf80928d47de35d2afdbcca7797ecd9fa91d54ef6cedf9 diff --git a/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.dll b/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.dll index 3c7b6d1b075a436215a93762e24511822dc7230b..589a16f80f72e835a76dcd2b7173c1c985ce1da8 100644 GIT binary patch delta 238 zcmZqJ!ql*ZX+j6fi&bm4ZR`;#6X+M4FLHnNXU7$O-IL9V!%H@AC}S4YFtJEYGD=KI zPD(K}u}n@eGfOr%Pf9d3wMa9uG%_@|OfgDIGqOxd-F&;-l#S)-d$xwjB9j6HJk`G| zH_Y+y-&oHZwmy5F)Z~&$wF*!{{X(c9P&LETM(#R)U8fZ+zxuXq7M#q@;%~xW!H~+3 z#9+jb$dJO23}mG+7&4eJSOVE83}!%>%wP_LNkDm1Ahcje1Iro#Rha`-r2us%0mY1f O>?DTN&DqnZG64WOT}lH0 delta 238 zcmZqJ!ql*ZX+j6fvV(GqHui{=2?$B~GD%4!`p@xMa-xj2=lkXjWz3=)W`>ETrfG@h z#-_%`CT2+~i77@YX6EK;2C2!$$p$7S$;OF^7Un6Yn{RiUva!tcm)SE}WKw{@AM>*h zZyH$pcB`}cymDI>Fu7z>tpZeV?rEqXP_<2ajZb)(=MA00t51`K%LE8P>_i~60LrE? Lm~PIVK9vaoG-604 diff --git a/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.pdb b/backend/Infrastructure/obj/Debug/net8.0/Infrastructure.pdb index 7fe98f514aa7388623718246c898c176b7932277..b2032af7fa36d82f327a880e6ffe79183c4eaf2c 100644 GIT binary patch delta 9645 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 O?_M1Fo5{64;Qk+=P1(T! delta 2437 zcmah~Yfu~46+U;hS}nVhaRbbH|RP6kAP*bWn?Gx6AI6B>8wOdd*Ik2|R+wLR0=nYMP%t_$Ul zraN=K?>pywclX@Yoz)9-k4WfkaivX-#+t3Cb zs9%@$gBzL}khNM|m>$-G zB;laSrGuEFm%v_yd3aSy!4TjAM!$XDH_sY4q10F~J6L$lp@y>#xyM1gQf30$Dw!D= zsls=FaSG#IjB^-s7#G6`3B{y>>s2bag>gs8Mc|zBV)+uGb&=k&NS|4xuP^AktMI1+ zQ}zF}Z$Zm79lU~hc)ks=1THTa1Xx}(-w~jFkv_giH`mU4WM<*TS{C+T9LJcz_$|iy zS~Yx%p>?UjgK60Y;J!o*IKw@@9!g#>@$wfyxat6jSC4bzJiM&G5k;*LOY(;-uxe_@?(d|_RJmiq8 zBrjFbkNKLg3QnpEa8rX^0Z#KCuUB#KwoR|nz`HgV>MOPg;z}u^;=v$|DSAxNvxxap z0BybjMKdLd}PY{2l>a1!IIp{WE3VoIRtTa9skI5klfcSm)FQ<2bkZ7e|M)erh|sG`3Yf?!%}6!W zr8V{U1U$h|V3RkrDd2BtD)R=#4#En{4JCG0}Y;d zJv!1GuKRuEp+EUHK1EljS=pggL*;Zh%|M^eFw4mxJ)2>mM>3V!-6*|1zK(>)Ng!EdL@A`ueM`!jLof^gU|^`g;c&>f8K* z&3#^f5OxI^V zV5m3XZ(G-#RqqM<<&^63?#1zkgTsT=m}k(WH4Jz|0|7dezx;0b9KE^9Km+;tN*Y^A z_vIV-^j1%(&)*+fu*Ev*@jhG-Xa4v7CZi1*v8Y1#Rl3{QdD%; zvF!)?Cwq3^UUp;q$alABmg?S!?C$KFIi2165cl<^i_OP6pV>&Yr7xD-OdhMX$0M1o zX0yfC?eq95d^SnyG5Wn`uhC-hnmr!7aLRPtR(k*7Vkh0bd}{Ak{I&H zn>F$i(U$V)+7+2eY;`p9Xn)DdB;7n5k4)J_GSmtr+5}|SL`&U!bCUR{{!FIs;7;kk z-D{FPae6Hcdae}~BzdAdFq!^}Os^#~S!8A%J=9(C?N$HBeAk)o?PyOj7~b4C{bm`F|7di4Cl7>qdmTZ9ByStvB)-P$-bVZ$<>RLbpu1??<@<YVrgV(Zkb|~lxAd^l*+&m%E%Bf`JleU zW&s@@PJa^y3x-sNBnBgfM1~ZGWFRYr!H~g(!4k+$VK4*2WCn8}OajWA0-*&%8d%l{ asLC9uDg~%B2`FX+WG6ACZq7EH$^-!IFFGOs delta 205 zcmZoDXegM_!BQi1_~XW&5@vz_-d$`*cILV*;;OZcJGnr0vmncR#?Aj(cPe5^ols|D z(K9nlG&N02G&eRiHa0O!N=ZyHN-;AxPcukOHcmD$F-bN~OtdghF=b!~Wn>7Ld{AFv zvw#i{r@tA4AwwdADG;UsX>$f+Aj=pCO&H7=k{D8eVkrzpKx_t-GY6_MU`S<12FfP` XStdXTVkZKj1yDAH!E|%B=~N~Fbd@)n diff --git a/backend/Infrastructure/obj/Debug/net8.0/refint/Infrastructure.dll b/backend/Infrastructure/obj/Debug/net8.0/refint/Infrastructure.dll index 6ccecea742d29f4ca8dfddc5a64772a053c5f6fa..89025202eb3df1f66db21c11e6d61f41ce172df3 100644 GIT binary patch delta 205 zcmZoDXegM_!BW1t_3Or-5@vxdf7}YyjMw_F_TTx+Vx4=@WYVrgV(Zkb|~lxAd^l*+&m%E%Bf`JleU zW&s@@PJa^y3x-sNBnBgfM1~ZGWFRYr!H~g(!4k+$VK4*2WCn8}OajWA0-*&%8d%l{ asLC9uDg~%B2`FX+WG6ACZq7EH$^-!IFFGOs delta 205 zcmZoDXegM_!BQi1_~XW&5@vz_-d$`*cILV*;;OZcJGnr0vmncR#?Aj(cPe5^ols|D z(K9nlG&N02G&eRiHa0O!N=ZyHN-;AxPcukOHcmD$F-bN~OtdghF=b!~Wn>7Ld{AFv zvw#i{r@tA4AwwdADG;UsX>$f+Aj=pCO&H7=k{D8eVkrzpKx_t-GY6_MU`S<12FfP` XStdXTVkZKj1yDAH!E|%B=~N~Fbd@)n diff --git a/backend/Infrastructure/obj/Infrastructure.csproj.nuget.dgspec.json b/backend/Infrastructure/obj/Infrastructure.csproj.nuget.dgspec.json index 0cc01fe..9b29fd6 100644 --- a/backend/Infrastructure/obj/Infrastructure.csproj.nuget.dgspec.json +++ b/backend/Infrastructure/obj/Infrastructure.csproj.nuget.dgspec.json @@ -14,14 +14,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -69,7 +67,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } }, @@ -83,14 +81,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -130,7 +126,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } }, @@ -144,14 +140,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -203,6 +197,10 @@ "target": "Package", "version": "[8.0.0, )" }, + "Microsoft.IdentityModel.Tokens": { + "target": "Package", + "version": "[7.5.1, )" + }, "MongoDB.Driver": { "target": "Package", "version": "[2.24.0, )" @@ -210,6 +208,10 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": { "target": "Package", "version": "[8.0.2, )" + }, + "System.IdentityModel.Tokens.Jwt": { + "target": "Package", + "version": "[7.5.1, )" } }, "imports": [ @@ -228,7 +230,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/Infrastructure/obj/project.assets.json b/backend/Infrastructure/obj/project.assets.json index 11a694e..c6b363b 100644 --- a/backend/Infrastructure/obj/project.assets.json +++ b/backend/Infrastructure/obj/project.assets.json @@ -772,6 +772,67 @@ "buildTransitive/net6.0/_._": {} } }, + "Microsoft.IdentityModel.Abstractions/7.5.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, "Microsoft.NETCore.Platforms/5.0.0": { "type": "package", "compile": { @@ -1109,6 +1170,23 @@ "buildTransitive/netcoreapp3.1/_._": {} } }, + "System.IdentityModel.Tokens.Jwt/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.5.1", + "Microsoft.IdentityModel.Tokens": "7.5.1" + }, + "compile": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + }, "System.IO.Pipelines/6.0.3": { "type": "package", "compile": { @@ -2602,6 +2680,98 @@ "useSharedDesignerContext.txt" ] }, + "Microsoft.IdentityModel.Abstractions/7.5.1": { + "sha512": "PT16ZFbPIiMsYv07oy3zOjqUOJ7xutGBkJTOX0+IbNyU6+O6X7aIxjq9EaSSRLWbekRgamgtmfg8Xjw6A6Ua9g==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Abstractions.dll", + "lib/net461/Microsoft.IdentityModel.Abstractions.xml", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.7.5.1.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/7.5.1": { + "sha512": "93CGSa8RPdZU8zfvA3nf9NGKUqEnQrE12VzYlMqKh72ddhzusosqLNEUgH/YhFWBLRFOnY1RCgHMV7pR+sAx2w==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.7.5.1.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/7.5.1": { + "sha512": "PnpAQX20BAiDIPYmWUyQSlEaWD8BLXzHpiDGTCT568Cs0ReOeyzNe401LzCeiv6ilug/KefVeV1CeqtCHTo8dw==", + "type": "package", + "path": "microsoft.identitymodel.logging/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Logging.dll", + "lib/net461/Microsoft.IdentityModel.Logging.xml", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.7.5.1.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/7.5.1": { + "sha512": "Q3DKpyFViP84IUlTFKH/zIkswIrmSh2Vd/eFDo4wlOHy4DYxoweZEEw4kDEiKt9VCX6o7SddK3HK2xDYyFpexA==", + "type": "package", + "path": "microsoft.identitymodel.tokens/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Tokens.dll", + "lib/net461/Microsoft.IdentityModel.Tokens.xml", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.7.5.1.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, "Microsoft.NETCore.Platforms/5.0.0": { "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", "type": "package", @@ -3043,6 +3213,29 @@ "useSharedDesignerContext.txt" ] }, + "System.IdentityModel.Tokens.Jwt/7.5.1": { + "sha512": "UUw+E0R73lZLlXgneYIJQxNs1kfbcxjVzw64JQyiwjqCd4HMpAbjn+xRo86QZT84uHq8/MkqvfH82tgjgPzpuw==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/System.IdentityModel.Tokens.Jwt.dll", + "lib/net461/System.IdentityModel.Tokens.Jwt.xml", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.7.5.1.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, "System.IO.Pipelines/6.0.3": { "sha512": "ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw==", "type": "package", @@ -3454,8 +3647,10 @@ "Microsoft.Extensions.Configuration >= 8.0.0", "Microsoft.Extensions.Configuration.Json >= 8.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions >= 8.0.0", + "Microsoft.IdentityModel.Tokens >= 7.5.1", "MongoDB.Driver >= 2.24.0", - "Npgsql.EntityFrameworkCore.PostgreSQL >= 8.0.2" + "Npgsql.EntityFrameworkCore.PostgreSQL >= 8.0.2", + "System.IdentityModel.Tokens.Jwt >= 7.5.1" ] }, "packageFolders": { @@ -3471,14 +3666,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -3530,6 +3723,10 @@ "target": "Package", "version": "[8.0.0, )" }, + "Microsoft.IdentityModel.Tokens": { + "target": "Package", + "version": "[7.5.1, )" + }, "MongoDB.Driver": { "target": "Package", "version": "[2.24.0, )" @@ -3537,6 +3734,10 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": { "target": "Package", "version": "[8.0.2, )" + }, + "System.IdentityModel.Tokens.Jwt": { + "target": "Package", + "version": "[7.5.1, )" } }, "imports": [ @@ -3555,7 +3756,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/Infrastructure/obj/project.nuget.cache b/backend/Infrastructure/obj/project.nuget.cache index 1237d21..bc245e8 100644 --- a/backend/Infrastructure/obj/project.nuget.cache +++ b/backend/Infrastructure/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "iwi/5xNtgWqhK31wqOr9WG6iDQW0uTBS41AXw9EdTi0QL3UPkJdVquF7OuGqSc48sG+mLp/gC3DLdj3TQId54g==", + "dgSpecHash": "pF3XqxVA87LZ2eqKgkY0WSdNfMkjY7iYYiKVDDpMtBbgzsStmL5AV+YB1rj394lXBXpedmSvoVfqxSY86Dd62g==", "success": true, "projectFilePath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj", "expectedPackageFiles": [ @@ -38,6 +38,10 @@ "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.abstractions\\7.5.1\\microsoft.identitymodel.abstractions.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\7.5.1\\microsoft.identitymodel.jsonwebtokens.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.logging\\7.5.1\\microsoft.identitymodel.logging.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.5.1\\microsoft.identitymodel.tokens.7.5.1.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\mongodb.bson\\2.24.0\\mongodb.bson.2.24.0.nupkg.sha512", @@ -58,6 +62,7 @@ "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.5.1\\system.identitymodel.tokens.jwt.7.5.1.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512", diff --git a/backend/Infrastructure/obj/project.packagespec.json b/backend/Infrastructure/obj/project.packagespec.json index b07bb8e..2184a76 100644 --- a/backend/Infrastructure/obj/project.packagespec.json +++ b/backend/Infrastructure/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj","projectName":"Infrastructure","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj"},"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.3, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.3, )"},"Microsoft.EntityFrameworkCore.Relational":{"target":"Package","version":"[8.0.3, )"},"Microsoft.Extensions.Configuration":{"target":"Package","version":"[8.0.0, )"},"Microsoft.Extensions.Configuration.Json":{"target":"Package","version":"[8.0.0, )"},"Microsoft.Extensions.Options.ConfigurationExtensions":{"target":"Package","version":"[8.0.0, )"},"MongoDB.Driver":{"target":"Package","version":"[2.24.0, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[8.0.2, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj","projectName":"Infrastructure","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj"},"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Core\\Core.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.3, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.3, )"},"Microsoft.EntityFrameworkCore.Relational":{"target":"Package","version":"[8.0.3, )"},"Microsoft.Extensions.Configuration":{"target":"Package","version":"[8.0.0, )"},"Microsoft.Extensions.Configuration.Json":{"target":"Package","version":"[8.0.0, )"},"Microsoft.Extensions.Options.ConfigurationExtensions":{"target":"Package","version":"[8.0.0, )"},"Microsoft.IdentityModel.Tokens":{"target":"Package","version":"[7.5.1, )"},"MongoDB.Driver":{"target":"Package","version":"[2.24.0, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[8.0.2, )"},"System.IdentityModel.Tokens.Jwt":{"target":"Package","version":"[7.5.1, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/backend/Infrastructure/obj/rider.project.model.nuget.info b/backend/Infrastructure/obj/rider.project.model.nuget.info index ea3c7ff..26222e8 100644 --- a/backend/Infrastructure/obj/rider.project.model.nuget.info +++ b/backend/Infrastructure/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17122552827017860 \ No newline at end of file +17125672278122993 \ No newline at end of file diff --git a/backend/Infrastructure/obj/rider.project.restore.info b/backend/Infrastructure/obj/rider.project.restore.info index d0283bc..d20ddb9 100644 --- a/backend/Infrastructure/obj/rider.project.restore.info +++ b/backend/Infrastructure/obj/rider.project.restore.info @@ -1 +1 @@ -17125075152023106 \ No newline at end of file +17125685577988485 \ No newline at end of file diff --git a/backend/UpgradeLog.htm b/backend/UpgradeLog.htm new file mode 100644 index 0000000..d18ddf6 --- /dev/null +++ b/backend/UpgradeLog.htm @@ -0,0 +1,282 @@ + + + + Migration Report +

    + Migration Report - HealthcareManagerAPI

    \ No newline at end of file diff --git a/backend/UpgradeLog2.htm b/backend/UpgradeLog2.htm new file mode 100644 index 0000000..f8f2619 --- /dev/null +++ b/backend/UpgradeLog2.htm @@ -0,0 +1,268 @@ + + + + Migration Report +

    + Migration Report -

    \ No newline at end of file diff --git a/backend/UpgradeLog3.htm b/backend/UpgradeLog3.htm new file mode 100644 index 0000000..2d5d6ef --- /dev/null +++ b/backend/UpgradeLog3.htm @@ -0,0 +1,268 @@ + + + + Migration Report +

    + Migration Report -

    \ No newline at end of file diff --git a/backend/UpgradeLog4.htm b/backend/UpgradeLog4.htm new file mode 100644 index 0000000..2d5d6ef --- /dev/null +++ b/backend/UpgradeLog4.htm @@ -0,0 +1,268 @@ + + + + Migration Report +

    + Migration Report -

    \ No newline at end of file diff --git a/frontend/.idea/.idea.HealthcareManagerUI/.idea/.gitignore b/frontend/.idea/.idea.HealthcareManagerUI/.idea/.gitignore new file mode 100644 index 0000000..b68b1d2 --- /dev/null +++ b/frontend/.idea/.idea.HealthcareManagerUI/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/modules.xml +/contentModel.xml +/.idea.HealthcareManagerUI.iml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/frontend/.idea/.idea.HealthcareManagerUI/.idea/.name b/frontend/.idea/.idea.HealthcareManagerUI/.idea/.name new file mode 100644 index 0000000..6c9ffb2 --- /dev/null +++ b/frontend/.idea/.idea.HealthcareManagerUI/.idea/.name @@ -0,0 +1 @@ +HealthcareManagerUI \ No newline at end of file diff --git a/frontend/.idea/.idea.HealthcareManagerUI/.idea/encodings.xml b/frontend/.idea/.idea.HealthcareManagerUI/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/frontend/.idea/.idea.HealthcareManagerUI/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/frontend/.idea/.idea.HealthcareManagerUI/.idea/indexLayout.xml b/frontend/.idea/.idea.HealthcareManagerUI/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/frontend/.idea/.idea.HealthcareManagerUI/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/frontend/.idea/.idea.HealthcareManagerUI/.idea/vcs.xml b/frontend/.idea/.idea.HealthcareManagerUI/.idea/vcs.xml new file mode 100644 index 0000000..64713b8 --- /dev/null +++ b/frontend/.idea/.idea.HealthcareManagerUI/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/HealthcareManagerUI.sln b/frontend/HealthcareManagerUI.sln new file mode 100644 index 0000000..335ce5c --- /dev/null +++ b/frontend/HealthcareManagerUI.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34616.47 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HealthcareManagerUI", "HealthcareManagerUI\HealthcareManagerUI.csproj", "{641DCB44-0CC9-43D0-AE58-5A722261F1E1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {641DCB44-0CC9-43D0-AE58-5A722261F1E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {641DCB44-0CC9-43D0-AE58-5A722261F1E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {641DCB44-0CC9-43D0-AE58-5A722261F1E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {641DCB44-0CC9-43D0-AE58-5A722261F1E1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {55598450-70ED-4D22-913B-0C99AB8F3F7D} + EndGlobalSection +EndGlobal diff --git a/frontend/HealthcareManagerUI/Components/Layout/AuthLayout.razor b/frontend/HealthcareManagerUI/Components/Layout/AuthLayout.razor new file mode 100644 index 0000000..0e02478 --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Layout/AuthLayout.razor @@ -0,0 +1,16 @@ +@inherits LayoutComponentBase + + + + + + + + + +
    +
    + @Body +
    + + \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Components/Pages/AlertMessage.razor b/frontend/HealthcareManagerUI/Components/Pages/AlertMessage.razor new file mode 100644 index 0000000..32bdaeb --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/AlertMessage.razor @@ -0,0 +1,12 @@ +@if (!string.IsNullOrEmpty(ErrorMessage)) +{ + +} + +@code { + [Parameter] + public string ErrorMessage { get; set; } +} diff --git a/frontend/HealthcareManagerUI/Components/Pages/ChooseRolePage.razor b/frontend/HealthcareManagerUI/Components/Pages/ChooseRolePage.razor new file mode 100644 index 0000000..7a1af3f --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/ChooseRolePage.razor @@ -0,0 +1,15 @@ +@page "/" +@using HealthcareManagerUI.Components.Layout +@layout AuthLayout + + Choose Role + + +
    +

    Welcome to Healthcare Manager

    +

    Please select your role:

    +
    + I'm a Doctor + I'm a Patient +
    +
    diff --git a/frontend/HealthcareManagerUI/Components/Pages/DashboardPage.razor b/frontend/HealthcareManagerUI/Components/Pages/DashboardPage.razor new file mode 100644 index 0000000..5dee81c --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/DashboardPage.razor @@ -0,0 +1,9 @@ +@page "/dashboard" + + Dashboard + +

    Dashboard

    +

    login success

    +@code { + +} diff --git a/frontend/HealthcareManagerUI/Components/Pages/LoginPage.razor b/frontend/HealthcareManagerUI/Components/Pages/LoginPage.razor new file mode 100644 index 0000000..6897c05 --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/LoginPage.razor @@ -0,0 +1,77 @@ +@page "/login/{role}" +@using HealthcareManagerUI.Models +@using HealthcareManagerUI.Services.Authentication +@using HealthcareManagerUI.Components.Layout + +@layout AuthLayout + +@inject IAuthenticationService AuthenticationService +@inject NavigationManager NavigationManager + + + Login + + + + + + + + + +@code { + [SupplyParameterFromForm] + public UserLoginModel? userLoginModel { get; set; } + + protected override void OnInitialized() + { + userLoginModel ??= new(); + } + + [Parameter] public string Role { get; set; } + private string errorMessage { get; set; } + + private void ClearErrorMessage() + { + errorMessage = string.Empty; + } + + private async Task HandleLogin() + { + var response = Role switch + { + "doctor" => await AuthenticationService.LoginDoctor(userLoginModel), + "patient" => await AuthenticationService.LoginPatient(userLoginModel), + _ => null + }; + + if (response.StatusCode >= 200 && response.StatusCode <= 399) + { + NavigationManager.NavigateTo("/dashboard"); + } + else + { + errorMessage = response.Message; + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Components/Pages/RegisterPage.razor b/frontend/HealthcareManagerUI/Components/Pages/RegisterPage.razor new file mode 100644 index 0000000..526a43f --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/RegisterPage.razor @@ -0,0 +1,84 @@ +@page "/register/{role}" +@using HealthcareManagerUI.Models +@using HealthcareManagerUI.Services.Authentication +@using HealthcareManagerUI.Components.Layout + +@layout AuthLayout + +@inject IAuthenticationService AuthenticationService +@inject NavigationManager NavigationManager + + + Register + + + + + + + + + +@code { + [SupplyParameterFromForm] + public UserRegisterModel? userRegisterModel { get; set; } + + protected override void OnInitialized() + { + userRegisterModel ??= new(); + } + + [Parameter] public string Role { get; set; } + private string errorMessage { get; set; } + + private void ClearErrorMessage() + { + errorMessage = string.Empty; + } + + private async Task HandleRegister() + { + var response = Role switch + { + "doctor" => await AuthenticationService.RegisterDoctor(userRegisterModel), + "patient" => await AuthenticationService.RegisterPatient(userRegisterModel), + _ => null + }; + + if (response.StatusCode >=200 && response.StatusCode <= 399) + { + NavigationManager.NavigateTo($"/login/{Role}"); + } + else + { + errorMessage = response.Message; + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Components/Pages/ResetPasswordPage.razor b/frontend/HealthcareManagerUI/Components/Pages/ResetPasswordPage.razor new file mode 100644 index 0000000..2da382d --- /dev/null +++ b/frontend/HealthcareManagerUI/Components/Pages/ResetPasswordPage.razor @@ -0,0 +1,75 @@ +@page "/reset-password/{role}" +@using HealthcareManagerUI.Models +@using HealthcareManagerUI.Services.Authentication +@using HealthcareManagerUI.Components.Layout + +@layout AuthLayout + +@inject IAuthenticationService AuthenticationService +@inject NavigationManager NavigationManager + + + Reset your password + + + + + + + + + +@code { + [SupplyParameterFromForm] + public UserRegisterModel? userResetPasswordModel { get; set; } + + protected override void OnInitialized() + { + userResetPasswordModel ??= new(); + } + + [Parameter] public string Role { get; set; } + private string errorMessage { get; set; } + + private void ClearErrorMessage() + { + errorMessage = string.Empty; + } + + private async Task HandleResetPassword() + { + var response = Role switch + { + "doctor" => await AuthenticationService.ResetDoctorPassword(userResetPasswordModel), + "patient" => await AuthenticationService.ResetPatientPassword(userResetPasswordModel), + _ => null + }; + + if (response.StatusCode >= 200 && response.StatusCode <= 399) + { + NavigationManager.NavigateTo($"/login/{Role}"); + } + else + { + errorMessage = response.Message; + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/HealthcareManagerUI.csproj b/frontend/HealthcareManagerUI/HealthcareManagerUI.csproj new file mode 100644 index 0000000..c487b18 --- /dev/null +++ b/frontend/HealthcareManagerUI/HealthcareManagerUI.csproj @@ -0,0 +1,14 @@ + + + + net8.0 + enable + enable + + + + <_ContentIncludedByDefault Remove="wwwroot\bootstrap\bootstrap.min.css" /> + <_ContentIncludedByDefault Remove="wwwroot\bootstrap\bootstrap.min.css.map" /> + + + diff --git a/frontend/HealthcareManagerUI/Models/BaseResponse.cs b/frontend/HealthcareManagerUI/Models/BaseResponse.cs new file mode 100644 index 0000000..079adf2 --- /dev/null +++ b/frontend/HealthcareManagerUI/Models/BaseResponse.cs @@ -0,0 +1,10 @@ +namespace HealthcareManagerUI.Models +{ + public class BaseResponse + { + public int StatusCode { get; set; } + public string? Message { get; set; } + public object? Data { get; set; } + } + +} diff --git a/frontend/HealthcareManagerUI/Models/PacientRegisterModel.cs b/frontend/HealthcareManagerUI/Models/PacientRegisterModel.cs new file mode 100644 index 0000000..2cb4110 --- /dev/null +++ b/frontend/HealthcareManagerUI/Models/PacientRegisterModel.cs @@ -0,0 +1,8 @@ +namespace HealthcareManagerUI.Models; + +public class PatientRegisterModel +{ + public string Name { get; set; } + public string Email { get; set; } + public string Password { get; set; } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Models/UserRegisterModel.cs b/frontend/HealthcareManagerUI/Models/UserRegisterModel.cs new file mode 100644 index 0000000..92dde3b --- /dev/null +++ b/frontend/HealthcareManagerUI/Models/UserRegisterModel.cs @@ -0,0 +1,9 @@ +namespace HealthcareManagerUI.Models; + +public class UserRegisterModel +{ + public string Name { get; set; } + public string Email { get; set; } + public string Password { get; set; } + public string Description { get; set; } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Program.cs b/frontend/HealthcareManagerUI/Program.cs new file mode 100644 index 0000000..cff7cba --- /dev/null +++ b/frontend/HealthcareManagerUI/Program.cs @@ -0,0 +1,34 @@ +using HealthcareManagerUI.Components; +using HealthcareManagerUI.Services.Authentication; +using HealthcareManagerUI.Services.Http; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +builder.Services.AddScoped(provider => +{ + var configuration = provider.GetRequiredService(); + return new HttpService(configuration); +}); +builder.Services.AddScoped(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (!app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Error", true); + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); +app.UseAntiforgery(); +app.MapRazorComponents() + .AddInteractiveServerRenderMode(); + +app.Run(); \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Services/Authentication/AuthenticationService.cs b/frontend/HealthcareManagerUI/Services/Authentication/AuthenticationService.cs new file mode 100644 index 0000000..47fb2e1 --- /dev/null +++ b/frontend/HealthcareManagerUI/Services/Authentication/AuthenticationService.cs @@ -0,0 +1,129 @@ +using HealthcareManagerUI.Models; +using HealthcareManagerUI.Services.Http; +namespace HealthcareManagerUI.Services.Authentication; + +// In AuthenticationService.cs +public class AuthenticationService : IAuthenticationService +{ + private readonly IHttpService _httpService; + private readonly string _apiUrl = "http://localhost:5151/api"; + + public AuthenticationService(IHttpService httpService) + { + _httpService = httpService; + } + + public async Task LoginDoctor(UserLoginModel userLoginModel) + { + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Doctors/login", userLoginModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse + { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } + + public async Task LoginPatient(UserLoginModel userLoginModel) + { + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Patients/login", userLoginModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } + + public async Task RegisterDoctor(UserRegisterModel userRegistrationModel) + { + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Doctors/register", userRegistrationModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse + { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } + + public async Task RegisterPatient(UserRegisterModel userRegisterModel) + { + var patientRegisterDto = new PatientRegisterModel + { + Name = userRegisterModel.Name, + Email = userRegisterModel.Email, + Password = userRegisterModel.Password + }; + + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Patients/register", userRegisterModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse + { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } + + public async Task ResetDoctorPassword(UserRegisterModel userResetPasswordModel) + { + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Doctors/reset_password", userResetPasswordModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse + { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } + + public async Task ResetPatientPassword(UserRegisterModel userResetPasswordModel) + { + try + { + var response = await _httpService.PostAsync($"{_apiUrl}/Patients/reset_password", userResetPasswordModel); + return response; + } + catch (Exception ex) + { + return new BaseResponse + { + StatusCode = 400, + Data = null, + Message = ex.Message + }; + } + } +} diff --git a/frontend/HealthcareManagerUI/Services/Authentication/IAuthenticationService.cs b/frontend/HealthcareManagerUI/Services/Authentication/IAuthenticationService.cs new file mode 100644 index 0000000..00eb339 --- /dev/null +++ b/frontend/HealthcareManagerUI/Services/Authentication/IAuthenticationService.cs @@ -0,0 +1,18 @@ +using HealthcareManagerUI.Models; + +namespace HealthcareManagerUI.Services.Authentication; + +public interface IAuthenticationService +{ + Task LoginDoctor(UserLoginModel userLoginModel); + + Task LoginPatient(UserLoginModel userLoginModel); + + Task RegisterDoctor(UserRegisterModel userRegistrationModel); + + Task RegisterPatient(UserRegisterModel userRegistrationModel); + + Task ResetDoctorPassword(UserRegisterModel userResetPasswordModel); + + Task ResetPatientPassword(UserRegisterModel userResetPasswordModel); +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/Services/Http/HttpService.cs b/frontend/HealthcareManagerUI/Services/Http/HttpService.cs new file mode 100644 index 0000000..5ba0f68 --- /dev/null +++ b/frontend/HealthcareManagerUI/Services/Http/HttpService.cs @@ -0,0 +1,83 @@ +using System.Text; +using System.Text.Json; + +namespace HealthcareManagerUI.Services.Http; + +public class HttpService : IHttpService +{ + private readonly string _apiKey; + + public HttpService(IConfiguration configuration) + { + _apiKey = configuration.GetValue("ApiKey") ?? "NoKey"; + } + + public async Task GetAsync(string uri, IDictionary headers = null) + { + using var httpClient = new HttpClient(); + var request = new HttpRequestMessage(HttpMethod.Get, uri); + AddHeaders(request, headers); + + var response = await httpClient.SendAsync(request); + + var responseContent = await response.Content.ReadAsStringAsync(); + return JsonSerializer.Deserialize( + responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + } + + public async Task GetByIdAsync(string uri, int id, IDictionary headers = null) + { + return await GetAsync($"{uri}/{id}", headers); + } + + public async Task PostAsync(string uri, object data, IDictionary headers = null) + { + using var httpClient = new HttpClient(); + var request = new HttpRequestMessage(HttpMethod.Post, uri); + AddHeaders(request, headers); + request.Content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json"); + + var response = await httpClient.SendAsync(request); + + var responseContent = await response.Content.ReadAsStringAsync(); + return JsonSerializer.Deserialize( + responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + } + + public async Task PutAsync(string uri, int id, object data, IDictionary headers = null) + { + using var httpClient = new HttpClient(); + var request = new HttpRequestMessage(HttpMethod.Put, $"{uri}/{id}"); + AddHeaders(request, headers); + request.Content = new StringContent(JsonSerializer.Serialize(data), Encoding.UTF8, "application/json"); + + var response = await httpClient.SendAsync(request); + + var responseContent = await response.Content.ReadAsStringAsync(); + return JsonSerializer.Deserialize( + responseContent, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + } + + public async Task DeleteAsync(string uri, int id, IDictionary headers = null) + { + using var httpClient = new HttpClient(); + var request = new HttpRequestMessage(HttpMethod.Delete, $"{uri}/{id}"); + AddHeaders(request, headers); + + var response = await httpClient.SendAsync(request); + } + + private void AddHeaders(HttpRequestMessage request, IDictionary headers) + { + // Add the API key header to every request + request.Headers.Add("ApiKey", _apiKey); + + if (headers != null) + { + foreach (var header in headers) + { + request.Headers.Add(header.Key, header.Value); + } + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/appsettings.json b/frontend/HealthcareManagerUI/appsettings.json new file mode 100644 index 0000000..bb3dc9e --- /dev/null +++ b/frontend/HealthcareManagerUI/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + "ApiKey": "testapikey" +} diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/frontend/HealthcareManagerUI/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 0000000..2217181 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfo.cs b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfo.cs new file mode 100644 index 0000000..0a99099 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("HealthcareManagerUI")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+90604e48ae9f78fa417a446c05f7759001447de5")] +[assembly: System.Reflection.AssemblyProductAttribute("HealthcareManagerUI")] +[assembly: System.Reflection.AssemblyTitleAttribute("HealthcareManagerUI")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfoInputs.cache b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfoInputs.cache new file mode 100644 index 0000000..efb4335 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +ab066e9096346068223b71b3fe69040bd32f1c1da8d97eddb6a2399e719e2e24 diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GeneratedMSBuildEditorConfig.editorconfig b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..1be4fa8 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,47 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = true +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = HealthcareManagerUI +build_property.RootNamespace = HealthcareManagerUI +build_property.ProjectDir = C:\Users\Andrei Cerbu\Documents\FACULTATE\CC-FinalProj\frontend\HealthcareManagerUI\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.RazorLangVersion = 8.0 +build_property.SupportLocalizedComponentNames = +build_property.GenerateRazorMetadataSourceChecksumAttributes = +build_property.MSBuildProjectDirectory = C:\Users\Andrei Cerbu\Documents\FACULTATE\CC-FinalProj\frontend\HealthcareManagerUI +build_property._RazorSourceGeneratorDebug = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Layout/AuthLayout.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xMYXlvdXRcQXV0aExheW91dC5yYXpvcg== +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/AlertMessage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xBbGVydE1lc3NhZ2UucmF6b3I= +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/ChooseRolePage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xDaG9vc2VSb2xlUGFnZS5yYXpvcg== +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/DashboardPage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xEYXNoYm9hcmRQYWdlLnJhem9y +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/LoginPage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xMb2dpblBhZ2UucmF6b3I= +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/RegisterPage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xSZWdpc3RlclBhZ2UucmF6b3I= +build_metadata.AdditionalFiles.CssScope = + +[C:/Users/Andrei Cerbu/Documents/FACULTATE/CC-FinalProj/frontend/HealthcareManagerUI/Components/Pages/ResetPasswordPage.razor] +build_metadata.AdditionalFiles.TargetPath = Q29tcG9uZW50c1xQYWdlc1xSZXNldFBhc3N3b3JkUGFnZS5yYXpvcg== +build_metadata.AdditionalFiles.CssScope = diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GlobalUsings.g.cs b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GlobalUsings.g.cs new file mode 100644 index 0000000..025530a --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.GlobalUsings.g.cs @@ -0,0 +1,17 @@ +// +global using global::Microsoft.AspNetCore.Builder; +global using global::Microsoft.AspNetCore.Hosting; +global using global::Microsoft.AspNetCore.Http; +global using global::Microsoft.AspNetCore.Routing; +global using global::Microsoft.Extensions.Configuration; +global using global::Microsoft.Extensions.DependencyInjection; +global using global::Microsoft.Extensions.Hosting; +global using global::Microsoft.Extensions.Logging; +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Net.Http.Json; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.assets.cache b/frontend/HealthcareManagerUI/obj/Debug/net8.0/HealthcareManagerUI.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..b0a496cfd5f5554859f12a6ce55bece62b2773ec GIT binary patch literal 159 zcmWIWc6a1qU|_iMS2O9bY@frgV~VTZ`)*h{LC5P?X=UW5F2gOiG}%MbX9Lv`3mAb4 u)ts$jLW@(2ient}Qi@VD6`WIxl1gLr@=DWFOJWKVld}`kQ;TB=83_QRt{|NN literal 0 HcmV?d00001 diff --git a/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.dgspec.json b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.dgspec.json new file mode 100644 index 0000000..7d16c51 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.dgspec.json @@ -0,0 +1,64 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj": {} + }, + "projects": { + "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj", + "projectName": "HealthcareManagerUI", + "projectPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj", + "packagesPath": "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.props b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.props new file mode 100644 index 0000000..53ed97d --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Andrei Cerbu\.nuget\packages\ + PackageReference + 6.9.1 + + + + + \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.targets b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/HealthcareManagerUI.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/project.assets.json b/frontend/HealthcareManagerUI/obj/project.assets.json new file mode 100644 index 0000000..8ed0171 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/project.assets.json @@ -0,0 +1,69 @@ +{ + "version": 3, + "targets": { + "net8.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net8.0": [] + }, + "packageFolders": { + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj", + "projectName": "HealthcareManagerUI", + "projectPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj", + "packagesPath": "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/project.nuget.cache b/frontend/HealthcareManagerUI/obj/project.nuget.cache new file mode 100644 index 0000000..91fd7be --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "yH4Q+LkO2CE3MznIcrlPS+taSI2XBcgBj6avLnffpxmFkD9ND0vvFtGynswKrmhXXjk04hrPG4LlIo3zuh86UA==", + "success": true, + "projectFilePath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/project.packagespec.json b/frontend/HealthcareManagerUI/obj/project.packagespec.json new file mode 100644 index 0000000..027640e --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/project.packagespec.json @@ -0,0 +1 @@ +"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj","projectName":"HealthcareManagerUI","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\HealthcareManagerUI.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\frontend\\HealthcareManagerUI\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/rider.project.model.nuget.info b/frontend/HealthcareManagerUI/obj/rider.project.model.nuget.info new file mode 100644 index 0000000..a303ec1 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/rider.project.model.nuget.info @@ -0,0 +1 @@ +17125382441830168 \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/obj/rider.project.restore.info b/frontend/HealthcareManagerUI/obj/rider.project.restore.info new file mode 100644 index 0000000..15cb1a1 --- /dev/null +++ b/frontend/HealthcareManagerUI/obj/rider.project.restore.info @@ -0,0 +1 @@ +17125721198365815 \ No newline at end of file diff --git a/frontend/HealthcareManagerUI/wwwroot/AuthLayout.css b/frontend/HealthcareManagerUI/wwwroot/AuthLayout.css new file mode 100644 index 0000000..d90a803 --- /dev/null +++ b/frontend/HealthcareManagerUI/wwwroot/AuthLayout.css @@ -0,0 +1,71 @@ +body, html { + height: 100%; + width: 100%; + margin: 0; + padding: 0; + overflow: hidden; /* Prevents scrolling caused by the absolute positioning */ +} + +body { + font-family: "Roboto", sans-serif; + font-weight: 500; + font-style: normal; + position: relative; + z-index: 0; /* Ensures the background is under the content */ + +} + +.background { + position: absolute; + top: -5%; + left: -5%; + width: 110%; + height: 110%; + background-image: url(background_image.jpg); + background-size: cover; + background-repeat: no-repeat; + filter: brightness(50%) blur(5px); + z-index: -1; /* Keeps it below the content */ +} + +.container { + z-index: 1; +} + +/* New styles for title and subtitle */ +.landingTitle { + color: #ffffff; + text-shadow: 2px 2px 8px rgba(0, 0, 0, 0.7); + font-size: 3.5rem; + font-weight: bold; + background: rgba(255, 255, 255, 0.2); + padding: 0.5rem; + border-radius: 0.5rem; + display: inline-block; /* Wrap the background to the text */ + margin-top: 2rem; /* Give some space from the top */ +} + +.landingSubtitle { + color: #dcdcdc; + text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5); + font-size: 2rem; + padding: 0.25rem; + border-radius: 0.5rem; + display: block; /* Wrap the background to the text */ + margin-bottom: 2rem; /* Give some space before the buttons */ +} + +.centered-menu { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + text-align: center; +} + +.button-container { + display: flex; + flex-direction: row; /* This will align the buttons side by side */ + justify-content: center; /* Center the buttons within the container */ +} diff --git a/frontend/HealthcareManagerUI/wwwroot/LoginPage.css b/frontend/HealthcareManagerUI/wwwroot/LoginPage.css new file mode 100644 index 0000000..a4410da --- /dev/null +++ b/frontend/HealthcareManagerUI/wwwroot/LoginPage.css @@ -0,0 +1,82 @@ +.form { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + width: 20%; + height: auto; + + color: white; + background: #095d7e; + border-radius: 10px; + + padding: 2rem; +} + +h1, h2, h3 { + margin: 0; + padding: 0; +} + +.header hr { + width: 15vw; +} + +.header { + display: flex; + flex-direction: column; + align-content: center; + justify-content: center; + + font-size: 1.5rem; + + text-align: center; + margin: 0 0 1rem 0; +} + +.content { + display: flex; + flex-wrap: wrap; + flex-direction: column; + justify-content: center; + align-content: center; +} + +.footer { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-content: center; + align-items: center; + + margin: 1rem 0 0 0; +} + +input { + text-align: center; + color: white; + font-weight: bold; + font-size: 1.2rem; + width: 70%; + padding: 1rem; + margin: 0.7rem; + border-radius: 10px; +} + +button { + font-weight: bold; + + padding: 0.5rem 3rem 0.5rem 3rem; + + font-size: 1rem; + border: none; + border-radius: 5px; + cursor: pointer; +} + +button[name="submit"] { + background-color: #F44336; + color: white; +} +

    Overview

    ProjectPathErrorsWarningsMessages
    APIAPI\API.csproj100
    CoreCore\Core.csproj100
    InfrastructureInfrastructure\Infrastructure.csproj100
    SolutionHealthcareManagerAPI.sln012
    ApplicationApplication\Application.csproj000
    HealthcareManager.APIHealthcareManager.API000
    HealthcareManager.ApplicationHealthcareManager.Application000
    HealthcareManager.CoreHealthcareManager.Core000
    HealthcareManager.InfrastructureHealthcareManager.Infrastructure000

    Solution and projects

  • ;5_A(PqFwq3Vd4}^0&oMm5 zaFO96!&3}TwQ19-UF*oSkg&M>HC>Z6U6VCkO!&Qc#W%yaY@O4@Ex-5LX z1Fi39OxCV@uKV?Re%H}RerGA?B6GjUHCSVElmmfL&T0J znneS_ew$xWZN}Y4-cU%~{kGhYZMl)Sr)5(-xf{;^9QyD35D{TDCX?eGwI3vFFC;n< z)%qxR3&jk?bxv$T?4?p$L|m6fq>HugkHsiJx9@Vk(yAEMz7M92op>UR3c;_EwHG(H zJBUHsl7qNX(`qj^i&!kt9&cv;;}rTK(s-L@G7cV1czk_3Zk_% z#kJtc+B*>3Ec#AMC%AX4?zG9?4UoNicS}5|j`wA4FIdfaUkmZR&G3T&!w>FkY4I4M z2_GtErfeT-ULWq%wZDp%Ljiw|Te9{M%KR97TRR=b;Q?gQ4rR(tcooej43(0M2|_^{ zOXBfn8Z&o^uW3nM#lSTP0_GvXWbI?P$_uTedx_a>t)ix;gDRi70OC&JJ(hatV9^1mh|Af*x zoMM9Xta(X2>r`^J4Sqp1Fm`wxu9%=G?X0#%h}OOV(b|KRv}=y-hC+vvtJ|Rq>6gRG zFNeKuqHKe@C%L-AqwZ1EJsve>8`R?%2N{tS1GbHT}N3wQ;~{hS3A?E9CDd`%rGijiy}5fFKYA{YjQ(??Lt<+n`R`os`G5TB?F+rdS_P#96y^riUyZ3vH-e*|#evj4rRE~PTC!%ADYjjM}Y+O+{ zu4pT&8c6|L|qm>DsBgeX@xD#}$ul&hh-u6pyQH<~eqbYv2$&NnbOkb_X| z4K2^r_)CvWeyiiX)(7Li@w0({{N=y=;AZ2S*b!)ai!N`|<%)yL^K|(gx?H8p3v~Gf zF0tl#tT_>D-qFyUjN`Mtp&6?O9)=P~ZpEh^pU#HnolUs!z|2jq){)qU&whLkH8x}3 z2wM#;LI?+Sf zXnJxHpCUe0E!?mYZrBu#$}Z#cEERhQms*W37wK||a03Kgrppz&TqPU{Ui+cu+oSmQ zn0!f$+BLfT0hL%J=sI2gm@a=xxLT|^#;S$K5%MLvyh4}1qRVUGFU|HVvU605@@~-O zbxrUFQma3t%e5w$2dt#i!IY-cNghk~(A<>P1w9>^O&UyWk}C(yc-rJfjSP>Pb{OWw zrH9SzVTl{pRO3F!af{FRrv3Qwn&gw1Y2Jkyu69_Ock1~T?G`1E?Gm7DNFGZhcG3P( zj36vkXcKG)?R@Q^`B-v$GOnxKo!mzgi{$prx&g4rw$26)UI|+6ZS8F2gthnL7w`5! z%u8g`le;}!GTo;5@>YhAA8L`yqeNVJGc?%XB)29zlkGm$6pOnx*^X(?&L%~%J=y6~ z6n$`65pU;vdosRR^$w<8HEv}4ow_adI^H0>Y{1tH_bd(a(wL;{~3je9VgYuUrym_TA@Q`}LnRN3VS2k))9^PA=D;+cg~ zpFRdkNAE9G9MH9}W%f8?d+JQz7(La1bI1GCA@H8_-6`12SYoSpC_i1OEEcmXbml!y zB|1TY4V%s8X=Tysh$cR>kJnwHiUX&oV*bNK^@j!ox}9GO0P zG?zVmxO?W%v91G0kL9~^GhN4WE}Vu0{1yB*yHNv9bm=F4)B%^kQ#>i}+)MaS;$HP& zqkQ^T%sFEEbF)?ltZYDe8yZnhJFCu3V<#wma5mM*-a%n_&8sX`qR)neOcMzzE^5vDqN4DS=WO&q;vt;OwPDvu+R zq=&_AW9mP;dqjv|bHtOMsrhD4MLZ9x`fCHW7TsSad+Tuz)oqVDqHi6!`P{EI1M?8D zHiC`I7-nV5=exG?ng~(*t|Mxz(NbCmvx5G+hGj7>c>yIY#&~tFQr;kFfJKJ*|F%{je4Kt2zj4ZC4ZUH}U zdRuE*XQKDGBZk+j&!5w&r{p7^buq_FymxO3Z&&?XY;9GACwXTb@#xwW=sAN_?|M_b z5xhS3w(#>Oc(;e8@68w*Zx2h~T@jLg74OIW3=KE?Cwjob2(rF$MRtR_egju^T{Mz(BvPG`CB=j4h3!+K(x0s~}CJK~XOS@{{7l<^3e_C@2N zNMeFXUVY8gWfFL-ix|NWGmc1aSeoe9QxGTEANIGfOpo(k0+#Do|Ho*<3l|L{YqNt_ zP2{4Nd4VJi@Mvp*C5a@silW1AqP7!WkT*iZ9~x z`Xi2b{T?k5Dgtf`KHtD+;J70OzUJovg*U_6eLci!vz zkKaXe^xw+_cj}aV|3iaLh)Hbrq>IHtJewxwD|n5g>!#?*dH(zF`@kfq5}Vuqr#7eo zhZTtz6W8nl>@#@MAdDxv0eqgA!u!_QXJpAe4RC+)xERITf*;45iAMls@aEw&NM~^E z2TXrIZv40Zk`}KGL*5_ZT<8f<#(xik_ z`udq7;@=DGB5JkIoC|TB%jtTepZZv<{C;eeI-Z=5qt*2MlYCl*${oNHQ2V_P)z=Ps z(u{mossue04N0TrOyS%wJ$WGTrso*SpGG~iT#{P6h_=#mGP5|HS_MrfJ_B6OS%s%F zt5lC}C#C2db3MKI^+~-Bfe)UH=cgg6hP3s{3-N7!E52PWs2yK7^p5#%$deOYkSvdr zx;b1A0DBB@UL3*yG~U5|6!s_5XQqCX=;UC*5dELKjlfrY&887LqQMKv&uVWwD(m(>9Q1N@fa_$-{&K zvMNvz%Gyv=Kx9YR^xJ|WC@KmnDqthv%GWO{B45S&`+UxQZ|2Qp5~yGQ`32s&=bU@) zx#ymH?z#89c{5#l`n3`eksz*r{Y&Htl>BQ{I5_A=b?Ko`mC9p<->ZGXTJpWx)tlSm zHCsDln>r&~YFZ*49kE2shG?VWu>)(3RgU`Q!tiP0^{6Af~Bw6_T zhghOKI}=~!L6LFr$O z$ohuPcxMYJwGB4vK;Jg?9&E&PHFQSXV-TdR0-Mzbzx5?VRpb#1PlzzFcbj;el`pjsT(FzBuAiTh*zTs7^NP=MO@KO z*#;4GgV_z*L8pw8QZ?0<<6trRu87}>@F@z_4TpB88Py@%If+HUIgv%RgHZ=VU975< zIy9*_MBPZVpstWC0~cmj*mZ}{M)p?$ar@x9JCy3xRjLNC{#$GS1V6Ek2# z-J!sST~iNq{Ls){bx>4ahcVaJAzbS_^VkrezUEr!D6X{Xuquk`5b^cH>hdXpmIF!H z2SRn|EPgnf6j1ool<*DN>Lv_i?_mdH@0U^?^s^V%96@U)(wahA^UA=&6ClcYIv(=` zZ&bvgnDd0u7CEh)65H9tBH%<>1f7j6s+|@VU6jCdVKOjXBoCF)BefE>8s&|!nDh+TMbkk}o99_rArz77k`ja{s~tk}icKJYoR?VWNk_G;|rwq{HnCaAtMk}@G9x(77@5&Owq z_VmCVj4&qra$pJnnn8l7h(Cy~y)~0$DA>+LECNm!i=cx<&M>)M{2$)bx@Fc=F229rp|wJme7Mv(C;;!pT=UC(B=vy(-&a~+E=@}LAk4<#gw5^s+{ zo~npH?bC5HTiMPnECS9h7S+y8EV@_)Rl`*k37Q+GH`&B8Jj$Zld5A?9B@nVW zaUf(#`1f4Q1karn@x4Bs_p+Vs+|MH5U^k=AFSDq2?qShI3FyRz3Y{cUISB!1GL9n1 zI0zlXa1l4-%=euF5m^2`6x&rr{CQ&!7HyI9B#hK7%~>k|`x;ijR7&Uy$Sr{tupFJ4 zJ#-p{_57#887r3R5PrGsZ9W)#bp_SC&UVgRIDJ_O=u{BSiy=n3`LgNapcG%hlCp~JiQ^m z7$HT#nBXxKS!UN^y6YVhUMrr@Lh>)fy2;O2xk&oBAHdp2JRrz&#KW3F{W}wV)WN*^ zy4e7ouP}u{ZB{%S1rBEW49>RZXQbKs&VQzaGiIB@nC;xwAVLP&EsjCcI;6zP1*~I%)P&Y zI)3KU@jq;3JAYykaNc84?fj8N7ptIZzN#XT$`9sVvy!@A@#*?0o7oQ3Q`c)Os-2&( z=wcOgEl^z~vUF8Z*Drm#K4LT5Ilv;|{F6ns^A8qXtb(qEs*6OHE-d+qIJ!;U1OJB2 zZ0C0@0?uz)R6D+y6=aSg~g9kp+91jEQ789HR(0ML{6iJK=WHTC?1#%**KIc_oIpprC zbm_if`}&0|9>^=~&m~w?J0&c-C;>MwhaN+u z^4Jv5tBSzQQ$2=@G(o!tB51tq|RwmIc2spokhTz#sag?qS~3lqKguk&ePF{AxwOk+=)1r5!Csv zPv_xmXFK&Q0uCO6QRhS!dCn0ms+|cex+nXN?HtV_;2g!G+L_Iw zi&YrGnK}XzzF41xP2KG4&}woOk``jUCTFalhaLw`QfHxux=#_T12D0^9$03qN5C0Y zhji!0dTt5CdN(>VvED*qeO98v8FxBVhgh%4Y3~IGW3R?~ZfnNWA!)j?o?Bu-6A}kw zg5K%m?qGy5LGN^OOAKhjg`doXnkR}y>Y^Oz#31s@0KKH{r?9(J#Qz4}-u={KhMVo2 z$RgmJz#`~0v#55CXVFCogyKf@VF%XrV#lCO~NaglZsn2%SvIsb* zv8Z-VVbR4Zbh1f1A(4uA^9%)Pu_BHq=O;*{X|#(S=Mhj}GI<4~l?+tZNvGfPuaYLlH0ru#xuwPo;9j zd@ol3L9Q5=bM0L=Xw+dBs;_G&*aBdl(R2XI%oQzz;GeY97FGcp&| z4QTJx2V<{huH4p)sY4EQGgoej0Zq94U`)`=mAiux#stk=xg`cP;j^F21e3Y8bD)~J z2I%Doa~{B1T57oFip~11=l+RL?YQQ;Sp=MmSOlFZ1=R6ic=X@5`PJ%@jC7?5@I!PFvScx>yB+y3`;Nsa)m%Ob{lRv%+Hb`0|9D z>;Hy9=gvV7br%tQ8o-bgxK9lhg%*M40aNmEmEfu` zo3jhWoX6maIUTIAlP5BYk|zNs%M>LehOiCAAQg(iF(I*CiE`9&rbEsWl{JtpDgy_q zF7Le(r4-IH#~-RnRt{fZLV9y3fEcd1EKcv6HMV zvAb9ts1A!9Vpn@jp$**?Ik;^M!X6e5yd1Q{hLt1{11K7Lz^clt$eYwfyOoQ3=%PBL z)Ou&7Y0V-A6-9Q}Dxh_sizWxE>qB;uv~#jg40w^V8jLs&3!(9Ll9jQM^a}`9#Bf3a z5sr;vS^UQ5;W?kjjFV$EsEombp%}U-stQ$xc=uQ|`FMMnH^z#Pb1HjI`6mSbT%rDn zt4`Kdh3qbt2dal=Iw(}PhNc40K`a~$oDOnXq@3ksB@G;S+A#w~nPXs!SOv{T=S5Zd zmHE5}rTN2C=I1+L`OMFU`B$p>k7=;6wkqH5VtJq%v1+B}7wXosPvhj87a;HYxbqk+ z;Vc)wIjgF`KJH)|1)@V06To3?62MUZ!!aO|j@)%kVMX?$oQ z@ae(Fo|anUx0H*7KI%g)5(|9P0yBI*+62<|Q55KaK4LTY=xi47Q7g(y`six)5t1}~ z#7g*xh0jOY((@5+6zC%s&Sv6aM_EY{;RAt`FSJ$I$Y^hwzUWt-!xy*h$?c1K5MOob zi*wK^d{Iy@pJyan5{9-Ei3X zESPWF*^2r28ui!&7-1(_3y-nzzeUb@V0ihMm8pEpimYVu2A)uf9mmora?Yiqq=EEPY%((%W{cU* z$F3(EL6l~z!>hHqHk?8UC=SI=F=DA1F^XcPtkYb{RF9PBrFwNAQvC%~mU2B){b$wn zU)Eq{EmJ*9U#?_hsPpH_7a{NE%I)b~>6&5oq&KG^?_vpS-(eFjVQ;>4+!_EC`EI5> z;u8paDbk-G7b9$z;evNk`SAfbqI)~+9w0yVL3X0X`-Kqlt^JEYCWiso$u7VF*FKve zlzUiU?c+pm*8b;wYoC>fWEQ@)uPwc`-_7=Rl7;hW;$cTwNfKdS9@JK0Bcr`#uKj-1 z2eI}awuE~Q^5DhjG-K_bJf{Mc2va1pU~)7KOkM&QD`TMXOpPy^g@ISaUD2TDze z*Q#6aqzJlL3AeEDxkX!gZo&DCZeiizL`t_PD@g)wsR~vEC)K@JqRmBO~r=3gm3 z>%v({0()GDF|R#_%|O*<6(M&?=pNUv+FJy$#J>*O;RhbsYQdkN=LG+L7ZltB;MB`` zz7l4-F@GusgY4@~F19W+xkF>v`ih2N*c;th#;)j{tJxm2j7c@gKouA>M3iQ)t@?ZO)BUU?*8P zXv*1CR+2;=(0ZNEBm2*1=Sny=HBl;#j_SSHYVJQ*pp6$ak+Bgog@o)tA(F&bbCNGN;X^)9mCe5Y)68Ux-<7 zZlza}2JQl$J~74Nz+88*>zcU?*8PxVxc)l$BJ%*m5+@Xn`59)39}ZM^W5J%%ueSOdZgCt>=*4YFek_!YCT} z9@h*o-}xf@NCg1zap4^d5RQZ~tmQo}OW$t9###5cFG1d&g?_uy6mx&8U4~7phP`0X zacK0VZfy0q_A$cV(#qJUeuSX?8Lla?WrBM@`(JQQ_m^PrAm_CPU3>RH$ah}5A7pY2 zfStS#aKQ5#n_(e6$O4=Cy(slyf|-CDFI6|P66=VCFHE#0*3lYFo$~D=`Qoc=Zzowej}s3&%1V;(`$AiVjg0n|>5G2V2jPqFW3f$D zUp#?MU0-Zw>U|n?vKAnYJQi}E0cIx+dP`nb8&%(+s^23@<~oGL@lOk(HtG08IB+9bMRXH0%vY4G24I zW?YrpboBw)Cu@^R7a92ipVJCHXU%y2^&RGmZ=$n7^2Icbi*G^5w?KZ{JOsx@CV)9w|)`+(B*2s6+-cGV`U^6FQSxFN9XFJ*|Y-IG! z&&)N_uX@lm(h&av{qsHaF^GSTRR4S*LO%ce2xRhb06Y0I;D9-V&ETIOvp^0(f5ty| z`2534_=knhKibms&#P>2Cs{bJ5Dz=bN|NyVM_YxBjP{o4pMKSY`X}?gXmLPfy87ZL z=yafS-QN&_b2i#$_5BQj$s+*br!%?y9GIOn@HOD+o<+U?*8PzaSoVl$9jW|6HfsWvQ&O-?V1oW{qC~^=A#z zPM=Rqv&LIscv*v$sjR_@tgP|IQ*fLeKM$SaqYHW`wgx_noeu^-%uvp$gQcaBI#7 zW9m(uAm5>EY9@Gs?A4i=OzV@Z&pPTc))#S57+Jp$E=-^KS$*A~x)WjQTumT&JO!I^=2c z{$y=Z$=iSb`WgcHm$+uZM03{juf2fGN8Jovd%uR`a<9Ep=S;vP%;AF+xaD_{OByf# z7HF)HUQWWxJmhqtoNPY8pgydycUd4o{RX8b@Vj(czo*m6N-QuI2dYPVH?`Ul${Z+j z{=oKjl7;ho;$g!|k{Iks)Rg?xEv zWa__Zhc_lZnYvrY^uOvKR`SUdOJAt6t@mUq!-*V6tRxkxsprOv^fNZoWhk@DP^!zz z(p_S8vGGfgAL#bOeQu&XhK;Xv)-s=)^s7#VUB;Q=pYU`Lu~mx>C-i$37LWy~ zpQ&;8M+mz6AD@N&38Wid@6j_1uc5Jv5DI)2_GvfHx*2EYGiJ6&oW0M2`Qv|pXeR%H zP6`qhw6Yd~#^ONrpnKtuIDKH%uR7&;@43l=JS*pO6F#HD`p5msUojNd*L+6x zH<0S<*bw#d#jclkxL&>_?Pa!vm;cU!Uj6`xdijg$Wo(hq$69!q#ewR>JTGfgc==L# z8Eb@IX5oBDJZxA=5_Px%9rzhlML}vo+eZ8zh!5uM=5&i}XRA?RV}cGQ)7ky1J!gBq z9_SfWFd#BpefYP&jyVlhdTE zB#HjV8s#oSL-V*QU|O?qk2QHf{l^;8PS7W&$C?lr-m!+2sbdW*vX3?9EkNhlgtYjIz}8e3fVKmSpCDp#(nA^ygLj3u$G4nmcDJtI4EScrF?3zlPnyI zc-T=^Qi-J6(n?$OP?a&sl!z6xF4x(_n3(SrQEAFVo=v{2CStw8MAq_w6HDJF!^Q(Y zaO&*Iu^!xqPTFnQL|oXLavh8MD0LpuhfW_O?5!35IfM^N@56=XCaGsmIIM=c@lN1i z_egVeE%8e&zI&u{kjcpm^(4RilAiCZBM6&eHB_;{c0B~89zpI`Pa+?|ldQyIVBwo< zZRs6BD%l>t#DK!V$8nr%WhF`Y?~$}s*vM#anfFNjsz32PQb5KcuN7dBuJ9 z&5vW5SB60_iF@#1d@CI745#Hu1Mz~IFPVI1fMmj+;J(9HFcPcTipk_F>Ob@L7Hi=@ z7QSSnO}%6?iVEx`3ugrJu%oObiT=q%x#?sw+O%fjCX+*f`jZK1XN*rwlSvI2UNT{2 zDw(h%JDHfbw^AOnlk|{&-y{~~O1&H|(qwW45clmZ9V3#-ScsuttCA-*Y9>C4H z#6qmgm1vCl`OY|MPfafq&4X(GW4b(8%S6M{muT2HE7ACmM1#D&rQL>2G={x!a0jhJ z)G$ls8@>PeWNo~(lW`7x42$7uT*Bb77{CS68UP|Ig z1!kiTXgV~QcQi80tq+@F;WV&7-Z>nl=ADPsvA3&ZS&4PS!WS0W63R3zaO=ykVBt(6 z9(I(KoJb-`miO+~)tLPL?{2BKuxYDSWaguO)j9IfVDD}nqduAfGkm#uI!M zBQ}GNX0d>e^b2Ktck5yGk;%=hgpXMGe55TsAI)TYeDMo~GlO{8QC513;(-Yf5+lvHa;3vN$h69IPPIW&M~w#Y2Z=7(?`2& zFqOHEcGL}rEnvariVyisHhx4sHU~!FEp{;BF&4gTtWCXad@L2<+bSrWxx~YcvXUhF zXJh52v+;4JH48TzHv#o$W71BePfWA%d@#Ih%*s?YW<_>31`kiHKFicNkBX88(oeDT zn9n|Ea-CtTXR$XzP9<>S%1nvA)(O^K>u;@1E+qRp!%j_<={5$x=6yPp=ZiT{YWiM-b{jSU6!vCNho~Wux?9(i z+Q$f|Qf5ZZT#F&E$K^k(;eIdFy$D7RkTd&W{5)L)$3w`M5Ae!SFo|r6**O8|fcb#U z5Z+5!ARjD7sW}tdQ0jR%Fb+!$t^Ao?%r2`F{VX1>s znNA;%^{Y-#s{cL|Q}eO!b2aLmo`vDLbINCB>p<$9#tIPVLt~$JXY(d^Hg8VPCR<`Q zH?ZJrehP@rCKe8InR!;mTFfSk1Jx6~+0>?(&0U<$2o>PneH6}m;&^wTMUq6_lTbF` z`&?J0m#r)Q6vVyR%Jn|igXtFDLiZj_s!{j~0Q=U#WG<(E)t=`+?pfK1NP11`>lUaU z^q#gG+YwJu8zHE(5XWvEayHSVq=8Z3=~L7#aA2-e6nnzlY-Pc@X=N+k(>|?pqhGmA zvKDj0!gq?&rkERjKz242;M)Z#oXy0;jHxz#MX@qSQg?G%S5Pj&YECPaC5Kd^-V!(?%RGptDFSVQj%&PU-U$m0%G4dOp5s17*jsU#?<4;Xi{`zob6h^Yn%Ip^ZLo9Pd|i_X z2>H%&7l2Hn1~YRW&;ieJY=#AvWP#0o8%jN}d_(?kWq!hep_R$(Kfy=9)``c)sqIj#?rzCeA^g-(6G=mzQf;v%5w<&<@JV>9?- z2MhSZL8-p@FP|@1316`A`9fQIzPOm}@#O#%P7m?0qpTzezb~{^*vM#anZD>(eGtC* z5DR~y`r;CFs=mmZgWE73OfI8M$I^X_h+d9FQlVzt{{%r#91Us zX!8Dd-U!pi=^TG0HR4r&s$78q*VsHI+#Ik_;EP@8)b+&*gzg<6U0>Wv+mg2d#`3t3ZbJky zyWrtr(d0(`hA11uBfTu(5p2!IBhS(!Z*H-ZtbsdN9H_4Mj+ojEn(lxmXEz(;-Eb7n zoy3!b#cz(p^1>HmR8}>oMqi!D_lE7A^=`aPMw*xqnZN49`IaD1@K=KCycrEs8>Ua4 zJ`E3R`0LZ{fR{IkjJ-(YeUypez*i+Y+d4MIDY5xbt_Sho{@QkcMl_c9Go%oa8aZxB-fXcGo*4! z8E5Fo5Fw+m7xA;d`bo@=M?Em?$Hk;dz_4 zLJ$8eet2jb>PAQpmc+bjQbDN!r(7BSM=F(H5veG`Z|}`eYHMXfahnWBE~ey9t4NK)zf3@CV|hbysfW$JftJ`F(tWfGlm88bY8l~}ZrL8(teawNX5vq`Cmm0K~|DMH_r%T-mRrb&lV73EtC$KVan ztxDBa&BADBNJ6QZVN!F1A4!+X@5^UZ9EQ(kKCRTVRRtLBG18;d#g(My$z@6{D=#RX zfR%imQg+o%80`YNL8;O(sYS9&sjrvcRCWZsa;pR|V}HdxX&e5PiaRAxTP}BEp4()t z+@*D|YTfB_w^Cb?HQJ;_zT|6nj@;*Kw_U!XbyHRHLU~ZB%}66{adPOY9QcuY9zINY~7q#wkt^1aI z*H`yF`M%aI)VlA>%Sx?LJAWdtDD{C-zm}gU6;SGr@-wB3)qj=Om3lzy{vp5g^-yg6 zO6wj}50+SOD`k8gwtnN29B=(z>x{1_Snn#uC(?)>>wkRhW?O&uwOeHURqKqekGKA& zl=1a4>+eb#U!P+AQz>IL9$r{!U$+2H&wJboX`S(P!YVM5Nd0ZnWfd!B#&C&M>T7qc zRiSmp>g%j3rEHzCUDi;`lEnqDl~~eJ@C(2{{0lFa$3sB z$uA`Q{!qdnhNbR{m1m2l&rn@3_#CF0CD0#wz$7^n4P@3_Zo^UM%h9-h%&z zo@&+hPQm*rOO6=+A@K5|k5X2d9*vBtrOlaRd2N^s@kT_vzlD~(prg)~M5|)2Ev7c- z==^On`%Sm46>7#_Q}S9#NG_@h0za*C2;gJB5nZh#dLYQLd^^ao)aod%SNK*Q$Ks8` z*nifbmQeHHmi#vVcNpn))f*uBsVtl6tD}ATX}MqigADnNS&~NQV-kbr-8SI}>-;R4 z7b-6S$4DmRa>y7zRDJ?K)Q1L|)2n^Gr03L|9rluGdG>6YG5Y0qWsKA>PoK1guG3N6 z2+axEl^VsO0B3MRkkR;z!f85#`!rTLkBq?E2ep>kvaMySyRurHq4Vh3{G}YNGS}4a zE5EEZKM2W$P~Ld{mcXOHPYN~2k_1y;m74M z%6J*zU%)-v3UKe>(&lgCEowBNIYng_SUi?>=xHfPy9SiDg_Q}YC$B_`e|^F^5gxZ5Ti zVa?8x*;Tnv{XoftGy@tx{8RlrxF7061I_6&UoYu7^?br!GA+-Z&CEPDxI9PN8d{~J zI88@!R%#TVERSs%)LLpA+*%WRKhD^B+3Hx?1i0HK9ATZ!XAJmzK5tdo1>l&!=kvZB za!PSn)xYQSz7e{l6h~f{3g&;V6o+G%+Eu!%lus7;_k7;FXop7~`uBX^hoFj5RCWHI zQrxJzb>9d*azpu0^MZF72+%)SSb^f3fk5yc%I{y!)!&2096(9PjS3`DLy6(H7k!5(i2M zKdfv-iuy1#sce+2s3GIBf)k5o;9mYTms(q7;SM(9Qe8!-T8B!TOI==6j{Dh8m%1i2 zr>sUUbg9pW=7QQ`sNwH~L%7$y+O0cKda6|`H@H+mSvl%%cd03br&@=}7hGy?VL9%K zA25_^87p5)QB7rIaq!P!C|C&WZbaR%MO>9T&lTnW7$L* zKi1TJ*NT@-l37Y!Rr$U8E|;mY*rjOoG+FLaw0fGH=2Eo!NLlYvwE9SC zGn86AT{=@#Q`vO6+EB3i^0JxoTB>e!*(|w#ys@mZ?DVqPazLre3TEd&T5yzvCa~_Z zf@AZ)0t!P^idG*j!(571A1yU5MXQgII+vo=$H+97qSbTdD3_wub7j7v)arS1Qi^IS zncd29Z%kf<12QGC@#dpe<%THbE z&Way_+HWZBeTBU5)-A$}t&opgY6WI&h2%}v-V4?a`$gGG8RAmWVIyUw3^kN$Iawy9 zsMTdB%bW&dXLtCKvQ=`WQjGHbWozVqLkZ{MGW#)E+eAcBnw;SXpm*U*E$ek|5xoweq45dA^%EKwDpuAOHG8E>vynLe! zKT^j4$wSIF$qmy@?|%-TUbb0&>r!0(XG_xzQ}(=gR3W#dUP9w73)_ zvQy4+DO%kr{I@^38fkT0x?GA@$K_I&db8qGD#ysI{1*~V(FmF@Cbr5FVT6V|m6z9EL_PZ4GOOO24rRbL)`IAf0FBi-Ix)l9#vDo_gg7M1^ zDRL?LWrtL`6#a6E9O6>+%Ox_-Q0kXUWon8#r2JC(@E9}p4agdo$r8Mxz;#PcTrPJg zWg_cJ`JzkFmMi5!m*N~a%v@*R^hzm*!Kl z&$_PoNKoHb>bl{72)C8*lAkMO+U=6JGN^amcGR*`%Czg1M>D8r+;-H`E6?DwV{bNlksAb(fNX!(K!PNk$rl_+Iq^9xdPT3X8&q*N&*`9&G-*0H}Y%H?OICBGCz5K@%1GWPZ@YDryic%w;Lr4apHwPk{PJZPqm*g)WjQ>9n(DTrmM_cHXj;pcrA&Wckat%%JXZ+fmC`WN%wq%U9%CrA)gAaNIoieyLFU&RDy}L znI6ods_0V@`zGK@@w*pTSv*S$?M6q*6gZ}il26KeF2x<_NmN+!<3hqfHKq7x;W@9th)*o@pzV|FFK@}J z;gs~l6NaVr^w-HAjUG!b2@zibc}ory;Ef_VrIi1Ecs9q9b>I&S4?u%0@2lq1Dpi~6 z7L<^JNSB4G2EmhCRlT->X%A+x#O+x3cgIlp3y6uli+v z2A$q4EQ4?HM692e{x7p&`ttW;=AwTu^p$6c8Qm_Q&;2&{$Bnj6IwM{$W?uSRV#aG? z%*?4j>I|n>XZHVpI1x{p>v2uOH5u0wTvKsP!*wLC>9}U%nuTjNuA^`rgKI9XdAN?n zbsVlnT=Q`)z_ke1@wgV_YQ}XUu9I*r!L=0Ea$GBLt;Dqo*J@ma@=n;o`yD)qj{q#f zuV23t<})0^qZBqNY*x5Z;aY_eKntHazZ0&;$^M=2NQKq14|okegQw2l0ZzcbI`B?- zl2{fwg?i2})bo9_a(<|iXUc?0z6L(i~Uq31H-wfR?D z?J4|4+<&sig!Y)w9>dyW*wuMo=^T5Maz-hqOWTf9&N$^>9Y3(?z-LBr-uAW(_ zGTYUj?dpf^>WA%e0Qc~tRR1K^KSMRlPz`gHzfk#0l)pszOH|ux1GV2Xwf0P{Ex;Q` zUoI)YdtMI#4wuIPN6AxwHS%A86tzRC%SO7Ec*Yt*FKQee>w?coNfD zdbpe+507q;V!5ikL8{~iz(eFwz_IcSV7>euaJm#%G$8j31zaFw0Z&r?D!}Q`lNjBk znwwPf0z8>Yj9#SrS7~iTYa?3QD(6V|=&07lwRQ*OFC2ZTa&{_bk89y74};6PcNQ^ zG>_h+wR<3c*61&2?LMvDr?t;%?Q_cimcqA`^OoZ8C=A%NEnrhao~;%tXRPAm!0#SC zUhyWI{WjU`cY(?*Q2ru?5v`4AZHv~nsLoc^5LKBTmFZEL9gsL4`-f;wu2HCj6s{0m2qRnB;Y zjmlr3`~^XJV3G3ID?j2w9i7UwXl;-3dxGTeQ2q|(_bR_v`FoVVM|JKE?vyht_6Bdo zyzEn%eJb-DWD=vF)3$G^{9B4k-cI>ih2&8_kf$@4N84(^uc@q2{@6T@x)HUVrHzU& zP`F-U#D!|P;@t{+T&R{SzFXlQg?kk~r*OZ*J{MB{EyX3I-gY7R0ma8ET%d4$Xs29X zxjsbuTa?q|LhV=a-H`c13LeKTIGyYyiwr-h3gfzDC|+09g6Q( z*sGkqitkf=zv6vG=g7&UrI>xy7PGJQ#XIF6)$5CCb3{2k3U`Bl#?al$?^VuTa2^`E zS2_EE+r#!N-lw%vg0T;i5}ol9YOVq2{$VxBsZ~y63Hxm-p$+R5?^f8OwYwGXRlHB3 z4B08xa2cXHhp5gWYPsT#iZ=~WZHjj*?9tj@h5Holhn{nX?^iv2%CSmSTj@^u&hVO2 z>aSH!BREq>G%BY_IqOTAN!FLL--vR$72mCJufl!G->-O|;!;NW8iloG?5k1n^$H`( z=~1}13~OP;-ZI*-PdR-GrF^ISZG@ET*vqM*wwxnv1pl;=jmlpS{GO5P6_2P)H#q+o z*{z)2z?U7eTk&44-CItp_9?z!@jk_+f_$rj`fC(#RJdMY1pm5lXKA z6yL9SpW;@f+F7|%dJk!=r2S2m)UY0$e;%@4IT7V_SF+z8$e%TOx8l8u?^S#s@Xe$5 zD{fV(2NX6|?UdD{8mm;Zav}=5!M}Y}xAJ?Gvm2bhjM}Z7Ughkq;%x4%Qa>oCPhm~? zQQ8@1FA;@33VXvG%U-SRQ%+4aC2OlG*`%;rIX#N^D%_{AuUh>%RON?KzFYAg#d{U* zQ@CIGeM2cxLf(XBiX7?IdTXktwShTtFTGodgVtH?@_o{ zIr|jvQ)rE1tC~^N5K+8G;a=tRncC56`DnFVVMJliXxgw>Yx|T_Ge#xHsHDP(!fxgF zjG_EK<@71E4%Jh{q1sCECcw?3yOq;(DE0Iz+^2BA^7|CGYFJyVu(5_3niP*H+^w8_ ziuWnBYE{0LHZ;~!KBAo6iuWomhmmg`rjiPq6h;nXtKC}LtDJob`xMGpZ8cU~DQr?0 zQP`ufSD`gdWfV3kjEtk^Ud8(qTH{qlVMJk%!d`{@##7#!pfU<03VRgxD%>|gWe!&v zg-r@03VRgxD%_{APhk`O$!bKJ!d``a3ayFcHz|xL>`~Y|k-hXOUVDVfD2yoVIYMg{ zudUZwg%O24^{m~ec%MRR5+k8jVH4oy(LIycs#oDYg?$RG$>i56Y*H9exKCl9LaRY# z8rVxj@m_`d6k1cXR$-IE$P`NUDsD~HT7^vtBU80j@qG&W6k5|%Qel(AUWNM<_9?WE zq)d~-h{9fl`xN#mw5C&k({xHk6!s|Gr?7Sg`B&rHGJms*?4kBjd#xR{&$S)<+x9E= zFKsK(99R>G1hxdW2QCd<7x;SM#Xulf7Ca=_7+exOE!Y~|8oV#~)!?(in!HJQbMmZE zU1)J=d+6rSw?c>I@5=vW{(=0_1q%u`6!a84UyxTguW(o4FAEP8t}5y*x~}NCqF)u2 z6`xrA#o~91i%X6uSy2)zDa6y}Vm!ew#dqQ=@B}c7?|u!#H@=30Iz+1QK5{jlBn-oI zghTK>+8TU7aaPfma*=zB&IPji)J-fwu$Nc;Yz)_%=XW&cl;ld{YF_mJ4J$ z@a=%MT!^R7c()zU#y8hy1OE)5Etg|VmRtd7<1Lb7fL{e@%hec@CD#Dj@>%_!-{$~r ze6y_y{2Kvn`MfLueiPtCX|yH+&bR7e-HE{KWeM;}vI6)dIT`q5IR*G+ISu#}{5H-+ zzzx8s;@|w32)G&eG-(Hp@9P0SQaXVjDGA`yy><50l{0jJD`8Dvx z@>}4|@*ePJ`7`hnskeiY`Z88T}nB5imsd?B9QT`%Wb z4_p7VdhH>BKLmagY|BgLy_olM-XHO0;zju@^3TlQU+|lPn!>um^@ZmYo?qBdG_z=O z@yy~a#TOJ`Qrul~SxK;)pKtm9^00345oYRdS4j+?>tstksyrKcDgF0Un0RK}qlS{F z!bI?QSIPJamYH(3DwoNN;IlXWi=QR-^4Z zE!O{G@cChw;jx(6v6#`Zn8~qtw{kpYaXe;kJZ9u@WP&=*8)mAGCd1}8@Hwx*W>Zdf z%PDR-4drw^hi{Ua_+&Wz6;5r}I4z#(#j>?VpBDn=^Zb6${Ab$(^4};Hsp8@|F z@SlOMXHoYIbUh1Q-^2AY=y(URf3VL{*$*K50c1ab>_?FO0J0xJESS0hopAY{0z*<=zm@a4F+Jq~P>(jWdg6vI!^Hs+l$nHV= zJ>cC39@~Evysx6|bCCT3_&*LL)vo>E?}y&~fu-_mwAmkspj?A;trP~=N_B9$)CQa6 z@L-S1PY*7Z>A{n5EtR8#D^W&J?!dKHj)&~YxITsJY+UD|U03ikYSR^HcLmyAfi_ow ze;xSr;qBnx4*u=XcQ@*8hrYX^?{4UO2-h>v^8)0*AG}KCe-8PdL;mNG?}Pl$gP+5- zRwm@Fl_T?RlAU>X$}=cm!}W)}C#5R%q#PZ(NjBix3j8XR58`?TS3&+yVcSizIsYxW zB>x>;`0g*R7jgY0|4I21uJVGLWM;vWvIbWI_?-olJPE9ve61 zmS}5ROQikeXiKcKRV!s~r=MtvwVFow!G~B&BG$P&wlLZrO?b?$kwjaxBay{DFVf!D zikeu5tFvWWXD7rKstT89^koonmvXgwBqXu_g-`3XN8tp_yN}p0q8{&!1NK4`rlS9gHj95-G*Il2i7qZrDu zt?MY?9CuyRujYhEM{9f36`LPj)6sVBw& zl^feSaD3=BMmG@!wl0QC@=fWl)0HR07ggj{7etgf#4gZ?(D%EDV94b(ClQU=>(MK zN6-9O{qrSQnVo}SI)P&uRp=zea+9NBu^&&N*TL-csDNfF1|!>gu&4z^hM9BHT7YI} zc(9C~v^8KIdsMm+(CkKFu_qKuW35C~LlsZB^PiEP=>8j+UHHYB39h-```)=`1PJ!I~&EwXAm z^3;}wbRLa2ERJ@dL5pC{=5KFq)vPK_tuAtWTZfCe$uepL%%mIK4Bg*hyV z&Oxp|zAf4gF4k#3o*6-ZekzUhYq2U3No<3CI1coy^9~pNDwajIy&2G`07)K(|Vq2(nw96WwmSuq>81KDMo+RR+(mI@6vLboNukz&Te|MH4A8 z|Dsvc(YiI(hI31U$%XL-?9?AC>*mO8VdT41CtKZYFU<=!M-pZwZg7_M$y0M|+9!|X;p6bzKq|ak= z@;2;RTcYMDWipz_TfKd2)a5LWCX58P!ZeQ(KF;9tvZ6D#v8_Ftk@C{Bmzohzj7BrI zbySKV1WajinQOT;Yc`>qqDvz!o7*~~43-Q!?yscLID~daeaFD#aSp?YRNNCKa&Ly2 z{W7zx!&ygjw9JPvLT)QgLs41XxqU^X6NvGVNtP~Ql9McqZrHYIQ?zq_XYBkq558(C zHil{I)~TJYxJj-sbjwzFty8l#hS=Jaz>mdk*p`U8ny4bpTehveJ(JU~zqD{uJRaS$ zp?&-6wuE0tKYylMc*<5KqFYyQ?u>2Qv^ib5I?{hGWt>=?bsa32m)7B&GRY z|Hos1r$jq>;_qMC+_6y;G%6$Q14?-}6`I)6N=}Y$T!l>_v7P7Jc$%;0-bL+E-tjP| zd{xHbs^{crd*lMeeD$8uh||_>Es3;F&-LytMY_UkLCukl?db|Pf|Z|W+tAkDmhjag zuj(0H&f`g4+#MWVk49Rt^LPwbNrUSe)~t@19~9(%m~kqVrEMK;TefXk67ATO*epvU z7x*YHINm`q^06&0;dvs`jwPYDukH~!V*_CVYS#>;nMqfw!7|RhT#kkv<^7Hu-$*Gq zA7m`ER?udcvg(AUBWKQPYTtz2II($)V3XdU(IX2Y9W7A=Igd=MW9LLWq@^Dxq5Q$q z(Gni0GP=)^jEvAytdeMF`nFWC#t}5|kB{f;P0Uu5u@R-yHd^bw*+A8%v6}|_H|t-K zIYTDr_}XPwn=It3Hr?q!eO%YZY_>Nr-u9X!X#Y0m*0*2n@d)A$?`9lxH-PI+58Rm3 zeGDL)+A=a^8O9k=s$rSQan};EgZos0hv4+tSOfNgmZ%CUz|#%cBxrmOk;PpY-59}>AUrOLc5aO!4@Fx| zw)L9%eBrVD{_uGHed5))(tf{qRhjeRant8*-g97}Zg$G`s15bZynN~g)V;xMSlHQi z9!Tzz$h3SG7VX4#%X1Hs91p9a55@rbe9U*kH^Xov&6}u&ZIMkKF+9v_iF+(>n=;#L zw9`9M$q9+XRvv-OjZfS?)nFUr?h+qh>1X(%4PrdcH7vqW7O6FkkeIP&fyBXX6>G z1`VD`B+~nII*v4MN`do{R}V{LvD1jbd0)>EPXNL2E3Q=7)<&sS_kdk zc52%7@MU-)j1cWe2qLF5firmP$x%E{jVF*E_>32UeO`1K9_&hsdB7`8ot=^G($ujX z_j9ohM76mGJ~_HI7H{JdYiagYWQwy6hM>wXlUkc;p{-t)PO-A?4t?#j?hJi384;TZh@a7(2QqtsE-1p zRqe2=1HTIl&109L&R9I4FIJ{yKEBuKpQP7Ao7F1=_IMn}o51XNGoO~+ItI@2L z1Z?Qk(bID+O3_x&wp^=5mM(-GV~1`3&ns~4KqF1Zm4D^7z)myA)A4o!|H~cGn6G)6 zb{=HB9CxtsLZ5kFLGMQ~s~L|P-6KcMe(Qw2_g^6cX_WEVQSN!4nRpw-p!P2a;T)vUB4sHb{pP7Ts*Oi^i zUU+Ec$^HCqGO?Fc{JA!@qH42y@XkXiiLoE27hWFg*D}DWk@pUrGkNp*@spl@qW3R* zf8j(VSYufQff}*$fK*hFEG5VzJ=(xhtvi>na(jrd`_laC%IR&FmX0HgcGitg{>z1Pa_A6IsNtFrrt73G$Vp5L&>2pFRw zSyW_!@iV(}Qt3!^0KCtx!uxG1r8T4iMOJBbxy|a|*<)l3k^fdCuZT^DmfO^usxwF_ z9EvLKlAKbvRcS@{{{}INNo4#p0205gyU4QhYHVxN@NrqXOg}0)#_~jmRaf>{c}By- z(B$za56~FGuGtS`?4Go``k|0I*jB$jq^$cDzhCjk6n`w`r#Yn@@|;o*U`{y4;0mdlEVsAPYRy3oBisleH174=%uW0rxPnok&%~`1C zEL2UesixNye^v2U6@Ojv*HbN5Xv-Daa)nB~trBnNRac&6m4?dklh!)(c`2jT8+%Zs zS)=n{=jc4zxgHCJ!TYZ2c~|j|6#q!^4;BAV@%I#ek9d!UG$7l)ul)BF|4OQtcGEG6 zG|TkaZu;ygU^_tSD^a{8HPVERG@&C+xRH}!>>+Xzo=3IiaBVqU@v!1y#YZVVD%E*+ zcPR&qf)(A}Dl|@o#wk8Y@kxqLReY-AGZdepc%9;PCEk>GUt7_fPpv4^JzZ;hy4Lh` zt+s5`mW_(fReY}E3l(3OZhW(8e6wkMa|KpSVX(6M=G2m#FwlA_4063>IA@7!U!py& zP<%ygeqll7IIN#5;Du`-jm%^la!p0|jg{TIN^6i97O}R9%MSTZi9)0=w!(L0z1Bz; zcF|PZW{xW#V+|>C6?I<&rNJ7!r^`kN&C2fH;&KbixVmyFAT8d zZ=%iDp|_~UQXan6K<}{9Ou~~GJ~?b<6ca;3rsINw5VxH%a+qhylgRx`A)q=8TG{;q zqIOpieQ!9$zFOj5qjH@Ok3zd5Oe6w?^T>p{rVKRa*qhuO0rrwNPbR=J9Q%^rGcS3b zc`4J&uV#7q)y(SGvZ`Mj<_$d^Di){HvG}#J?9Q!JPy*5a1tHl;HaScBsG(mD-_Efly@u zuHk_YPEv?p9Pk36(RpBnan<1B-f3<*Kup3l71xYl2s<~BHAH#~jfG&TFn8Es2rGn@ z_vE|hXmYMYlR3EN;%a2=6F^STMu?L&5Y;^dD=EDGmah*oSeuCeE zYQ?o4*JfNRah>T|veMJO($&7wubrapxVA!1PY_4~*9Ew`aLw~{%wugiyXq#mgy3@W zYKUF!^)S!vVV=JSw(Y)_;0CssL+oaP+X!}(cY+YEvCM>B)v}_UhEA3K~Yi@&^RyU@iSZ#R3hUZF5P@i3aw~%?{zE3rFfMKOI*ErOO)oX z$Tw%i(gIkeVUB%rbY5Xiz^V+xz?!t^`ZU_E=A&NAa{n+AI*js^wf_5tVt1O5Y`cB< zwLbjjQg_Vmp*w(Y#|7%(xH>7tH7Zz#T|B=|&$Xo>M&}h+?)TlsSYpX)d+4d1k*&*O z9gDozB=|Pi`EmSnagwhwG|!UZ4a*j-<_EKQHD;3gdeXe}<}_e-SC@uU?};sJi*Id@ zZ0BoO1#D3R3Ebrs`(LOL{EHZQ`WhMj#Zq)J4gaVr{u7yw@5(AsKWkcK=FE+e+0$oE zpFU$2UWsl!vUS$%*&C-uTc)>6oiU?jdL%MucI!-pHw`@9k~O{_@Y%8V9;y2gU)H;! z4XIE5`oCIG@4gCdUg*b{N2TTetUCQ(O+CJfkn`&vaxT7f`ycLT@b5g}`?9j?V|z@$ zxRZ8Tn&-Z>kma)tmYnr}RGjIteqXSWm6j~|m@eE`Jv_5B-~8|_#;4ovM6b4F`F}`b z>f0IepHgaG>!GCx`TvyC^p_oG;g`fMS^IAd-#=41UgM|DN6IIOwcPXNSD*1BqC0IT zTC(V4?AAA#yf9EAN7#Nc8~dxuv@gB1ec#xUb(Wl-+s2F+1@N*(BB7-zDTWXYL#W3u-|?~R#{-4dggtj|4=PpmliU`%s2s0Vh}zuC*j z?1rb{hcrHJROyY+{enu4*ZRDjg~OOG_&EwW&qA#6F{xd4mD-?U+e@10`eIk>bfnQAdHwNyXpZ?!$bA$QggX{mbcRsI81W_EH ztre_F5j^Ng0xH&nHMOZJf?(LRL}*PgY4NaFnjaQx5<^q(9t3mr;z95a@F?Cqi067z z=w0w15YIyO^PSmkciW^Og5=66qnua;aBjCf4Iu-f#p_y z(4&uCy2See{!ma-x9Gu__zM4}RDS0Z0T1Cf3a`W!+=vmiI7CfICp?1(gbzd;4;Ugx z+F=)u8)qHkn2mIkt8$dd5S1ZsWK^t{nQ`KoLOy0+d@|l*NkcxP>fQ3CZ#2Rptxi)f zQMaLO$7t$8B9lb9Th5nfwl1Ih(f)F~_xkv|GjDd@ONM_V(4)N@fQjB{JWTnGjp~yC zySj+}U_R$BEmU%qxxn|Y5U9D@Wb3R4RYDjE^ax_B7(A}72iDID+Ko*du{d$EQ?G`B z875TY)v-_wO|>_Ee|+rc=SR<9Zhbv3TZZMP+NtO&dA=I!N4h1v#eB25xJqP3t6Rf$ zY)mRB#Fk$d5whPTNohlU9rrm1btPb8+zXJ7M$}-A1miqN6QLW0 zv=aVA<$~p^Koy>^3*DjkgzRzU?Pw37IEo?GMcAo>lIpgPLzwB90VRkH$ar%SUZ2rg z7SY!Rg%x2TB|pdA4x=V9MaJB+e9<`lF>i1&NY%jb3 diff --git a/backend/API/bin/Debug/net8.0/Application.pdb b/backend/API/bin/Debug/net8.0/Application.pdb index 9acaaf3735df6ab960b61ebb8b328f8adc6bc04f..582da16c63abc5b408132b7e5f0912daa232bfc5 100644 GIT binary patch delta 11855 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 A!vFvP literal 7680 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 GA^is+i>$c- diff --git a/backend/API/bin/Debug/net8.0/Infrastructure.dll b/backend/API/bin/Debug/net8.0/Infrastructure.dll index 3c7b6d1b075a436215a93762e24511822dc7230b..589a16f80f72e835a76dcd2b7173c1c985ce1da8 100644 GIT binary patch delta 238 zcmZqJ!ql*ZX+j6fi&bm4ZR`;#6X+M4FLHnNXU7$O-IL9V!%H@AC}S4YFtJEYGD=KI zPD(K}u}n@eGfOr%Pf9d3wMa9uG%_@|OfgDIGqOxd-F&;-l#S)-d$xwjB9j6HJk`G| zH_Y+y-&oHZwmy5F)Z~&$wF*!{{X(c9P&LETM(#R)U8fZ+zxuXq7M#q@;%~xW!H~+3 z#9+jb$dJO23}mG+7&4eJSOVE83}!%>%wP_LNkDm1Ahcje1Iro#Rha`-r2us%0mY1f O>?DTN&DqnZG64WOT}lH0 delta 238 zcmZqJ!ql*ZX+j6fvV(GqHui{=2?$B~GD%4!`p@xMa-xj2=lkXjWz3=)W`>ETrfG@h z#-_%`CT2+~i77@YX6EK;2C2!$$p$7S$;OF^7Un6Yn{RiUva!tcm)SE}WKw{@AM>*h zZyH$pcB`}cymDI>Fu7z>tpZeV?rEqXP_<2ajZb)(=MA00t51`K%LE8P>_i~60LrE? Lm~PIVK9vaoG-604 diff --git a/backend/API/bin/Debug/net8.0/Infrastructure.pdb b/backend/API/bin/Debug/net8.0/Infrastructure.pdb index 7fe98f514aa7388623718246c898c176b7932277..b2032af7fa36d82f327a880e6ffe79183c4eaf2c 100644 GIT binary patch delta 9645 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 O?_M1Fo5{64;Qk+=P1(T! delta 2437 zcmah~Yfu~46+U;hS}nVhaRbbH|RP6kAP*bWn?Gx6AI6B>8wOdd*Ik2|R+wLR0=nYMP%t_$Ul zraN=K?>pywclX@Yoz)9-k4WfkaivX-#+t3Cb zs9%@$gBzL}khNM|m>$-G zB;laSrGuEFm%v_yd3aSy!4TjAM!$XDH_sY4q10F~J6L$lp@y>#xyM1gQf30$Dw!D= zsls=FaSG#IjB^-s7#G6`3B{y>>s2bag>gs8Mc|zBV)+uGb&=k&NS|4xuP^AktMI1+ zQ}zF}Z$Zm79lU~hc)ks=1THTa1Xx}(-w~jFkv_giH`mU4WM<*TS{C+T9LJcz_$|iy zS~Yx%p>?UjgK60Y;J!o*IKw@@9!g#>@$wfyxat6jSC4bzJiM&G5k;*LOY(;-uxe_@?(d|_RJmiq8 zBrjFbkNKLg3QnpEa8rX^0Z#KCuUB#KwoR|nz`HgV>MOPg;z}u^;=v$|DSAxNvxxap z0BybjMKdLd}PY{2l>a1!IIp{WE3VoIRtTa9skI5klfcSm)FQ<2bkZ7e|M)erh|sG`3Yf?!%}6!W zr8V{U1U$h|V3RkrDd2BtD)R=#4#En{4JCG0}Y;d zJv!1GuKRuEp+EUHK1EljS=pggL*;Zh%|M^eFw4mxJ)2>mM>3V!-6*|1zK(>)Ng!EdL@A`ueM`!jLof^gU|^`g;c&>f8K* z&3#^f5OxI^V zV5m3XZ(G-#RqqM<<&^63?#1zkgTsT=m}k(WH4Jz|0|7dezx;0b9KE^9Km+;tN*Y^A z_vIV-^j1%(&)*+fu*Ev*@jhG-Xa4v7CZi1*v8Y1#Rl3{QdD%; zvF!)?Cwq3^UUp;q$alABmg?S!?C$KFIi2165cl<^i_OP6pV>&Yr7xD-OdhMX$0M1o zX0yfC?eq95d^SnyG5Wn`uhC-hnmr!7aLRPtR(k*7Vkh0bd}{Ak{I&H zn>F$i(U$V)+7+2eY;`p9Xn)DdB;7n5k4)J_GSmtr+5}|SL`&U!bCUR{{!FIs;7;kk z-D{FPae6Hcdae}~BzdAdFq!^}Os^#~S!8A%J=9(C?N$HBeAk)o?PyOj7~b4C{bm`F|7di4Cl7>qdmTZ9ByStvB)-P$-bVZ$<>RLbpu1??<@<OGHPYL4z7of=lQ{S7-1p_gj&mQ5^Q-@Z{Fd+QuIm0)Pt{EI%&a8#^C^wG zrjGA>b-jA;&Fh&b4ozOQYSpSQJpS!(eDhoDwmkRh(j(6VbKl+f#h1SG>iVyJ{h6mf z`oH;iwh`)q4GPz#xB@A<6$QNBYENexMd>m3A{~&Ub>a(E+OYc6l*8*KD7u zG}~d2L3%LQ6--zm9!*;~5Vvqpw=g9w#5jd02D(}SU4zfB6bE{~6E>n+vk?WAW@Em# zu+%Ph@EFY18r85}5~#cSLCxBjGTPW5w-L-Xm)e!^P}m4n+r(xWa$)m2q|Xn7zTR9| zs5KUX@?6wumn%X;tKhQ#?~(m+oZ zUqNW!>xnj6jymCD&q|yng^f)T@M0F*h!hcsyAidzX%+%VKMa4_L zUYjdnrAv0X)tU&#^@5Mr4(6OJW%+wOl3v=fHElp@73$i#?Km-*n+}2DeMZ1+L^|dN zrrL-q^%}OC(s=Ly$W@)+j|Ds3h^FGNWT(({zX44P-B%+?SJxmt@7L9QeF^=XE!S(+ zczY;~j|cnEkLnV;MCo8$+KIu6XvrV-ewbb|q<)zLk*<&lo zW_9{pXD%$a)qXX>u(IVn8MTguon#|5t3Q6Ovp=rRn6Cpy!7Tf#V7?ydtRJ^B$bvC< z4#Z2z0r7xk)29Kv0T39{jd=c8VK!PYb?=%508Y}5%M83JhxUzl{_sf9w!?Zn?&W$> zW*$##GSZuKNVnkmBgK(s$48}HIpsKvXvJhx^FUU0N>z1n^%jLy4osPrZ$f(iD6lSu zi_P}3+UR{z9*rw8FK^A^+lpu3Q-{_~#t=g+@r7rIA+&>tsX+cP*Uqa6XGD6pe0Ax zcjWkdC!RkvI_xA$72|R&P7%(#ayakC^8kBm%Eq7?wn7N}jmmPZaXO5}XHV8nr!^1j zn!F$E%ptu8&tD#fqZXvy$Cn|QSoc{QY}e|$H%G&LcphrkkU89HH_z5^#fk<&FEe;1 zZNP;)$l)Ht^T&tby@|VZ3YX@JI)wXk+{8SiD)U^~mBTxZ=b=`g;7zVF3-#t4cDV)5 zNiA5D>&zilk#X+M;gq{er?6<4Ek1R3^~9#{rnDXG$pN|_&qEy#J#N$eHZBd%H7WV> zEXTtGLo(02L-#|cFU-U|z8?#qy+~ggW|b&Jrb4Cgk)@FuDi!;w^&k+-y+F%^`|$r4 zhnSD8c5SiNshx$MEz$q<{y}|w2wO8(- z*-n30)jAs2a?Qnu6~edRQ-=N#q*sPSC};e+a4yzJMkQ~Ea>Abs=VGN~tl!hO_P6FR zK8okUgKIKT?>FAy^qQtsGns?6AJ6YDI_FGSI1xL|O0zCp8xMBdZ}H~9;tWix@VuK+ z(5CSzqj~_T_;KyP7BnF!)vCCaG$1Aog7ir=aJY(PEe$a4gE`!X@O*wamKL3b-P7+e z1xhcG!+4%A3QBlZZq=Zt+6~3G+D)QPxlt{*tGkVbE8LlE)tE1jD+o{EQ^xZMQsLwF zT&*#&J7|XsHRy+zOHh)b+jclFDnmPxlW~pXss;l(ssJ5RfS$ysry^~!*;r^+=Yly= zs_qVU?*WP~evFrnO0ntv!G2Mr(yE(LJ-o%;&(TmlSKHXw+a7&S#|63f*<9}@ z@O);F-f=WSciW$Q1tG7%eJY3JX*@TI;Q-I$p{TT%TcSUGFxzjk*^rIH5iZUwIjNvL zgHM^8&mukM2c^+kh~AlKu#CO#Se(zDJf}MOKGjJHpT5Ub(u>s~)oMnag?88rgiRqi zlT@31+Y!e2d=BFacs}XJi0D+g-KsPfTfh>PU>bu3PcI5lX3xs^Q|f!}^X;n7ci>Z) zUq(9O*(dg+Rt@W5Jl+V@5{!FO-*88BXjlZS3X*hGMe^L4qjTlx)Z9|#OdS@$Oo5H; zg#~o~07RH{2iPmbQhCx?BU{Qds1P6o)I5@aT0rtVfqR2mfGM>gF4)N!+9^O`Xf-^) z%X46e{%(FP)rul}>M#R4odb3T&z{1RGKraDL2|wZus?K5ddeJT3M}e?g~fqk)fFs# z$S&g9SFx{fwU;0zFNWAz7hAZzwqZg)TdRaou+)gk^P%g&8!suC$5nk#mc=nxmiHT6#&w_FV5F-dvop!VC!iYtYRMSSZU^1=-5lX5tv{nwGV#d~7TX!S;o&-@YC?vPnhdd>gBao2^YBs#W2-Dw zbJpp6AklM~^7N}0eicW%rS zEF_yuwq)Cl|3vfjdgW&&QoCesw)tJj7gwZS3i5Py-hn_e@3VL4FyBj!Te2D!;Z;iP z>{%jUU6B;OvrlpDXeMRv>RmRoK1*T7k?DeQ_ni)-O1l<&_P|-KjoX?Oznj|5irdV^ zQu_9ur4zHQl)KGdj;(`IY^;B=F2*?kbJIa$J(M2CJ$ewWe5L`FT0A(!6r&G0e55Q7 zPFB`p2a>|~Tj5v=cad#pm1+FQ&#`-~y_t2i!9>v6$?i5eGNxRehq>KV(9pByx;2|57HxC2mg*m+B^r6N zrLDY6n_Mj?7X>MDb5`WoffKPVWCs2(^Ue06$d0S7$-Y<0Gs&f`+Eir8mshcV zNisI-j6~xiS)0r(ILap5`E@$q(1}QmwTb3J{<~c%F)Ukfkm(PkkA*F6orMhne^6l09t==p*W^(iloX2BgJ(^g9dM_f0L*4fy$@9CAegNs+Nbf;Q8okKgqJ(N2ajUoi zIrI2{QkH*OQ_e4s)BuoM9@#Ags!sZCj%$tFPI!l#fkt=3dxsKFMdcr|?7c~F*n9I5@Y*C~?6v9Z29t5BX84oJ89cPNCShZ5&BB9dLeu+3VJ}UBGpUxP zI2L#sx?G&X$u+olCP8BF%;LwX$)Xg~sJ$`???J^v@h0^&T)J48c#Cv`dYOHakp;s9Qk)Z>iex_Di#u(u`kI!nD?FfU8$ zpS>(c@l(-|E(Nzhg2rxv7t$S&Ah0{&%DDkjhgYiM5M7}BO(3nL6%Ie75cQ+{ zu@z1{0yiMNg!D4fD@Y$e`XJH|AzfH^Jp##AIsv&6$p-R6$RDK@k07uWPas_5fbhe} z_Y}qkvGNfjw(<$0%??B#M*byf1teP73MjNlj2YVi{|NFghLw<@vXxMv-sph(5#;-x zN!dMVMXiWL1zQn?iZ?o__$cxR(4?=Fm60f5E2B`b#X-TxkUx~NaMV^vqJgcDLW9Jx zu}%9|k$=&xl!TkDl!AM!1NX;~f03=2gqp3Gg8DWG>Q5lQxI%^$-KKSGv{p`{hpn7K z&m9hWeiZq`t$-0*L5T(tLqrf2$wz3|j$~T_KZg8E+Db|^?EqG$=}retpG5vp_8xPd z4QE9q{CDN>-|fKvPKniCH!pV75s7swe7?|iTuK9 zZ#o>cHK&-lm4LDpSb*N|0QyOq8*eStyfVY}w}f7m)9%>ZEI2cE}B5g(kRcg%-GPcEJ6jlYk-HideY??tUcOocJxv@gPNx>u=L_d%G6}I9NDz@SasuK=WzkvJ;X5}Y*Y~>exPdo5^4f&pSDLsyuS@C}djj^Ps z+DUXR%k>!~f%q(vZL0ku@<-#SK>T4x1?jxx==_(E?|Y1|s3QYmXGaFX{(=MhFC%}Y zVm0YOd^`G(L3{_2U@0Tn2Ju&rKRTxiV#XXA7626_0Z>J<0r*wqd!A6e{U8cEWf0g9 zAO!3@l7L-6vVr|IkjO{ zhkVb&T|pl@29-V+Itt=Ce9DYiLbA<>-$(w+Ii=7#yAmDAcxyms9f1A-`705#N;Br1 z!f_s-!kA?w8)NVf4Kl2n_kl-wplOjQl@A z`ctGoL;7>1Q+_|%?DoSY+kzj3xE)?e~I)8(g%<} zi1b%T0`{+w1nl1+)kX-m89AUrIQZ$-m*6b=7_&&!ZD1wm;_LM_WbK_!AF@bv4DFMr=flK;znNdEp8 zY2&e_Lt$qodCBJCsx@-kCNA?dLgC;|i&tiE-sI3!u{)IG6_#tn5H?|tJvC)GUL-NX z;_|!f<+VzfRq;LJRCR^C;h1$BX3CvYhZ~9u+c0Kh#%l$~D88Kx)=p;$y#V8oKvFb| zc(*2gW#5geDq;YSrNQu|U{^4_waE+jZdDb)ys><|JgHYKUf#ph+R^kkNFITGq^sV6 z_U^SdZ43B;rZ^IwZO%}9<=w68P9B$ zqzj*@e!G1e&)(hU5d?6&Z>z?d1y+iNc7P}|it!jdQmhBADy-?xQ={i(Q;~|r0}no0 z4Cz55YN2$=d!&ms664{4VjW2pX`W|#*1RP`gJY)mtRo!^794T9A2k+)Ms!8#+CHm< z#WQJS1)dsxXO+9EbXO!W<3s)EGrQ999Hkrkgpl%yn4n)m)ptU4SCQuJXQ4VZ@976y zpRQ=A?;_J>c?e=Y_UlCdk{_K66hIPhyN!=&IT*8}j5Z$KfgxMa_vpA^0Lq|WACR-v zFYkqBuUM69V!QW*wdKP--(lnz;c|~h%d&46uO1>sm>Bf%dNitwf)V|rXMziOHOwxL zX0gh%7yi&ln>e#lM!-$`X5dv-2DDGC&ig#z$C6+i4!%2TCqzQL9p^693h7*kOnN(x zGr;E>NRwCvc(;wnt@d_KcD>ui2no72c{R)JU0BA)j^^G>lZza>y+@Vog)+9-qFRj3 z0B4=$-UDL~K??riEiPK{v^8_YPyt~?Rm9TxZn6711zolf6}}Wj{34n1GV=<3D)Y$< zeY!Sz@yQm2LaqcxXjG|@hDHUg7~>nbEWNg*Ph`|JaWqXmT@f^YY?gjqOyWPX^-D+k zM^e?Rw|{#GyDG%=4ZAv~$m`!?@{*5!@mP8PR@ZNH?W@(PUe4hesP!#f3vGN%weDdU z=^f&APgmO*t3+|2@0Q)~!ss6pcCTtysa7Ur2IN|`s*K!mWc98kYezL@*KF_wmJ4dx zH5YewP5gcbeNC2$kj16N6k2_(ycn)iN{CH|qr;1>daY9H)R(8j`C22at~pq)N8$S8 zVbrXj4Xdk9w3ouwa=(ApQx}@vip$x%dwRco-Vw2Qzh8%TD{W#*zG5fixQOhK~A>X1SH;<;Z(`7dJ2DqzoZJ&vm!9%iy|nc3Iv*5VD(+Ayx|M6e*cI zH!h)h>KuTLI@!h5ehV{!$bEpi2QK@K#;m0mBXc_=)pkuo!~3j!u@%mfZD*BvTgulV znTY5!>+lWBPPYBJwAD%p3AFZc(gpHR?ak@?2srnkwLe|J7#gA#747OE^AD8=NeA=Gx+*(RYgm(F9vuY#$R`1gr458>@B^*R!u%Z>6^l9Zm?Eg2I^2csD(~=@3vq;uF zxTVeUkLr3n{M}2z^xjAqk#kZ`!TU!>lvE%kY1nC9<1vmZKX7f z6+D}oj#gGn{&b3%mQ+!|X(Lv)cv|gy^LD(nFGZ?s&YHb_Z)R!DQc-L57Tu?<<~r5d J>M59@{~t(yA$0%% delta 4027 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�qJUEVUte0RK8$w|K{PUQ$579Zp&< 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 literal 32768 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 diff --git a/backend/API/obj/Debug/net8.0/API.pdb b/backend/API/obj/Debug/net8.0/API.pdb index 03c9e6251c327851cb8ca8e3d27cff9e592f41a8..fe98228cf190a78fd820e8b482d489a47b2dff7b 100644 GIT binary patch delta 5485 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 delta 3896 zcmcIndr(x@8UN1RWgqM!E)PLv*~>eNf-KABQK4*z_$U#zJXYSjyc89YhsMUoE+FQm z4tmCkN;NA@d?aaYOQsV|CSgWxG-;w(Ycpd^*JL`zj#llMW~Mr(-*<8GmcQ*C&hPww zzw@1YzH`pKdk^p5WEZcp!7R^rI)H?&0O#}oxq!T^r>kx4if*I;!2oLVD#}2Oe3bZt zibeCVK7-oWgt}-=M)%5)jg`PQ^0iv1i758W!8`YnI5zy+Dfwb)?e8O{^prR1CsY0xZC~ z3hTpIk6^8X;W7-udS|5u-mWCBg{4laRdC(O@3E*oLXcVwZ&o3XPzS+l)#Ikl0|MNy zp-8%P;H{-v14reWxE6})sHRH=_Z56W{kTj1eg*$V!4n&v#I!2-vB%s)%kQ6PP=nnS z=%9wp3jUsg-T+S{iw$0HUx_ zuh513tSZU&q@5n75M?{+DU)<482C)}bQa4cwIzjmgkwx#ghJF2lXN6Z;hWUcO*DEG zm?mO#`CIB@&l633&5Cx?7JOU+_nwM69=A83_o7aOAlzhz44_E>NI@0Q@1Rb_>;pOt z!_pMmj5@=kFcQ$PD>QY;o}}|8>HJB$5GNlPFdh3BDfBa_ixryMJqsrpB?_I30j0Pi zfg4gn%M_YsP_EE40jEO8qpntH>R{F-UGx3$ig{?;_eTdIGeK^cK=ct^rADu6pesuogR52A?R*6gtJyjyp!=@?+ zaxbDs4=+`@Q0zd|1F!NT--oD&H>!Lx_sM)z=A$zA%iJ$>QP9HXYEjU`K(#~W4w<`T z?vlAz=3bfmWbTu>U(kBsOpPDKXEmVGA_o<55&1<#J^Z!Cf&42(J$zf^LjE119`4k5 z<#?|g?~}Pt<_@(Me6?Q0^g6HF06~aGNUHOr<3}{W2}C1YsB;8q!BbH02r@t{q7i1- z`_LLhG(ab!5j^#vAqO-DIE`q8v3eIeGa6jz7!j%0C_1$bqv(_(k|S!haHv7l8ekBS z94|Trhz7XS;FTReI#!R%k5(|E5u#lV9a@M6s6#ZuYL`!TeCQlOPBEaT7|1#97yTMRb9yNEO~uk4h2(Yo#SqBU0UM{8cAADtvb zBiI`q1}$tyG{8ngx{(i^bB#W9P9c&5Mj8x^26)&AMsj$(p?+l05X!_a@1D5s_~g^W zJAZYkyx?F+=uaF& z6MuZ@K!fSr%UAyKQ~sl|T`b#re#u9l zZDdEtdd9y9Efo63c<9tP{%~qye7{}%Sp31g^J4Ag{LVAg!>{f-c&mSBeSO;2Ri}op zJ#g;$mhTJ8P3V77>|9WK^G?5QY;1Vn)i<|gy?rNR*`*zS%<*@PblzS3*52)08}a&_ zY@1t>THQHz$!^ceZftfpXEtZ&)Juka8GrL8~lI*RmHYumMHQScaoSE6wk|i}}H)go=M#M<9 z5PdxNhezNCC_DD~k?xmLm;7PFipz&@oIc6(qgF;|yioH=r&BKpQ+Pr1lOp}c^gnxKbZ zH^F-Z*9iWDP!UBCOOQwK9KjNT1_J6b_JuC8X={6}N5)3ohe> zE2cm79GtZ{uycim_0DI#H)!zQy+Z%b)ct>&frD3vWaii@kKvLwvj>`7nTv35nryrMR|(f=j)Dw=?t zY}G9}Ssf zL#O>LePFZWXytIdEQ{8*cDcKIy4E-KtnX?`FKg-A(ALz_9ay*uyy;U}xKPELSsQGL z=K1Z(Y&vghZwpUsz@_qFN&FJwdm{XA?XheIf7HG)JmvRjjA2R1!((Ix9WD7QYm?bb zKDR?+sl2lzhQ;t*9g;bXjz2(0u|TbhVUa9;HGtL3{T)(7h8#hMGrFj@#&YXADa5Xq zBiqomTKH;ovd5iuOOc!tok;1T+M0-D{H`+tJ??eH@VlM5sA6l73BOp78A$7a7Hq%ok06oVOKL7v# delta 99 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 diff --git a/backend/API/obj/Debug/net8.0/refint/API.dll b/backend/API/obj/Debug/net8.0/refint/API.dll index d3bf7c3e00ddfb2b2398deeee05c29669584d1f1..dc0a1220076b0b2dcc6cf0dadc3c52609b18cc7a 100644 GIT binary patch literal 16384 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 diff --git a/backend/API/obj/project.assets.json b/backend/API/obj/project.assets.json index ba87dfb..441667d 100644 --- a/backend/API/obj/project.assets.json +++ b/backend/API/obj/project.assets.json @@ -60,6 +60,25 @@ } } }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.3": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, "Microsoft.EntityFrameworkCore/8.0.3": { "type": "package", "dependencies": { @@ -468,6 +487,101 @@ "buildTransitive/net6.0/_._": {} } }, + "Microsoft.IdentityModel.Abstractions/7.5.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.1.2", + "Microsoft.IdentityModel.Tokens": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "7.1.2", + "System.IdentityModel.Tokens.Jwt": "7.1.2" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "7.5.1" + }, + "compile": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, "Microsoft.NETCore.Platforms/5.0.0": { "type": "package", "compile": { @@ -735,6 +849,23 @@ "lib/netcoreapp2.0/_._": {} } }, + "System.IdentityModel.Tokens.Jwt/7.5.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "7.5.1", + "Microsoft.IdentityModel.Tokens": "7.5.1" + }, + "compile": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + }, "System.Memory/4.5.5": { "type": "package", "compile": { @@ -892,8 +1023,10 @@ "Microsoft.Extensions.Configuration": "8.0.0", "Microsoft.Extensions.Configuration.Json": "8.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0", + "Microsoft.IdentityModel.Tokens": "7.5.1", "MongoDB.Driver": "2.24.0", - "Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.2" + "Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.2", + "System.IdentityModel.Tokens.Jwt": "7.5.1" }, "compile": { "bin/placeholder/Infrastructure.dll": {} @@ -1006,6 +1139,21 @@ "lib/netstandard2.1/FluentValidation.xml" ] }, + "Microsoft.AspNetCore.Authentication.JwtBearer/8.0.3": { + "sha512": "VsDy8R6/0ushSpUow7m4lB82ovVBnI1e2AtPo1z22pzYzUjqY9QJvaexzqMkwmI3K1CVdT6MweXiWoqCcHrJbA==", + "type": "package", + "path": "microsoft.aspnetcore.authentication.jwtbearer/8.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll", + "lib/net8.0/Microsoft.AspNetCore.Authentication.JwtBearer.xml", + "microsoft.aspnetcore.authentication.jwtbearer.8.0.3.nupkg.sha512", + "microsoft.aspnetcore.authentication.jwtbearer.nuspec" + ] + }, "Microsoft.EntityFrameworkCore/8.0.3": { "sha512": "QUPQbeq4yCjgIL/6PzkhfwhljXmai3CNOsErWFJ/WJ1Z41V8+At0Bi4PT8/2pX25kPgf83g0CUKIZd0QbeKT4A==", "type": "package", @@ -1885,6 +2033,144 @@ "useSharedDesignerContext.txt" ] }, + "Microsoft.IdentityModel.Abstractions/7.5.1": { + "sha512": "PT16ZFbPIiMsYv07oy3zOjqUOJ7xutGBkJTOX0+IbNyU6+O6X7aIxjq9EaSSRLWbekRgamgtmfg8Xjw6A6Ua9g==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Abstractions.dll", + "lib/net461/Microsoft.IdentityModel.Abstractions.xml", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.7.5.1.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/7.5.1": { + "sha512": "93CGSa8RPdZU8zfvA3nf9NGKUqEnQrE12VzYlMqKh72ddhzusosqLNEUgH/YhFWBLRFOnY1RCgHMV7pR+sAx2w==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.7.5.1.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/7.5.1": { + "sha512": "PnpAQX20BAiDIPYmWUyQSlEaWD8BLXzHpiDGTCT568Cs0ReOeyzNe401LzCeiv6ilug/KefVeV1CeqtCHTo8dw==", + "type": "package", + "path": "microsoft.identitymodel.logging/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Logging.dll", + "lib/net461/Microsoft.IdentityModel.Logging.xml", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.7.5.1.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols/7.1.2": { + "sha512": "SydLwMRFx6EHPWJ+N6+MVaoArN1Htt92b935O3RUWPY1yUF63zEjvd3lBu79eWdZUwedP8TN2I5V9T3nackvIQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols/7.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", + "microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", + "microsoft.identitymodel.protocols.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/7.1.2": { + "sha512": "6lHQoLXhnMQ42mGrfDkzbIOR3rzKM1W1tgTeMPLgLCqwwGw0d96xFi/UiX/fYsu7d6cD5MJiL3+4HuI8VU+sVQ==", + "type": "package", + "path": "microsoft.identitymodel.protocols.openidconnect/7.1.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net461/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", + "microsoft.identitymodel.protocols.openidconnect.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/7.5.1": { + "sha512": "Q3DKpyFViP84IUlTFKH/zIkswIrmSh2Vd/eFDo4wlOHy4DYxoweZEEw4kDEiKt9VCX6o7SddK3HK2xDYyFpexA==", + "type": "package", + "path": "microsoft.identitymodel.tokens/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Microsoft.IdentityModel.Tokens.dll", + "lib/net461/Microsoft.IdentityModel.Tokens.xml", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.7.5.1.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, "Microsoft.NETCore.Platforms/5.0.0": { "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==", "type": "package", @@ -2244,6 +2530,29 @@ "version.txt" ] }, + "System.IdentityModel.Tokens.Jwt/7.5.1": { + "sha512": "UUw+E0R73lZLlXgneYIJQxNs1kfbcxjVzw64JQyiwjqCd4HMpAbjn+xRo86QZT84uHq8/MkqvfH82tgjgPzpuw==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/7.5.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/System.IdentityModel.Tokens.Jwt.dll", + "lib/net461/System.IdentityModel.Tokens.Jwt.xml", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.7.5.1.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, "System.Memory/4.5.5": { "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", "type": "package", @@ -2547,6 +2856,7 @@ "net8.0": [ "Application >= 1.0.0", "Infrastructure >= 1.0.0", + "Microsoft.AspNetCore.Authentication.JwtBearer >= 8.0.3", "Swashbuckle.AspNetCore >= 6.5.0" ] }, @@ -2563,14 +2873,12 @@ "outputPath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\obj\\", "projectStyle": "PackageReference", "configFilePaths": [ - "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "C:\\Users\\Andrei Cerbu\\AppData\\Roaming\\NuGet\\NuGet.Config" ], "originalTargetFrameworks": [ "net8.0" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -2596,6 +2904,10 @@ "net8.0": { "targetAlias": "net8.0", "dependencies": { + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[8.0.3, )" + }, "Swashbuckle.AspNetCore": { "target": "Package", "version": "[6.5.0, )" @@ -2620,7 +2932,7 @@ "privateAssets": "all" } }, - "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json" + "runtimeIdentifierGraphPath": "C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json" } } } diff --git a/backend/API/obj/project.nuget.cache b/backend/API/obj/project.nuget.cache index e3eeb12..476d4dc 100644 --- a/backend/API/obj/project.nuget.cache +++ b/backend/API/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "nH+v0/ZQ0hK0w3knyskezmqQzqvqCYUEVhsdP2suOMyzmw/bxzwSVgn9E+iUU+5wOUyeCGutEG5PTTU1y/XNwA==", + "dgSpecHash": "H5Qo0sozwr+dtjWKUvuynj4zk8X++aQJuu1j0FXoS/GLj1KwbgdyFric4d5FbEvjaO4v4r35BCqsZQZKD1Euvg==", "success": true, "projectFilePath": "C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\API.csproj", "expectedPackageFiles": [ @@ -8,6 +8,7 @@ "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\awssdk.securitytoken\\3.7.100.14\\awssdk.securitytoken.3.7.100.14.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\fluentvalidation\\11.9.0\\fluentvalidation.11.9.0.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.3\\microsoft.aspnetcore.authentication.jwtbearer.8.0.3.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.3\\microsoft.entityframeworkcore.8.0.3.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.3\\microsoft.entityframeworkcore.abstractions.8.0.3.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.3\\microsoft.entityframeworkcore.analyzers.8.0.3.nupkg.sha512", @@ -30,6 +31,12 @@ "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.options\\8.0.0\\microsoft.extensions.options.8.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.abstractions\\7.5.1\\microsoft.identitymodel.abstractions.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\7.5.1\\microsoft.identitymodel.jsonwebtokens.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.logging\\7.5.1\\microsoft.identitymodel.logging.7.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.5.1\\microsoft.identitymodel.tokens.7.5.1.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.openapi\\1.2.3\\microsoft.openapi.1.2.3.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512", @@ -46,6 +53,7 @@ "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\6.5.0\\swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\6.5.0\\swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512", + "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.identitymodel.tokens.jwt\\7.5.1\\system.identitymodel.tokens.jwt.7.5.1.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512", "C:\\Users\\Andrei Cerbu\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512", diff --git a/backend/API/obj/project.packagespec.json b/backend/API/obj/project.packagespec.json index ae8a9ca..66d0374 100644 --- a/backend/API/obj/project.packagespec.json +++ b/backend/API/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\API.csproj","projectName":"API","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\API.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj"},"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.5.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.202/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\API.csproj","projectName":"API","projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\API.csproj","outputPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\API\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Application\\Application.csproj"},"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj":{"projectPath":"C:\\Users\\Andrei Cerbu\\Documents\\FACULTATE\\CC-FinalProj\\backend\\Infrastructure\\Infrastructure.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.3, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.5.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\Andrei Cerbu\\.dotnet\\sdk\\8.0.203/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/backend/API/obj/rider.project.model.nuget.info b/backend/API/obj/rider.project.model.nuget.info index 87e2209..99b6ed8 100644 --- a/backend/API/obj/rider.project.model.nuget.info +++ b/backend/API/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17125194878710486 \ No newline at end of file +17125558124497896 \ No newline at end of file diff --git a/backend/API/obj/rider.project.restore.info b/backend/API/obj/rider.project.restore.info index d47398b..b11d575 100644 --- a/backend/API/obj/rider.project.restore.info +++ b/backend/API/obj/rider.project.restore.info @@ -1 +1 @@ -17125195144135930 \ No newline at end of file +17125685577964752 \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/ChatHandler.cs b/backend/Application/Endpoints/Chats/ChatHandler.cs new file mode 100644 index 0000000..5f5bdbc --- /dev/null +++ b/backend/Application/Endpoints/Chats/ChatHandler.cs @@ -0,0 +1,150 @@ +using Application.Services.Database; +using Application.Services.Database.MongoDB; +using Core.Entities; + +namespace Application.Endpoints.Chats; + +public class ChatHandler +{ + private readonly IChatMongoDbService _chatMongoDbService; + private readonly IPatientRepository _patientRepository; + private readonly IDoctorRepository _doctorRepository; + + public ChatHandler(IChatMongoDbService chatMongoDbService, IPatientRepository patientRepository, + IDoctorRepository doctorRepository) + { + _chatMongoDbService = chatMongoDbService; + _patientRepository = patientRepository; + _doctorRepository = doctorRepository; + } + + public async Task HandleSendMessage(SendMessageDto sendMessageDto) + { + var validation = new SendMessageValidator(); + var validationResult = await validation.ValidateAsync(sendMessageDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + if (!await CheckForUsersExistence(sendMessageDto.Sender, sendMessageDto.Receiver)) + { + return new BaseResponse + { + StatusCode = HttpStatusCodes.BadRequest, + Message = "Users can't be found in the system.", + Data = null + }; + } + + var chatId = ChatIdentifier.GenerateChatId(sendMessageDto.Sender, sendMessageDto.Receiver); + + var criteria = new List<(string, string)>(); + criteria.Add(("_id", chatId)); + + var documents = await _chatMongoDbService.FindAsync(criteria); + if (!documents.Any()) + { + return new BaseResponse() + { + StatusCode = HttpStatusCodes.NotFound, + Message = "Access to medical history not found.", + Data = null + }; + } + + var chat = documents[0].Messages; + chat.Add(new Message(sendMessageDto.Sender, sendMessageDto.Message)); + + var newChat = new Chat(); + newChat.SetId(chatId); + newChat.SetMessages(chat); + + await _chatMongoDbService.ModifyAsync("_id", chatId, newChat); + + return new BaseResponse + { + StatusCode = HttpStatusCodes.NoContent, + Message = null, + Data = null + }; + } + + public async Task HandleGetConversation(GetConversationDto getConversationDto) + { + var validation = new GetConversationValidator(); + var validationResult = await validation.ValidateAsync(getConversationDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + if (!await CheckForUsersExistence(getConversationDto.IdUser1, getConversationDto.IdUser2)) + { + return new BaseResponse + { + StatusCode = HttpStatusCodes.BadRequest, + Message = "Users can't be found in the system.", + Data = null + }; + } + + var chatId = ChatIdentifier.GenerateChatId(getConversationDto.IdUser1, getConversationDto.IdUser2); + + var criteria = new List<(string, string)>(); + criteria.Add(("_id", chatId)); + + Chat? chat = null; + + var documents = await _chatMongoDbService.FindAsync(criteria); + if (!documents.Any()) + { + chat = new Chat(); + chat.SetId(chatId); + + await _chatMongoDbService.AddAsync(chat); + } + else + { + chat = documents[0]; + } + + return new BaseResponse + { + StatusCode = HttpStatusCodes.OK, + Message = "Fetching messages.", + Data = chat + }; + } + + private async Task CheckForUsersExistence(Guid idUser1, Guid idUser2) + { + var firstCheck = await _patientRepository.GetByIdAsync(idUser1) != null && + await _doctorRepository.GetByIdAsync(idUser2) != null; + + var secondCheck = await _patientRepository.GetByIdAsync(idUser2) != null && + await _doctorRepository.GetByIdAsync(idUser1) != null; + + return firstCheck || secondCheck; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/ChatIdentifier.cs b/backend/Application/Endpoints/Chats/ChatIdentifier.cs new file mode 100644 index 0000000..d391338 --- /dev/null +++ b/backend/Application/Endpoints/Chats/ChatIdentifier.cs @@ -0,0 +1,18 @@ +namespace Application.Endpoints.Chats; + +public class ChatIdentifier +{ + public static string GenerateChatId(Guid id1, Guid id2) + { + // Convert GUIDs to strings + string strId1 = id1.ToString(); + string strId2 = id2.ToString(); + + // Sort the GUID strings + string firstId = strId1.CompareTo(strId2) < 0 ? strId1 : strId2; + string secondId = strId1.CompareTo(strId2) < 0 ? strId2 : strId1; + + // Combine them to get a symmetric string + return firstId + "-" + secondId; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/GetConversationDto.cs b/backend/Application/Endpoints/Chats/GetConversationDto.cs new file mode 100644 index 0000000..18044df --- /dev/null +++ b/backend/Application/Endpoints/Chats/GetConversationDto.cs @@ -0,0 +1,7 @@ +namespace Application.Endpoints.Chats; + +public class GetConversationDto +{ + public Guid IdUser1 { get; set; } + public Guid IdUser2 { get; set; } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/GetConversationValidator.cs b/backend/Application/Endpoints/Chats/GetConversationValidator.cs new file mode 100644 index 0000000..2ba673e --- /dev/null +++ b/backend/Application/Endpoints/Chats/GetConversationValidator.cs @@ -0,0 +1,15 @@ +using FluentValidation; + +namespace Application.Endpoints.Chats; + +public class GetConversationValidator : AbstractValidator +{ + public GetConversationValidator() + { + RuleFor(x => x.IdUser1) + .NotEmpty().WithMessage("IdUser1 is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + + RuleFor(x => x.IdUser2) + .NotEmpty().WithMessage("IdUser2 is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/SendMessageDto.cs b/backend/Application/Endpoints/Chats/SendMessageDto.cs new file mode 100644 index 0000000..d644b95 --- /dev/null +++ b/backend/Application/Endpoints/Chats/SendMessageDto.cs @@ -0,0 +1,8 @@ +namespace Application.Endpoints.Chats; + +public class SendMessageDto +{ + public Guid Sender { get; set; } + public Guid Receiver { get; set; } + public string Message { get; set; } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/Chats/SendMessageValidator.cs b/backend/Application/Endpoints/Chats/SendMessageValidator.cs new file mode 100644 index 0000000..fc6aa4d --- /dev/null +++ b/backend/Application/Endpoints/Chats/SendMessageValidator.cs @@ -0,0 +1,18 @@ +using FluentValidation; + +namespace Application.Endpoints.Chats; + +public class SendMessageValidator : AbstractValidator +{ + public SendMessageValidator() + { + RuleFor(x => x.Sender) + .NotEmpty().WithMessage("Sender Id is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + + RuleFor(x => x.Receiver) + .NotEmpty().WithMessage("Receiver Id is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + + RuleFor(x => x.Message) + .NotEmpty().WithMessage("Message is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateDto.cs b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateDto.cs new file mode 100644 index 0000000..5c21ba3 --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateDto.cs @@ -0,0 +1,7 @@ +namespace Application.Endpoints.MedicalHistories.FileManagement; + +public class MedicalHistoryCreateDto +{ + public Guid UserId { get; set; } + public byte[] Content { get; set; } = []; +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateValidation.cs b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateValidation.cs new file mode 100644 index 0000000..30c7eb3 --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryCreateValidation.cs @@ -0,0 +1,28 @@ +using Application.Services.Database; +using FluentValidation; + +namespace Application.Endpoints.MedicalHistories.FileManagement; + +public class MedicalHistoryCreateValidation : AbstractValidator +{ + private readonly IPatientRepository _patientRepository; + + public MedicalHistoryCreateValidation(IPatientRepository patientRepository) + { + _patientRepository = patientRepository; + + RuleFor(x => x.UserId) + .NotEmpty().WithMessage("Patient is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()) + .MustAsync(BeExistingUser).WithMessage("Specified patient doesn't exist.") + .WithErrorCode(HttpStatusCodes.NotFound.ToString()); + + RuleFor(x => x.Content) + .NotEmpty().WithMessage("Description is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()); + } + + private async Task BeExistingUser(Guid userId, CancellationToken cancellationToken) + { + var patient = await _patientRepository.GetByIdAsync(userId); + return patient != null; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryFileManagementHandler.cs b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryFileManagementHandler.cs new file mode 100644 index 0000000..0bd348c --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryFileManagementHandler.cs @@ -0,0 +1,156 @@ +using Application.Services.Database; +using Application.Services.Database.MongoDB; +using Core.Entities; + +namespace Application.Endpoints.MedicalHistories.FileManagement; + +public class MedicalHistoryFileManagementHandler +{ + private readonly IMedicalHistoryRepository _medicalHistoryRepository; + private readonly IMedicalHistoryMongoDbService _medicalHistoryMongoDbService; + private readonly IPatientRepository _patientRepository; + + public MedicalHistoryFileManagementHandler(IMedicalHistoryRepository medicalHistoryRepository, + IPatientRepository patientRepository, IMedicalHistoryMongoDbService medicalHistoryMongoDbService) + { + _medicalHistoryRepository = medicalHistoryRepository; + _patientRepository = patientRepository; + _medicalHistoryMongoDbService = medicalHistoryMongoDbService; + } + + public async Task HandleGetAll() + { + var documents = await _medicalHistoryRepository.GetAllAsync().ConfigureAwait(false); + if (documents.Any()) + return new BaseResponse + { + StatusCode = HttpStatusCodes.OK, + Message = "Retrieved medical histories", + Data = documents.ToList() + }; + + return new BaseResponse + { + StatusCode = HttpStatusCodes.NoContent, + Message = "Medical histories not found", + Data = null + }; + } + + public async Task HandleGet(Guid id) + { + var medicalHistory = await _medicalHistoryRepository.GetByIdAsync(id).ConfigureAwait(false); + if (medicalHistory != null) + return new BaseResponse + { + StatusCode = HttpStatusCodes.OK, + Message = "Medical history successfully retrieved", + Data = medicalHistory + }; + + return new BaseResponse + { + StatusCode = HttpStatusCodes.NotFound, + Message = "Medical history not found in system.", + Data = null + }; + } + + public async Task HandleCreate(MedicalHistoryCreateDto medicalHistoryCreateDto) + { + var validation = new MedicalHistoryCreateValidation(_patientRepository); + var validationResult = await validation.ValidateAsync(medicalHistoryCreateDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + var medicalHistory = new MedicalHistory + { + UserId = medicalHistoryCreateDto.UserId, + Content = medicalHistoryCreateDto.Content + }; + + var medicalHistoryId = medicalHistory.Id; + var newMedicalHistory = new MedicalHistoryAuthorisationModel + { + Id = medicalHistoryId.ToString(), + Authorisation = new List() + }; + + await _medicalHistoryMongoDbService.AddAsync(newMedicalHistory); + await _medicalHistoryRepository.AddAsync(medicalHistory); + + return new BaseResponse + { + StatusCode = HttpStatusCodes.Created, + Message = "Medical history record registered successfully", + Data = medicalHistory + }; + } + + public async Task HandleUpdate(MedicalHistoryUpdateDto updateDto) + { + var validation = new MedicalHistoryUpdateValidation(_medicalHistoryRepository, _patientRepository); + var validationResult = await validation.ValidateAsync(updateDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + var medicalHistoryToUpdate = await _medicalHistoryRepository.GetByIdAsync(updateDto.Id); + medicalHistoryToUpdate.Content = updateDto.Content; + + await _medicalHistoryRepository.UpdateAsync(medicalHistoryToUpdate); + return new BaseResponse + { + StatusCode = HttpStatusCodes.NoContent, + Message = "Medical record updated successfully", + Data = null + }; + } + + public async Task HandleDelete(Guid id) + { + var medicalRecord = await _medicalHistoryRepository.GetByIdAsync(id); + if (medicalRecord == null) + return new BaseResponse + { + StatusCode = HttpStatusCodes.NotFound, + Message = "Medical record is not in system.", + Data = null + }; + + await _medicalHistoryMongoDbService.DeleteAsync("_id", id.ToString()); + + await _medicalHistoryRepository.DeleteAsync(medicalRecord); + + //TODO delete from MongoDB + return new BaseResponse + { + StatusCode = HttpStatusCodes.NoContent, + Message = null, + Data = null + }; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateDto.cs b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateDto.cs new file mode 100644 index 0000000..27b70da --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateDto.cs @@ -0,0 +1,7 @@ +namespace Application.Endpoints.MedicalHistories.FileManagement; + +public class MedicalHistoryUpdateDto +{ + public Guid Id { get; set; } + public byte[] Content { get; set; } = []; +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateValidation.cs b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateValidation.cs new file mode 100644 index 0000000..73a9368 --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/FileManagement/MedicalHistoryUpdateValidation.cs @@ -0,0 +1,30 @@ +using Application.Services.Database; +using FluentValidation; + +namespace Application.Endpoints.MedicalHistories.FileManagement; + +public class MedicalHistoryUpdateValidation : AbstractValidator +{ + private readonly IMedicalHistoryRepository _medicalHistoryRepository; + private readonly IPatientRepository _patientRepository; + + public MedicalHistoryUpdateValidation(IMedicalHistoryRepository medicalHistoryRepository, + IPatientRepository patientRepository) + { + _medicalHistoryRepository = medicalHistoryRepository; + _patientRepository = patientRepository; + + RuleFor(x => x.Id) + .NotEmpty().WithMessage("Id is required") + .MustAsync(BeExistingMedicalHistoryRecord).WithMessage("Medical history record does not exist"); + + RuleFor(x => x.Content) + .NotEmpty().WithMessage("Description is required."); + } + + private async Task BeExistingMedicalHistoryRecord(Guid guid, CancellationToken token) + { + var record = await _medicalHistoryRepository.GetByIdAsync(guid); + return record != null; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationDoctorDto.cs b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationDoctorDto.cs new file mode 100644 index 0000000..e734997 --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationDoctorDto.cs @@ -0,0 +1,7 @@ +namespace Application.Endpoints.MedicalHistories.ManageAuthorization; + +public class MedicalHistoryManageAuthorizationDoctorDto +{ + public Guid MedicalRecordId { get; set; } + public Guid DoctorId { get; set; } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationHandler.cs b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationHandler.cs new file mode 100644 index 0000000..d92e786 --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationHandler.cs @@ -0,0 +1,141 @@ +using Application.Services.Database; +using Application.Services.Database.MongoDB; + +namespace Application.Endpoints.MedicalHistories.ManageAuthorization; + +public class MedicalHistoryManageAuthorizationHandler +{ + private readonly IMedicalHistoryRepository _medicalHistoryRepository; + private readonly IDoctorRepository _doctorRepository; + private readonly IMedicalHistoryMongoDbService _medicalHistoryMongoDbService; + + public MedicalHistoryManageAuthorizationHandler(IMedicalHistoryRepository medicalHistoryRepository, + IMedicalHistoryMongoDbService medicalHistoryMongoDbService, IDoctorRepository doctorRepository) + { + _medicalHistoryRepository = medicalHistoryRepository; + _medicalHistoryMongoDbService = medicalHistoryMongoDbService; + _doctorRepository = doctorRepository; + } + + public async Task HandleGrantDoctorAccess(MedicalHistoryManageAuthorizationDoctorDto infoDto) + { + var validation = new MedicalHistoryManageAuthorizationValidation(_medicalHistoryRepository, _doctorRepository); + var validationResult = await validation.ValidateAsync(infoDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + var criteria = new List<(string, string)>(); + criteria.Add(("_id", infoDto.MedicalRecordId.ToString())); + + var documents = await _medicalHistoryMongoDbService.FindAsync(criteria); + if (!documents.Any()) + { + return new BaseResponse() + { + StatusCode = HttpStatusCodes.NotFound, + Message = "Access to medical history not found.", + Data = null + }; + } + + var authorisations = documents[0].Authorisation; + if (authorisations.Contains(infoDto.ToString())) + { + return new BaseResponse() + { + StatusCode = HttpStatusCodes.Conflict, + Message = "Access to medical history already granted.", + Data = null + }; + } + + authorisations.Add(infoDto.DoctorId.ToString()); + var authorizationModel = new MedicalHistoryAuthorisationModel() + { + Id = infoDto.MedicalRecordId.ToString(), + Authorisation = authorisations + }; + + await _medicalHistoryMongoDbService.ModifyAsync("_id", infoDto.MedicalRecordId.ToString(), authorizationModel); + + return new BaseResponse() + { + StatusCode = HttpStatusCodes.OK, + Message = "Access to medical history granted.", + Data = null + }; + } + + public async Task HandleRevokeDoctorAccess(MedicalHistoryManageAuthorizationDoctorDto infoDto) + { + var validation = new MedicalHistoryManageAuthorizationValidation(_medicalHistoryRepository, _doctorRepository); + var validationResult = await validation.ValidateAsync(infoDto); + + if (!validationResult.IsValid) + { + var firstError = validationResult.Errors.FirstOrDefault(); + var errorCode = int.TryParse(firstError.ErrorCode, out var code) ? code : -1; + var errorMessage = firstError.ErrorMessage; + + return new BaseResponse + { + StatusCode = errorCode, + Message = errorMessage, + Data = null + }; + } + + var criteria = new List<(string, string)>(); + criteria.Add(("_id", infoDto.MedicalRecordId.ToString())); + + var documents = await _medicalHistoryMongoDbService.FindAsync(criteria); + if (!documents.Any()) + { + return new BaseResponse() + { + StatusCode = HttpStatusCodes.NotFound, + Message = "Access to medical history not found.", + Data = null + }; + } + + var authorisations = documents[0].Authorisation; + if (!authorisations.Contains(infoDto.DoctorId.ToString())) + { + return new BaseResponse() + { + StatusCode = HttpStatusCodes.Conflict, + Message = "Access to medical history already revoked.", + Data = null + }; + } + + authorisations.Remove(infoDto.DoctorId.ToString()); + var authorizationModel = new MedicalHistoryAuthorisationModel() + { + Id = infoDto.MedicalRecordId.ToString(), + Authorisation = authorisations + }; + + await _medicalHistoryMongoDbService.ModifyAsync("_id", infoDto.MedicalRecordId.ToString(), authorizationModel); + + return new BaseResponse() + { + StatusCode = HttpStatusCodes.OK, + Message = "Access to medical history granted.", + Data = null + }; + } +} \ No newline at end of file diff --git a/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationValidation.cs b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationValidation.cs new file mode 100644 index 0000000..a4fa93a --- /dev/null +++ b/backend/Application/Endpoints/MedicalHistories/ManageAuthorization/MedicalHistoryManageAuthorizationValidation.cs @@ -0,0 +1,39 @@ +using Application.Services.Database; +using FluentValidation; + +namespace Application.Endpoints.MedicalHistories.ManageAuthorization; + +public class MedicalHistoryManageAuthorizationValidation : AbstractValidator +{ + private readonly IMedicalHistoryRepository _medicalHistoryRepository; + private readonly IDoctorRepository _doctorRepository; + + public MedicalHistoryManageAuthorizationValidation(IMedicalHistoryRepository medicalHistoryRepository, + IDoctorRepository doctorRepository) + { + RuleFor(x => x.MedicalRecordId) + .NotEmpty().WithMessage("Id is required").WithErrorCode(HttpStatusCodes.BadRequest.ToString()) + .MustAsync(BeExistingMedicalHistoryRecord).WithMessage("Medical history record does not exist") + .WithErrorCode(HttpStatusCodes.NotFound.ToString()); + + RuleFor(x => x.DoctorId) + .NotEmpty().WithMessage("Id is required.").WithErrorCode(HttpStatusCodes.BadRequest.ToString()) + .MustAsync(IsDoctorRegistered).WithMessage("Doctor is not registered in system") + .WithErrorCode(HttpStatusCodes.NotFound.ToString()); + + _medicalHistoryRepository = medicalHistoryRepository; + _doctorRepository = doctorRepository; + } + + private async Task BeExistingMedicalHistoryRecord(Guid guid, CancellationToken token) + { + var record = await _medicalHistoryRepository.GetByIdAsync(guid); + return record != null; + } + + private async Task IsDoctorRegistered(Guid id, CancellationToken cancellationToken) + { + var doctor = await _doctorRepository.GetByIdAsync(id); + return doctor != null; + } +} \ No newline at end of file diff --git a/backend/Application/Services/Database/MongoDB/IChatHistoryMongoDbService.cs b/backend/Application/Services/Database/MongoDB/IChatHistoryMongoDbService.cs index d308787..af6f006 100644 --- a/backend/Application/Services/Database/MongoDB/IChatHistoryMongoDbService.cs +++ b/backend/Application/Services/Database/MongoDB/IChatHistoryMongoDbService.cs @@ -1,6 +1,16 @@ -namespace Application.Services.Database.MongoDB; +using MongoDB.Driver; + +namespace Application.Services.Database.MongoDB; public interface IChatMongoDbService { - // Additional methods specific to Chat database + IMongoCollection GetCollection(); + + Task> FindAsync(List<(string FieldName, string Value)> criteria); + + Task AddAsync(T document); + + Task ModifyAsync(string keyField, string keyValue, T document); + + Task DeleteAsync(string keyField, string keyValue); } \ No newline at end of file diff --git a/backend/Application/Services/Database/MongoDB/IMedicalHistoryMongoDbService.cs b/backend/Application/Services/Database/MongoDB/IMedicalHistoryMongoDbService.cs index 6920a99..c406bbd 100644 --- a/backend/Application/Services/Database/MongoDB/IMedicalHistoryMongoDbService.cs +++ b/backend/Application/Services/Database/MongoDB/IMedicalHistoryMongoDbService.cs @@ -5,13 +5,13 @@ namespace Application.Services.Database.MongoDB; public interface IMedicalHistoryMongoDbService { - IMongoCollection GetCollection(); + IMongoCollection GetCollection(); - Task> FindAsync(List<(string FieldName, string Value)> criteria); + Task> FindAsync(List<(string FieldName, string Value)> criteria); - Task AddAsync(MedicalHistoryAuthorisationModel document); + Task AddAsync(T document); - Task ModifyAsync(string keyField, string keyValue, MedicalHistoryAuthorisationModel document); + Task ModifyAsync(string keyField, string keyValue, T document); - Task DeleteAsync(string keyField, string keyValue); + Task DeleteAsync(string keyField, string keyValue); } \ No newline at end of file diff --git a/backend/Application/Services/Jwt/IJwtService.cs b/backend/Application/Services/Jwt/IJwtService.cs new file mode 100644 index 0000000..9750de1 --- /dev/null +++ b/backend/Application/Services/Jwt/IJwtService.cs @@ -0,0 +1,10 @@ +using System.Security.Claims; + +namespace Application.Services.Jwt; + +public interface IJwtService +{ + string GenerateJwtToken(string email); + bool ValidateJwtToken(string token); + string? RefreshToken(string token); +} \ No newline at end of file diff --git a/backend/Application/bin/Debug/net8.0/Application.dll b/backend/Application/bin/Debug/net8.0/Application.dll index 7a8b24f479184672e6f0fe12b416217f6f6159a6..ac54dcf25ed90746701c41b5607b31ab85d9d7f6 100644 GIT binary patch literal 76288 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