namespace Health.Application.Admin;

public sealed record AdminResult(int Code, object? Data, string? Message = null);
public sealed record AddDoctorCommand(string Phone, string Name, string? Title, string? Department, string? ProfessionalDirection);
public sealed record UpdateDoctorCommand(string? Phone, string? Name, string? Title, string? Department, string? ProfessionalDirection);

public interface IAdminService
{
    Task<AdminResult> ListDoctorsAsync(CancellationToken ct);
    Task<AdminResult> AddDoctorAsync(AddDoctorCommand command, CancellationToken ct);
    Task<AdminResult> UpdateDoctorAsync(Guid id, UpdateDoctorCommand command, CancellationToken ct);
    Task<AdminResult> ToggleDoctorAsync(Guid id, CancellationToken ct);
    Task<AdminResult> DeleteDoctorAsync(Guid id, CancellationToken ct);
    Task<AdminResult> ListPatientsAsync(string? search, int page, int pageSize, CancellationToken ct);
}
