UNPKG

@aot-tech/clockify-mcp-server

Version:

MCP Server for Clockify time tracking integration with AI tools

70 lines (69 loc) 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reportsService = void 0; const api_1 = require("../config/api"); function ReportsService() { async function getDetailedReport(params) { const reportsApi = (0, api_1.getReportsApi)(); const body = { dateRangeStart: params.dateRangeStart?.toISOString(), dateRangeEnd: params.dateRangeEnd?.toISOString(), users: params.users && params.users.length > 0 ? { ids: params.users, contains: "CONTAINS", status: "ALL" } : undefined, projects: params.projects && params.projects.length > 0 ? { ids: params.projects, contains: "CONTAINS", status: "ALL" } : undefined, clients: params.clients && params.clients.length > 0 ? { ids: params.clients, contains: "CONTAINS", status: "ALL" } : undefined, tags: params.tags, userGroupIds: params.userGroupIds, includeTimeEntries: params.includeTimeEntries || true, rounding: params.rounding || false, exportType: params.exportType || "JSON", detailedFilter: { options: { totals: "CALCULATE", }, page: 1, pageSize: 100, sortColumn: "ID", }, }; const cleanBody = Object.fromEntries(Object.entries(body).filter(([key, value]) => value !== undefined || key === "detailedFilter")); const response = await reportsApi .post(`workspaces/${params.workspaceId}/reports/detailed`, cleanBody) .catch((e) => { console.log("Reports API error:", e); throw e; }); return response; } async function getSummaryReport(params) { const reportsApi = (0, api_1.getReportsApi)(); const body = { summaryFilter: { groups: params.groups || ["USER", "TIMEENTRY"] }, dateRangeStart: params.dateRangeStart?.toISOString(), dateRangeEnd: params.dateRangeEnd?.toISOString(), projects: params.projects && params.projects.length > 0 ? { ids: params.projects, contains: "CONTAINS", status: "ALL" } : undefined, users: params.users && params.users.length > 0 ? { ids: params.users, contains: "CONTAINS", status: "ALL" } : undefined, }; const cleanBody = Object.fromEntries(Object.entries(body).filter(([key, value]) => value !== undefined)); const response = await reportsApi .post(`workspaces/${params.workspaceId}/reports/summary`, cleanBody) .catch((e) => { console.log("Summary Reports API error:", e); throw e; }); return response; } return { getDetailedReport, getSummaryReport }; } exports.reportsService = ReportsService();