REFACTORING: move part of content business logic into repository

This commit is contained in:
Michal Kváček
2016-10-18 15:36:26 +02:00
parent eabbf48ee0
commit 662700b4f2
19 changed files with 504 additions and 383 deletions
@@ -1,53 +1,45 @@
<?php
namespace App\Http\Controllers\Admin\Contents;
use App\CMS\Contracts\Repositories\Content as IContent;
use App\CMS\Contracts\Repositories\Module as IModule;
use App\CMS\Enumerations\ContentStatuses;
use App\Http\Controllers\Admin\Controller;
use App\Models\Content\Content;
use App\Models\Module;
use Illuminate\Support\Facades\Input;
class ContentOverview extends Controller
{
/**
* @var Content
* @var IContent
*/
private $content;
/**
* @var IModule
*/
private $module;
public function __construct(Content $content)
public function __construct(IContent $content, IModule $module)
{
parent::__construct();
$this->content = $content;
$this->module = $module;
}
/**
* Overview for all content pages.
*
* @param bool|false $moduleId
* @param null $status
* @param null|int $moduleId
* @param null $status
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getOverview($moduleId = false, $status = null)
public function index($moduleId = null, $status = null)
{
$moduleFilterHandler = false;
$perPage = Input::get('perPage') ? Input::get('perPage') : 20;
$pageHeading = 'admin/contents.overview';
// does user want to filter results using module?
if (is_numeric($moduleId)) {
$module = Module::findOrFail($moduleId);
$moduleFilterHandler = $module->handler;
if (is_callable([$module->handler, 'getOverviewTitle'])) {
$pageHeading = call_user_func([$module->handler, 'getOverviewTitle']);
}
}
// get module settings
$module = $this->module->getOne($moduleId);
$pageHeading = $this->module->getOverviewTitle($module);
// get pages for overview
$pages = $this->content->getOverview($moduleFilterHandler, $status, true, true)
->paginate($perPage);
$handler = $module !== null ? $module->handler : null;
$pages = $this->content->getOverview($handler, [$status]);
// get homepage - for checking if homepage is set and available
$homepage = $this->content->getHomepage();