params()->query('done', false);
$tasks = TasksModel::getTasks($done);
return parent::view(['content', 'tasks'], [
'user' => $user,
'tasks' => $tasks
]);
}
/**
* Handles URL: /tasks/create
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function create_task($request)
{
$validator = new Asatru\Controller\PostValidator([
'title' => 'required',
'description' => 'required'
]);
if (!$validator->isValid()) {
$errorstr = '';
foreach ($validator->errorMsgs() as $err) {
$errorstr .= $err . '
';
}
FlashMessage::setMsg('error', 'Invalid data given:
' . $errorstr);
return back();
}
$title = $request->params()->query('title', null);
$description = $request->params()->query('description', '');
$due_date = $request->params()->query('due_date', '');
$recurring = (bool)$request->params()->query('recurring', false);
$recurring_time = (int)$request->params()->query('recurring_time', 0);
$timescope = $request->params()->query('timescope', TasksModel::DEFAULT_SCOPE);
$plant_id = (int)$request->params()->query('plant_id', 0);
if (strlen($due_date) === 0) {
$due_date = null;
}
if ((!$due_date) || (!$recurring)) {
$recurring_time = null;
}
$task_id = TasksModel::addTask($title, $description, $due_date, $recurring_time, $timescope);
$redirect_url = '/tasks';
if ($plant_id) {
PlantTasksRefModel::addReference($plant_id, $task_id);
$redirect_url = '/plants/details/' . $plant_id . '#plant-tasks-anchor';
}
FlashMessage::setMsg('success', __('app.task_created_successfully'));
return redirect($redirect_url);
}
/**
* Handles URL: /tasks/edit
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\RedirectHandler
*/
public function edit_task($request)
{
$validator = new Asatru\Controller\PostValidator([
'task' => 'required',
'title' => 'required',
'description' => 'required'
]);
if (!$validator->isValid()) {
$errorstr = '';
foreach ($validator->errorMsgs() as $err) {
$errorstr .= $err . '
';
}
FlashMessage::setMsg('error', 'Invalid data given:
' . $errorstr);
return back();
}
$task = $request->params()->query('task', null);
$title = $request->params()->query('title', null);
$description = $request->params()->query('description', '');
$due_date = $request->params()->query('due_date', '');
$recurring = (bool)$request->params()->query('recurring', false);
$recurring_time = (int)$request->params()->query('recurring_time', 0);
$timescope = $request->params()->query('timescope', TasksModel::DEFAULT_SCOPE);
if ((!$due_date) || (!$recurring)) {
$recurring_time = null;
}
TasksModel::editTask($task, $title, $description, $due_date, $recurring_time, $timescope);
FlashMessage::setMsg('success', __('app.task_edited_successfully'));
return redirect('/tasks#task-anchor-' . $task);
}
/**
* Handles URL: /tasks/toggle
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\JsonHandler
*/
public function toggle_task($request)
{
try {
$task = $request->params()->query('task', null);
TasksModel::toggleTaskStatus($task);
return json([
'code' => 200
]);
} catch (\Exception $e) {
return json([
'code' => 500,
'msg' => $e->getMessage()
]);
}
}
/**
* Handles URL: /tasks/remove
*
* @param Asatru\Controller\ControllerArg $request
* @return Asatru\View\JsonHandler
*/
public function remove_task($request)
{
try {
$task = $request->params()->query('task', null);
TasksModel::removeTask($task);
if (PlantTasksRefModel::hasPlantReference($task)) {
PlantTasksRefModel::removeForTask($task);
}
return json([
'code' => 200
]);
} catch (\Exception $e) {
return json([
'code' => 500,
'msg' => $e->getMessage()
]);
}
}
}