using adas_core.Application.Repositories.Interfaces;
using adas_core.Application.Services.Interfaces;
using adas_core.Domain.Models;
using MongoDB.Bson;

namespace adas_core.Application.Services;

/// <summary>
/// Implements <see cref="IArchivedPatientTreatmentService"/> and provides archived patient treatment operations using an injected <see cref="ITreatmentArchiveRepository"/>.
/// </summary>
/// <!-- aidoc:v1 sig=e336127 -->
public class ArchivedPatientTreatmentService(ITreatmentArchiveRepository archivedPatientTreatmentService)
    : IArchivedPatientTreatmentService
{
    /// <summary>
    /// Retrieves all archived patient treatments associated with the specified patient by delegating to the archived patient treatment service.
    /// </summary>
    /// <param name="patientId">The unique identifier of the patient whose archived treatments are being retrieved.</param>
    /// <returns>A task that represents the asynchronous operation, containing a list of <see cref="PatientTreatment"/> records for the specified patient.</returns>
    /// <!-- aidoc:v1 sig=d06a1c8 body=542ec4b -->
    public async Task<List<PatientTreatment>> FindAllPatientTreatmentsByPatient(ObjectId patientId)
    {
        return await archivedPatientTreatmentService.FindAllFromPatient(patientId);
    }
}