Merge branch 'master' into feature/tab-warning-flag

This commit is contained in:
2026-06-22 11:20:17 +03:30
92 changed files with 6547 additions and 1535 deletions

View File

@@ -1,5 +1,6 @@
import { apiClient } from './client';
import type { AppointmentColumnProvider, AppointmentRecord } from '@/types/appointment';
import { toDateInputValue } from '@/components/appointments/appointmentTime';
export interface CreateAppointmentBody {
patientId: string;
@@ -12,8 +13,11 @@ export interface CreateAppointmentBody {
export type UpdateAppointmentBody = Partial<CreateAppointmentBody>;
export const appointmentsApi = {
columnProviders: async (): Promise<{ success: boolean; data: AppointmentColumnProvider[] }> => {
const response = await apiClient.get('/appointments/column-providers');
columnProviders: async (
scheduleDate?: Date,
): Promise<{ success: boolean; data: AppointmentColumnProvider[] }> => {
const params = scheduleDate ? { date: toDateInputValue(scheduleDate) } : undefined;
const response = await apiClient.get('/appointments/column-providers', { params });
return response.data;
},

View File

@@ -53,6 +53,13 @@ export const authApi = {
await apiClient.post('/auth/logout');
},
updateLanguage: async (
language: string,
): Promise<{ success: boolean; data: { user: { language: string } } }> => {
const response = await apiClient.patch('/auth/profile/language', { language });
return response.data;
},
// Refresh token
refreshToken: async (refreshToken: string): Promise<{ accessToken: string }> => {
const response = await apiClient.post('/auth/refresh', { refreshToken });

View File

@@ -120,4 +120,29 @@ export const staffApi = {
const response = await apiClient.delete(`/staff/members/${membershipId}`);
return response.data;
},
getWorkingHours: async (
membershipId: string,
): Promise<{
success: boolean;
data: {
autoRepeatWeekly: boolean;
blocks: { dayOfWeek: number; startMinute: number; endMinute: number; sortOrder?: number }[];
hasWorkingHours: boolean;
};
}> => {
const response = await apiClient.get(`/staff/members/${membershipId}/working-hours`);
return response.data;
},
upsertWorkingHours: async (
membershipId: string,
body: {
autoRepeatWeekly: boolean;
blocks: { dayOfWeek: number; startMinute: number; endMinute: number; sortOrder?: number }[];
},
): Promise<{ success: boolean; message: string }> => {
const response = await apiClient.put(`/staff/members/${membershipId}/working-hours`, body);
return response.data;
},
};