feat: integrate all backend APIs into frontend apps
- Fix API service paths to use /v1/iam/, /v1/dimentorin/, /v1/gacha/, /v1/hackathon/ prefixes - Add roles, permissions, events, testimonials, sessions API services and hooks - Rewrite gacha service with full CRUD + roll/claim endpoints - Replace all mock data in backoffice pages with real API calls (accounts, roles, permissions, gacha-roll, dashboard, sessions, users-dimentorin, feedback-review, settings) - Wire dimentorin mentoring list to useMentorList with search + pagination - Wire dimentorin mentor detail page to useMentorById, pass real data to all sections - Wire appointment modal to useBookSession with controlled schedule inputs - Wire gacha app Spin Now to useExecuteGachaRoll, show credits and real items Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
8d2aaf5188
commit
53ad40f3fd
@@ -5,23 +5,28 @@ import type {
|
||||
TAdminSubmissionsResponse,
|
||||
} from '../../types/admin';
|
||||
|
||||
const ADMIN_BASE_URL = '/admin';
|
||||
|
||||
export const getAdminUsers = async (params?: {
|
||||
page?: number;
|
||||
per_page?: number;
|
||||
search?: string;
|
||||
is_admin?: boolean;
|
||||
}) => {
|
||||
const response = await api.get<TAdminUsersResponse>(
|
||||
`${ADMIN_BASE_URL}/users`,
|
||||
{
|
||||
params: {
|
||||
...params,
|
||||
is_admin: params?.is_admin ?? false,
|
||||
},
|
||||
}
|
||||
);
|
||||
const response = await api.get<TAdminUsersResponse>('/v1/hackathon/admin/users', { params });
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const getAdminUserById = async (userId: string) => {
|
||||
const response = await api.get(`/v1/hackathon/admin/users/${userId}`);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const deleteAdminUser = async (userId: string) => {
|
||||
const response = await api.delete(`/v1/hackathon/admin/users/${userId}`);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const setAdminUser = async (userId: string, is_admin: boolean) => {
|
||||
const response = await api.post(`/v1/hackathon/admin/users/${userId}/set-admin`, { is_admin });
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@@ -30,10 +35,12 @@ export const getAdminTeams = async (params?: {
|
||||
per_page?: number;
|
||||
search?: string;
|
||||
}) => {
|
||||
const response = await api.get<TAdminTeamsResponse>(
|
||||
`${ADMIN_BASE_URL}/teams`,
|
||||
{ params }
|
||||
);
|
||||
const response = await api.get<TAdminTeamsResponse>('/v1/hackathon/admin/teams', { params });
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const deleteAdminTeam = async (teamId: string) => {
|
||||
const response = await api.delete(`/v1/hackathon/admin/teams/${teamId}`);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
@@ -43,9 +50,21 @@ export const getAdminSubmissions = async (params?: {
|
||||
search?: string;
|
||||
status?: string;
|
||||
}) => {
|
||||
const response = await api.get<TAdminSubmissionsResponse>(
|
||||
`${ADMIN_BASE_URL}/submissions`,
|
||||
{ params }
|
||||
);
|
||||
const response = await api.get<TAdminSubmissionsResponse>('/v1/hackathon/admin/submissions', { params });
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const getAdminWinners = async () => {
|
||||
const response = await api.get('/v1/hackathon/admin/winners');
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const setWinner = async (data: { team_id: string; rank: number; prize?: string }) => {
|
||||
const response = await api.post('/v1/hackathon/admin/winners', data);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
export const removeWinner = async (teamId: string) => {
|
||||
const response = await api.delete(`/v1/hackathon/admin/winners/${teamId}`);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user