import { api } from "@/lib/api-client"; import { asPaginated, asRecordData } from "@/lib/odoo-api"; import type { Entity, EntityRole, PaginatedResponse, PaginationParams, ApiSuccessResponse } from "@/types"; export interface EntityUser { id: number; name: string; login: string; email: string; active: boolean; } export const entitiesService = { async list(params?: PaginationParams): Promise> { const raw = await api.get("/entities", params as Record); return asPaginated(raw); }, async getById(id: number): Promise { const raw = await api.get(`/entities/${id}`); return asRecordData(raw); }, async create(data: Partial): Promise { const raw = await api.post("/entities", data); return asRecordData(raw); }, async update(id: number, data: Partial): Promise { const raw = await api.patch(`/entities/${id}`, data); return asRecordData(raw); }, async delete(id: number): Promise { return api.delete(`/entities/${id}`); }, async getRoles(entityId: number): Promise { return api.get(`/entities/${entityId}/roles`); }, async createRole(entityId: number, data: Partial): Promise { return api.post(`/entities/${entityId}/roles`, data); }, async updateRolePermissions(roleId: number, permissions: string[]): Promise { return api.patch(`/roles/${roleId}/permissions`, { permissions }); }, async getPermissions(entityId: number): Promise { return api.get(`/permissions`, { entity_id: entityId }); }, async listEntityUsers(entityId: number): Promise { const raw = await api.get(`/entities/${entityId}/users`); const out = asPaginated(raw); return out.items; }, async updateEntityUsers(entityId: number, userIds: number[]): Promise { return api.patch(`/entities/${entityId}/users`, { user_ids: userIds }); }, async listPlatformUsers(params?: PaginationParams): Promise { const raw = await api.get("/users/list", params as Record); const out = asPaginated(raw); return out.items; }, };