@stevescruz/task-master
Version:
A command-line todo list that allows you to write your tasks, set priorities, view existing tasks and view the next tasks due.
43 lines (33 loc) • 1.17 kB
JavaScript
const getTimeSince = require('../shared/utils/getTimeSince');
class ShowNextTasksService {
constructor(tasksRepository) {
this.tasksRepository = tasksRepository;
}
async execute() {
const tasks = await this.tasksRepository.list();
const priorities = ['H', 'N', 'L'];
const nextTasksObject = tasks.reduce((acc, task) => {
task.age = getTimeSince(task.timestamp);
priorities.some(priority => {
if (!(priority in acc) && task.priority === priority && task.status !== 'done') {
acc[priority] = task;
return true;
}
});
return acc;
}, {});
const keys = Object.keys(nextTasksObject);
let nextTasksArray = [];
if (keys.length > 0) {
priorities.forEach(priority => {
if (nextTasksObject[priority]) {
nextTasksArray.push(nextTasksObject[priority])
}
})
} else {
nextTasksArray = null;
}
return nextTasksArray;
}
}
module.exports = ShowNextTasksService;