import { BaseHttpClient } from "../base/http-client"; export interface Skill { id: string; name: string; description: string; icon: string; categoryId: string; category: string; usageCount: number; } export interface Team { id: string; name: string; direction: string; memberCount: number; } export interface TeamMember { id: string; firstName: string; lastName: string; fullName: string; joinedAt: string; } export interface UserFormData { firstName: string; lastName: string; teamId: string; } export interface User { uuid: string; firstName: string; lastName: string; teamName?: string; hasEvaluations: boolean; } export class AdminClient extends BaseHttpClient { // Skills Management async createSkill( skillData: Omit ): Promise { return await this.post(`/admin/skills`, skillData); } async updateSkill(skillData: Skill): Promise { return await this.put(`/admin/skills`, skillData); } async deleteSkill(skillId: string): Promise { await this.delete(`/admin/skills?id=${skillId}`); } // Teams Management async getTeams(): Promise { return await this.get(`/admin/teams`); } async createTeam(teamData: Omit): Promise { return await this.post(`/admin/teams`, teamData); } async updateTeam(teamData: Team): Promise { return await this.put(`/admin/teams`, teamData); } async deleteTeam(teamId: string): Promise { await this.delete(`/admin/teams?id=${teamId}`); } async deleteDirection(direction: string): Promise { await this.delete( `/admin/teams?direction=${encodeURIComponent(direction)}` ); } // Team Members async getTeamMembers(teamId: string): Promise { return await this.get(`/admin/teams/${teamId}/members`); } async removeTeamMember(teamId: string, memberId: string): Promise { await this.delete(`/admin/teams/${teamId}/members`, { memberId, }); } // User Management async getUsers(): Promise { return await this.get(`/admin/users`); } async createUser(userData: UserFormData): Promise { return await this.post(`/admin/users`, userData); } async deleteUser(userId: string): Promise { await this.delete(`/admin/users/${userId}`); } }