62 lines
1.4 KiB
TypeScript
62 lines
1.4 KiB
TypeScript
/**
|
|
* Availability Service
|
|
*
|
|
* Serviço para gerenciamento de disponibilidade dos médicos
|
|
*/
|
|
|
|
import { apiClient } from "../api/client";
|
|
import {
|
|
DoctorAvailability,
|
|
ListAvailabilityFilters,
|
|
CreateAvailabilityInput,
|
|
UpdateAvailabilityInput,
|
|
} from "./types";
|
|
|
|
class AvailabilityService {
|
|
private readonly basePath = "/doctor-availability";
|
|
|
|
/**
|
|
* Lista as disponibilidades dos médicos
|
|
*/
|
|
async list(filters?: ListAvailabilityFilters): Promise<DoctorAvailability[]> {
|
|
const response = await apiClient.get<DoctorAvailability[]>(this.basePath, {
|
|
params: filters,
|
|
});
|
|
return response.data;
|
|
}
|
|
|
|
/**
|
|
* Cria uma nova configuração de disponibilidade
|
|
*/
|
|
async create(data: CreateAvailabilityInput): Promise<DoctorAvailability> {
|
|
const response = await apiClient.post<DoctorAvailability>(
|
|
this.basePath,
|
|
data
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
/**
|
|
* Atualiza uma configuração de disponibilidade
|
|
*/
|
|
async update(
|
|
id: string,
|
|
data: UpdateAvailabilityInput
|
|
): Promise<DoctorAvailability> {
|
|
const response = await apiClient.patch<DoctorAvailability>(
|
|
`${this.basePath}/${id}`,
|
|
data
|
|
);
|
|
return response.data;
|
|
}
|
|
|
|
/**
|
|
* Remove uma configuração de disponibilidade
|
|
*/
|
|
async delete(id: string): Promise<void> {
|
|
await apiClient.delete(`${this.basePath}/${id}`);
|
|
}
|
|
}
|
|
|
|
export const availabilityService = new AvailabilityService();
|