Yaltopia-Ticket-Admin/src/services/system-member.service.ts
“kirukib” 23ab82a726 Add staff roles, subscription txns, system users, issues, FAQ, broadcast
- Introduce SUPER_ADMIN, ADMIN, CUSTOMER_SUPPORT with admin-roles helpers and useAdminRole hook
- New pages: subscription transactions, system members, issues, FAQ & support, notification broadcast
- Services and API paths for admin subscription-transactions, system-members, issues, faq, broadcast
- Nav and quick search filtered by role; login accepts all panel roles

Made-with: Cursor
2026-04-15 10:45:10 +03:00

66 lines
1.4 KiB
TypeScript

import apiClient from "./api/client"
/** Internal staff that operate the admin / support panel */
export interface SystemMember {
id: string
email: string
firstName: string
lastName: string
/** Panel role: SUPER_ADMIN | ADMIN | CUSTOMER_SUPPORT */
role: string
isActive: boolean
createdAt: string
updatedAt?: string
}
export interface CreateSystemMemberPayload {
email: string
firstName: string
lastName: string
password: string
role: string
}
export interface PaginatedSystemMembers {
data: SystemMember[]
total: number
page: number
limit: number
totalPages: number
}
class SystemMemberService {
async list(params?: {
page?: number
limit?: number
search?: string
}): Promise<PaginatedSystemMembers> {
const response = await apiClient.get<PaginatedSystemMembers>(
"/admin/system-members",
{ params },
)
return response.data
}
async create(data: CreateSystemMemberPayload): Promise<SystemMember> {
const response = await apiClient.post<SystemMember>(
"/admin/system-members",
data,
)
return response.data
}
async update(
id: string,
data: Partial<Pick<SystemMember, "firstName" | "lastName" | "role" | "isActive">>,
): Promise<SystemMember> {
const response = await apiClient.patch<SystemMember>(
`/admin/system-members/${id}`,
data,
)
return response.data
}
}
export const systemMemberService = new SystemMemberService()