juggl/src/services/juggl.service.js

153 lines
3.1 KiB
JavaScript

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;
}