using adas_core.Domain.Models;
using adas_core.Domain.Models.MongoModels;
using MongoDB.Bson;
using MongoDB.Driver;

namespace adas_core.Application.Services.Interfaces;

public interface IAppointmentService : IApiRequestService
{
    Task<List<PatientAppointment>> FindByLocation(PatientLocation location);
    Task<List<PatientAppointment>> GetByPatient(ObjectId patientId);
    Task<List<PatientAppointment>> GetTodayByPatient(ObjectId patientId, CancellationToken ct = default);
    Task<List<PatientAppointment>> GetTodayByPoc(ObjectId pocId, CancellationToken ct = default);
    Task<IAsyncCursor<PatientAppointment>> FindByPatientIdAsync(ObjectId patientId);
    Task Archive(Patient patient);
    Task ArchiveByPatientId(ObjectId id);
    Task DeleteByPatientId(ObjectId id);
    Task ProcessApiRequest(ApiRequest apiRequest, Patient patient);
    Task UpdateManyObjectId(string nameId, ObjectId id, ObjectId oldId);
}