* feat(backoffice): create a boilerplate page for Hackathon dashboard - Create an empty page for Hackathon dashboard - Comment out and hide the existing backoffice sidebar * feat(backoffice): Create a nested/dropdown sidebar list - Create a dropdown sidebar list - Show back the old navigation and group them - Make the sidebar responsive for mobile view * test datatable with mock data * base UI for Hackathon backoffice TODO: - Organize table schema for users, teams, and submissions management - Create API Contract for additional back-end endpoint * feat(hackathon): draft data table column & API Contract * update endpoint * feat(backoffice): update page hackathon user management - update data table component - update filtering & pagination - add modal display to edit and add user - hide notification icon in backoffice wrapper * feat(backoffice): add API contract for hackathon users * feat(backoffice): little adjustment in hackathon users management UI and API contract * feat(backoffice): update hackathon team management page - add modal for manage team, add new team, and view project submission - reorganize the table column and data table * feat(backoffice): add searchable city filter - add component for city filter - apply to user management and team management pages * feat(backoffice): improve hackathon team modal UI and add API contract - Add feature to select city in team detail modal using CityFilterSelect component - Add feature to change team logo and banner - Add API contract documentation for hackathon teams in backoffice * feat(backoffice): authentication middleware, error pages, and 404 page * feat(backoffice): hackathon dashboard integration * feat(backoffice): users page integration - Get users data from API - Set up server-side pagination and match URL params - Hide filter that doesn't exist in back-end * feat(backoffice): teams page integration - Get teams data from API - Hide filter that doesn't exists in back-end - Simplify modal according to the back-end * feat(backoffice): submission page integration - Fetch submissions data from API - Move submission modal to hackathon-submissions page
55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { api } from '../index';
|
|
import type {
|
|
TAdminUsersResponse,
|
|
TAdminTeamsResponse,
|
|
TAdminSubmissionsResponse,
|
|
} from '../../types/admin';
|
|
|
|
const ADMIN_BASE_URL = '/admin';
|
|
|
|
// Admin Users
|
|
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,
|
|
},
|
|
}
|
|
);
|
|
return response.data;
|
|
};
|
|
|
|
// Admin Teams
|
|
export const getAdminTeams = async (params?: {
|
|
page?: number;
|
|
per_page?: number;
|
|
search?: string;
|
|
}) => {
|
|
const response = await api.get<TAdminTeamsResponse>(
|
|
`${ADMIN_BASE_URL}/teams`,
|
|
{ params }
|
|
);
|
|
return response.data;
|
|
};
|
|
|
|
// Admin Submissions
|
|
export const getAdminSubmissions = async (params?: {
|
|
page?: number;
|
|
per_page?: number;
|
|
search?: string;
|
|
status?: string;
|
|
}) => {
|
|
const response = await api.get<TAdminSubmissionsResponse>(
|
|
`${ADMIN_BASE_URL}/submissions`,
|
|
{ params }
|
|
);
|
|
return response.data;
|
|
};
|