using Application.Endpoints; using Application.Endpoints.MedicalHistories; using Application.Services.Database; using Application.Services.Database.MongoDB; using Microsoft.AspNetCore.Mvc; namespace API.Controllers; [ApiController] [Route("api/[controller]")] public class MedicalHistoryController : ControllerBase { private readonly IMedicalHistoryRepository _medicalHistoryRepository; private readonly IMedicalHistoryMongoDbService _medicalHistoryMongoDbService; private readonly IPatientRepository _patientRepository; public MedicalHistoryController(IMedicalHistoryRepository medicalHistoryRepository, IPatientRepository patientRepository, IMedicalHistoryMongoDbService mongoDbService) { _medicalHistoryRepository = medicalHistoryRepository; _patientRepository = patientRepository; _medicalHistoryMongoDbService = mongoDbService; } [HttpGet("{id}")] public async Task> GetAsync(Guid id) { var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); var response = await handler.HandleGet(id); return StatusCode(response.StatusCode, response); } [HttpGet] public async Task> GetAllDoctors() { var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); var response = await handler.HandleGetAll(); return StatusCode(response.StatusCode, response); } [HttpPost] public async Task> PostAsync(MedicalHistoryCreateDto medicalHistoryCreateDto) { var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); var response = await handler.HandleCreate(medicalHistoryCreateDto); return StatusCode(response.StatusCode, response); } [HttpPut] public async Task> UpdateAsync(MedicalHistoryUpdateDto medicalHistoryUpdateDto) { var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); var response = await handler.HandleUpdate(medicalHistoryUpdateDto).ConfigureAwait(false); return StatusCode(response.StatusCode, response); } [HttpDelete("{id}")] public async Task> DeleteAsync(Guid id) { var handler = new MedicalHistoryHandler(_medicalHistoryRepository, _patientRepository, _medicalHistoryMongoDbService); var response = await handler.HandleDelete(id); return StatusCode(response.StatusCode, response); } /* [HttpPut("grant_access")] public async Task> GrantAccessToMedicalHistory(GrantAccessMedicalHistoryDto) { return NotFound(); } */ }