116 lines
3.8 KiB
PHP
116 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* AJAX API voor Dagplanning & Taken
|
|
*/
|
|
|
|
require_once __DIR__ . '/../includes/auth.php';
|
|
$user = require_auth();
|
|
$db = get_db_connection();
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
$action = $_GET['action'] ?? ($_POST['action'] ?? '');
|
|
$today = date('Y-m-d');
|
|
|
|
try {
|
|
// 1. Dagdoel of notities opslaan
|
|
if ($action === 'save_goal') {
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$date = $data['date'] ?? $today;
|
|
$focusGoal = $data['focus_goal'] ?? '';
|
|
$notes = $data['notes'] ?? '';
|
|
|
|
$stmt = $db->prepare("
|
|
INSERT INTO daily_plans (user_id, plan_date, focus_goal, notes)
|
|
VALUES (?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE focus_goal = VALUES(focus_goal), notes = VALUES(notes)
|
|
");
|
|
$stmt->execute([$user['id'], $date, $focusGoal, $notes]);
|
|
|
|
echo json_encode(['success' => true]);
|
|
exit;
|
|
}
|
|
|
|
// 2. Taak toevoegen
|
|
if ($action === 'add_task') {
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$title = trim($data['title'] ?? '');
|
|
$priority = in_array($data['priority'] ?? '', ['P1', 'P2', 'P3']) ? $data['priority'] : 'P2';
|
|
$timeBlockStart = $data['time_block_start'] ?? null;
|
|
$date = $data['date'] ?? $today;
|
|
|
|
if (empty($title)) {
|
|
echo json_encode(['error' => 'Titel is verplicht']);
|
|
exit;
|
|
}
|
|
|
|
// Haal of maak daily plan op
|
|
$stmtPlan = $db->prepare("
|
|
INSERT INTO daily_plans (user_id, plan_date)
|
|
VALUES (?, ?)
|
|
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
|
|
");
|
|
$stmtPlan->execute([$user['id'], $date]);
|
|
$planId = $db->lastInsertId();
|
|
|
|
$source = !empty($data['source']) ? substr(trim($data['source']), 0, 50) : 'FOCIZ';
|
|
$externalId = !empty($data['external_id']) ? substr(trim($data['external_id']), 0, 100) : null;
|
|
$externalUrl = !empty($data['external_url']) ? trim($data['external_url']) : null;
|
|
|
|
$stmt = $db->prepare("
|
|
INSERT INTO tasks (user_id, daily_plan_id, title, priority, time_block_start, status, source, external_id, external_url)
|
|
VALUES (?, ?, ?, ?, ?, 'TODO', ?, ?, ?)
|
|
");
|
|
$stmt->execute([$user['id'], $planId, $title, $priority, $timeBlockStart, $source, $externalId, $externalUrl]);
|
|
$taskId = (int)$db->lastInsertId();
|
|
|
|
echo json_encode([
|
|
'success' => true,
|
|
'task' => [
|
|
'id' => $taskId,
|
|
'title' => $title,
|
|
'priority' => $priority,
|
|
'time_block_start' => $timeBlockStart,
|
|
'is_completed' => 0,
|
|
'status' => 'TODO'
|
|
]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// 3. Taak status toggelen (voltooid / open)
|
|
if ($action === 'toggle_task') {
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$taskId = (int)($data['task_id'] ?? 0);
|
|
$isCompleted = !empty($data['is_completed']) ? 1 : 0;
|
|
$status = $isCompleted ? 'DONE' : 'TODO';
|
|
|
|
$stmt = $db->prepare("
|
|
UPDATE tasks SET is_completed = ?, status = ?
|
|
WHERE id = ? AND user_id = ?
|
|
");
|
|
$stmt->execute([$isCompleted, $status, $taskId, $user['id']]);
|
|
|
|
echo json_encode(['success' => true]);
|
|
exit;
|
|
}
|
|
|
|
// 4. Taak verwijderen
|
|
if ($action === 'delete_task') {
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$taskId = (int)($data['task_id'] ?? 0);
|
|
|
|
$stmt = $db->prepare("DELETE FROM tasks WHERE id = ? AND user_id = ?");
|
|
$stmt->execute([$taskId, $user['id']]);
|
|
|
|
echo json_encode(['success' => true]);
|
|
exit;
|
|
}
|
|
|
|
echo json_encode(['error' => 'Onbekende actie']);
|
|
} catch (Exception $e) {
|
|
http_response_code(500);
|
|
echo json_encode(['error' => $e->getMessage()]);
|
|
}
|
|
|