import { httpPostInterceptor, httpGetInterceptor, httpPutInterceptor, httpDeleteInterceptor, } from "./http-config/http-interceptor-service"; import { MasterModule } from "./menu-modules"; // Types export interface UserLevelModuleAccess { id: number; userLevelId: number; moduleId: number; canAccess: boolean; isActive: boolean; module?: MasterModule; createdAt?: string; updatedAt?: string; } export interface UserLevelModuleAccessCreateRequest { userLevelId: number; moduleId: number; canAccess?: boolean; isActive?: boolean; } export interface UserLevelModuleAccessBatchCreateRequest { userLevelId: number; moduleIds: number[]; canAccess?: boolean; } export interface UserLevelModuleAccessUpdateRequest { userLevelId?: number; moduleId?: number; canAccess?: boolean; isActive?: boolean; } export interface CheckAccessRequest { userLevelId: number; moduleId: number; } export interface CheckAccessResponse { hasAccess: boolean; } // API Functions export async function getUserLevelModuleAccesses(params?: { userLevelId?: number; moduleId?: number; canAccess?: boolean; page?: number; limit?: number; }) { const queryParams = new URLSearchParams(); if (params?.userLevelId) queryParams.append("user_level_id", params.userLevelId.toString()); if (params?.moduleId) queryParams.append("module_id", params.moduleId.toString()); if (params?.canAccess !== undefined) queryParams.append("can_access", params.canAccess.toString()); if (params?.page) queryParams.append("page", params.page.toString()); if (params?.limit) queryParams.append("limit", params.limit.toString()); const url = `user-level-module-accesses${queryParams.toString() ? `?${queryParams.toString()}` : ""}`; return httpGetInterceptor(url); } export async function getUserLevelModuleAccessById(id: number) { const url = `user-level-module-accesses/${id}`; return httpGetInterceptor(url); } export async function getUserLevelModuleAccessesByUserLevelId(userLevelId: number) { const url = `user-level-module-accesses/user-level/${userLevelId}`; return httpGetInterceptor(url); } export async function getUserLevelModuleAccessesByModuleId(moduleId: number) { const url = `user-level-module-accesses/module/${moduleId}`; return httpGetInterceptor(url); } export async function createUserLevelModuleAccess(data: UserLevelModuleAccessCreateRequest) { const url = "user-level-module-accesses"; return httpPostInterceptor(url, data); } export async function createUserLevelModuleAccessesBatch(data: UserLevelModuleAccessBatchCreateRequest) { const url = "user-level-module-accesses/batch"; return httpPostInterceptor(url, data); } export async function updateUserLevelModuleAccess(id: number, data: UserLevelModuleAccessUpdateRequest) { const url = `user-level-module-accesses/${id}`; return httpPutInterceptor(url, data); } export async function deleteUserLevelModuleAccess(id: number) { const url = `user-level-module-accesses/${id}`; return httpDeleteInterceptor(url); } export async function checkAccess(data: CheckAccessRequest) { const url = "user-level-module-accesses/check-access"; return httpPostInterceptor(url, data); }