@aot-tech/clockify-mcp-server
Version:
MCP Server for Clockify time tracking integration with AI tools
70 lines (69 loc) • 3.03 kB
JavaScript
;
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();