37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
// lib/projectsService.ts
|
|
import { dolibarrFetch } from "./dolibarrClient";
|
|
import { DolibarrProject, Project, mapDolibarrProject } from "@/types/project";
|
|
|
|
// Obtener proyectos crudos de Dolibarr
|
|
export async function getDolibarrProjects(): Promise<DolibarrProject[]> {
|
|
return dolibarrFetch("projects");
|
|
}
|
|
|
|
// Obtener proyectos mapeados al formato de la UI
|
|
export async function getProjects(): Promise<Project[]> {
|
|
try {
|
|
const dolibarrProjects = await getDolibarrProjects();
|
|
|
|
// Mapear los proyectos de Dolibarr a nuestro formato
|
|
return dolibarrProjects.map(mapDolibarrProject);
|
|
} catch (error) {
|
|
console.error('Error fetching projects from Dolibarr:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
// Obtener un proyecto específico por ID
|
|
export async function getProjectById(id: number): Promise<Project | undefined> {
|
|
try {
|
|
const projects = await getProjects();
|
|
return projects.find(p => p.id === id);
|
|
} catch (error) {
|
|
console.error('Error fetching project by id:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
// Si necesitas obtener un proyecto específico directamente de Dolibarr
|
|
export async function getDolibarrProjectById(id: number): Promise<DolibarrProject> {
|
|
return dolibarrFetch(`projects/${id}`);
|
|
} |