58 lines
1.8 KiB
PHP
58 lines
1.8 KiB
PHP
<?php
|
|
|
|
class HabitController extends Controller {
|
|
public function index() {
|
|
$habit = new Habit();
|
|
$habits = $habit->getHabitsByUser($_SESSION['user']['id']);
|
|
$this->view('habits/index', ['title' => 'Habits', 'habits' => $habits]);
|
|
}
|
|
|
|
public function create() {
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$name = $_POST['name'] ?? '';
|
|
$frequency = $_POST['frequency'] ?? 'Daily';
|
|
$customFrequency = null;
|
|
|
|
if (empty($name)) {
|
|
$this->view('habits/create', ['error' => 'Habit name is required.']);
|
|
return;
|
|
}
|
|
|
|
if ($frequency === 'Custom') {
|
|
$daysOfWeek = $_POST['days_of_week'] ?? [];
|
|
$daysOfMonth = $_POST['days_of_month'] ?? '*';
|
|
$months = $_POST['months'] ?? '*';
|
|
|
|
// Combine into crontab-like string
|
|
$customFrequency = implode(',', $daysOfWeek) . " $daysOfMonth $months";
|
|
}
|
|
|
|
$habit = new Habit();
|
|
$result = $habit->create([
|
|
'name' => $name,
|
|
'frequency' => $frequency,
|
|
'custom_frequency' => $customFrequency,
|
|
'reward_points' => intval($_POST['difficulty'] ?? 1),
|
|
'user_id' => $_SESSION['user']['id'],
|
|
]);
|
|
|
|
if ($result) {
|
|
$this->redirect('/habits');
|
|
} else {
|
|
$this->view('habits/create', ['error' => 'Failed to create habit.']);
|
|
}
|
|
} else {
|
|
$this->view('habits/create', ['title' => 'Create Habit']);
|
|
}
|
|
}
|
|
|
|
|
|
public function edit() {
|
|
// Edit habit (to be implemented later)
|
|
}
|
|
|
|
public function delete() {
|
|
// Delete habit (to be implemented later)
|
|
}
|
|
}
|