Files
grocy/controllers/HabitsController.php

71 lines
2.2 KiB
PHP
Raw Normal View History

2018-04-11 19:49:35 +02:00
<?php
namespace Grocy\Controllers;
2018-04-12 21:13:38 +02:00
use \Grocy\Services\HabitsService;
2018-04-11 19:49:35 +02:00
class HabitsController extends BaseController
{
public function __construct(\Slim\Container $container)
{
parent::__construct($container);
$this->HabitsService = new HabitsService();
}
protected $HabitsService;
2018-04-12 21:13:38 +02:00
public function Overview(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
2018-04-11 19:49:35 +02:00
{
2018-04-12 21:13:38 +02:00
$nextHabitTimes = array();
foreach($this->Database->habits() as $habit)
{
$nextHabitTimes[$habit->id] = $this->HabitsService->GetNextHabitTime($habit->id);
}
$nextXDays = 5;
$countDueNextXDays = count(FindAllItemsInArrayByValue($nextHabitTimes, date('Y-m-d', strtotime("+$nextXDays days")), '<'));
$countOverdue = count(FindAllItemsInArrayByValue($nextHabitTimes, date('Y-m-d', strtotime('-1 days')), '<'));
2018-04-11 19:49:35 +02:00
return $this->AppContainer->view->render($response, 'habitsoverview', [
2018-07-08 13:59:42 +02:00
'habits' => $this->Database->habits()->orderBy('name'),
2018-04-11 19:49:35 +02:00
'currentHabits' => $this->HabitsService->GetCurrentHabits(),
'nextHabitTimes' => $nextHabitTimes,
'nextXDays' => $nextXDays,
'countDueNextXDays' => $countDueNextXDays - $countOverdue,
'countOverdue' => $countOverdue
2018-04-11 19:49:35 +02:00
]);
}
2018-04-12 21:13:38 +02:00
public function TrackHabitExecution(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
2018-04-11 19:49:35 +02:00
{
return $this->AppContainer->view->render($response, 'habittracking', [
2018-07-08 13:59:42 +02:00
'habits' => $this->Database->habits()->orderBy('name')
2018-04-11 19:49:35 +02:00
]);
}
2018-04-12 21:13:38 +02:00
public function HabitsList(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
2018-04-11 19:49:35 +02:00
{
return $this->AppContainer->view->render($response, 'habits', [
2018-07-08 13:59:42 +02:00
'habits' => $this->Database->habits()->orderBy('name')
2018-04-11 19:49:35 +02:00
]);
}
2018-04-12 21:13:38 +02:00
public function HabitEditForm(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
2018-04-11 19:49:35 +02:00
{
if ($args['habitId'] == 'new')
{
return $this->AppContainer->view->render($response, 'habitform', [
2018-04-12 21:13:38 +02:00
'periodTypes' => GetClassConstants('\Grocy\Services\HabitsService'),
2018-04-11 19:49:35 +02:00
'mode' => 'create'
]);
}
else
{
return $this->AppContainer->view->render($response, 'habitform', [
'habit' => $this->Database->habits($args['habitId']),
2018-04-12 21:13:38 +02:00
'periodTypes' => GetClassConstants('\Grocy\Services\HabitsService'),
2018-04-11 19:49:35 +02:00
'mode' => 'edit'
]);
}
}
}