import { apiService } from "@/services/api.service"; import { helperService } from "@/services/helper.service"; /** * A collection of functions to retreive and send all user-specific data. */ export const jugglService = { /** * Fetches the user from the API. * * @returns A promise */ getUser() { return apiService.post("/getUser.php").then(r => { return { data: r.data, msg: "" }; }); }, getProjects() { return apiService.post("/getProjects.php").then(r => { return { data: r.data, msg: "" }; }); }, getRecord(recordId) { return apiService .post("/getRecord.php", { record_id: recordId }) .then(r => { return { data: processRecords(r.data), msg: "" }; }); }, removeRecord(recordId) { return apiService .post("/removeRecord.php", { record_id: recordId }) .then(r => { return { data: r.data, msg: "" }; }); }, getRecords(options = {}) { var payload = {}; if (options.limit !== undefined && options.limit > 0) { payload.limit = options.limit; } if (options.finished !== undefined) { payload.finished = options.finished; } return apiService.post("/getRecords.php", payload).then(r => { return { data: processRecords(r.data), msg: "" }; }); }, updateRecord(record) { var payload = { record: record }; return apiService.post("/updateRecord.php", payload).then(r => { return { data: processRecords(r.data), msg: "" }; }); }, getRunningRecords() { return apiService.post("/getRunningRecords.php").then(r => { return { data: processRecords(r.data), msg: "" }; }); }, addProject(name, startDate = null) { if (startDate == null) startDate = new Date().toISOString(); return apiService .post("/addProject.php", { name: name, start_date: startDate }) .then(r => { return { data: r.data, msg: "" }; }); }, startRecord(projectId, startTime = null) { if (startTime == null) startTime = new Date(); return apiService .post("/startRecord.php", { project_id: projectId, start_time: helperService.dateToString(startTime) }) .then(r => { return { data: processRecords(r.data), msg: "" }; }); }, endRecord(recordId, endTime = null) { if (endTime == null) endTime = new Date(); return apiService .post("/endRecord.php", { record_id: recordId, end_time: helperService.dateToString(endTime) }) .then(r => { return { data: processRecords(r.data), msg: "" }; }); } }; function processRecords(data) { Object.values(data.records).forEach(rec => { rec.running = rec.end_time === null; if (rec.running) { rec.duration = (new Date().getTime() - new Date(rec.start_time).getTime()) / 1000; } }); return data; }