Files
peakskills/clients/domains/admin-client.ts
Julien Froidefond dc06f00342 refactor: remove legacy evaluation route and update user management interfaces
- Deleted the obsolete evaluations route to streamline the API.
- Added User and UserFormData interfaces to admin-client for better user management.
- Updated useUsersManagement hook to utilize adminClient for fetching and creating users, improving data handling.
- Cleaned up unused imports and code for better maintainability.
2025-08-25 08:30:34 +02:00

109 lines
2.5 KiB
TypeScript

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 getSkills(): Promise<Skill[]> {
return await this.get<Skill[]>(`/admin/skills`);
}
async createSkill(
skillData: Omit<Skill, "id" | "usageCount">
): Promise<Skill> {
return await this.post<Skill>(`/admin/skills`, skillData);
}
async updateSkill(skillData: Skill): Promise<Skill> {
return await this.put<Skill>(`/admin/skills`, skillData);
}
async deleteSkill(skillId: string): Promise<void> {
await this.delete(`/admin/skills?id=${skillId}`);
}
// Teams Management
async getTeams(): Promise<Team[]> {
return await this.get<Team[]>(`/admin/teams`);
}
async createTeam(teamData: Omit<Team, "id" | "memberCount">): Promise<Team> {
return await this.post<Team>(`/admin/teams`, teamData);
}
async updateTeam(teamData: Team): Promise<Team> {
return await this.put<Team>(`/admin/teams`, teamData);
}
async deleteTeam(teamId: string): Promise<void> {
await this.delete(`/admin/teams?id=${teamId}`);
}
async deleteDirection(direction: string): Promise<void> {
await this.delete(
`/admin/teams?direction=${encodeURIComponent(direction)}`
);
}
// Team Members
async getTeamMembers(teamId: string): Promise<TeamMember[]> {
return await this.get<TeamMember[]>(`/admin/teams/${teamId}/members`);
}
async removeTeamMember(teamId: string, memberId: string): Promise<void> {
await this.delete(`/admin/teams/${teamId}/members`, {
memberId,
});
}
// User Management
async getUsers(): Promise<User[]> {
return await this.get<User[]>(`/admin/users`);
}
async createUser(userData: UserFormData): Promise<User> {
return await this.post<User>(`/admin/users`, userData);
}
async deleteUser(userId: string): Promise<void> {
await this.delete(`/admin/users/${userId}`);
}
}