49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
|
|
import { apiClient } from './client';
|
||
|
|
|
||
|
|
export type WorkingHoursPayload = {
|
||
|
|
autoRepeatWeekly: boolean;
|
||
|
|
blocks: { dayOfWeek: number; startMinute: number; endMinute: number; sortOrder?: number }[];
|
||
|
|
};
|
||
|
|
|
||
|
|
export type ParticipationData = {
|
||
|
|
membershipId: string;
|
||
|
|
orgType: 'CLINIC' | 'LAB';
|
||
|
|
participatesInTreatments: boolean;
|
||
|
|
participatesInTasks: boolean;
|
||
|
|
hasWorkingHours: boolean;
|
||
|
|
};
|
||
|
|
|
||
|
|
export type ParticipationUpdateData = ParticipationData & {
|
||
|
|
permissions?: string[];
|
||
|
|
};
|
||
|
|
|
||
|
|
export const accountApi = {
|
||
|
|
getParticipation: async (): Promise<{ success: boolean; data: ParticipationData }> => {
|
||
|
|
const response = await apiClient.get('/auth/profile/participation');
|
||
|
|
return response.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
updateParticipation: async (participate: boolean): Promise<{
|
||
|
|
success: boolean;
|
||
|
|
data: ParticipationUpdateData;
|
||
|
|
}> => {
|
||
|
|
const response = await apiClient.patch('/auth/profile/participation', { participate });
|
||
|
|
return response.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
getMyWorkingHours: async (): Promise<{
|
||
|
|
success: boolean;
|
||
|
|
data: WorkingHoursPayload & { hasWorkingHours: boolean };
|
||
|
|
}> => {
|
||
|
|
const response = await apiClient.get('/auth/profile/working-hours');
|
||
|
|
return response.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
upsertMyWorkingHours: async (
|
||
|
|
payload: WorkingHoursPayload,
|
||
|
|
): Promise<{ success: boolean; message: string }> => {
|
||
|
|
const response = await apiClient.put('/auth/profile/working-hours', payload);
|
||
|
|
return response.data;
|
||
|
|
},
|
||
|
|
};
|