-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
121 lines (95 loc) · 3.47 KB
/
main.js
File metadata and controls
121 lines (95 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const { app, BrowserWindow, ipcMain, Notification } = require('electron');
const path = require('path');
const db = require('./db/database'); // Importamos nuestra capa de base de datos
let mainWindow;
function createWindow() {
mainWindow = new BrowserWindow({
width: 1800,
height: 1169,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
preload: path.join(__dirname, 'preload.js'),
},
});
mainWindow.loadFile('index.html');
// Abre DevTools en desarrollo para depuración
// mainWindow.webContents.openDevTools();
}
app.whenReady().then(() => {
createWindow();
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit();
});
// Comunicación IPC para gestionar proyectos y tareas usando la capa de base de datos
ipcMain.handle('get-projects', async () => {
return db.getProjects();
});
ipcMain.handle('get-project', async (event, projectId) => {
return db.getProjectById(projectId);
});
ipcMain.handle('add-project', async (event, project) => {
return db.addProject(project);
});
ipcMain.handle('update-project', async (event, updatedProject) => {
return db.updateProject(updatedProject);
});
ipcMain.handle('delete-project', async (event, projectId) => {
return db.deleteProject(projectId);
});
ipcMain.handle('add-task', async (event, { projectId, task }) => {
return db.addTask(projectId, task);
});
ipcMain.handle('update-task', async (event, { projectId, taskId, updatedTask }) => {
return db.updateTask(projectId, taskId, updatedTask);
});
ipcMain.handle('delete-task', async (event, { projectId, taskId }) => {
return db.deleteTask(projectId, taskId);
});
// Manejadores para exportar e importar proyectos
ipcMain.handle('export-projects', async () => {
return db.getProjects();
});
ipcMain.handle('import-projects', async (event, importedProjects) => {
return db.importData(importedProjects);
});
// Manejador para obtener estadísticas del proyecto
ipcMain.handle('get-project-stats', async (event, projectId) => {
return db.getProjectStats(projectId);
});
// Manejador para buscar tareas
ipcMain.handle('search-tasks', async (event, searchTerm) => {
return db.searchTasks(searchTerm);
});
// Manejador para obtener tareas próximas a vencer
ipcMain.handle('get-upcoming-tasks', async (event, daysThreshold) => {
return db.getUpcomingTasks(daysThreshold);
});
// Manejador para añadir subtareas
ipcMain.handle('add-subtask', async (event, { projectId, taskId, subtask }) => {
return db.addSubtask(projectId, taskId, subtask);
});
// Manejador para actualizar subtareas
ipcMain.handle('update-subtask', async (event, { projectId, taskId, subtaskId, updatedSubtask }) => {
return db.updateSubtask(projectId, taskId, subtaskId, updatedSubtask);
});
// Manejador para eliminar subtareas
ipcMain.handle('delete-subtask', async (event, { projectId, taskId, subtaskId }) => {
return db.deleteSubtask(projectId, taskId, subtaskId);
});
// Función para verificar tareas por vencer
function checkDueTasks() {
const upcomingTasks = db.getUpcomingTasks(1); // Tareas que vencen en 1 día
upcomingTasks.forEach(task => {
new Notification({
title: '¡Tarea por vencer!',
body: `La tarea "${task.taskTitle}" del proyecto "${task.projectName}" vence mañana.`,
}).show();
});
}
// Verificar tareas por vencer cada 24 horas
setInterval(checkDueTasks, 24 * 60 * 60 * 1000);