44 lines
1.2 KiB
PHP
44 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Services\BundleRenderers\Renderers;
|
|
|
|
use App\Classes\Bundle;
|
|
use Carbon\Carbon;
|
|
|
|
class DossiersListRenderer extends BaseRenderer
|
|
{
|
|
/**
|
|
* Renders a complete HTML view of the bundle
|
|
*/
|
|
public function render()
|
|
{
|
|
$this->prepareRender();
|
|
|
|
return view('article', $this->viewData);
|
|
}
|
|
|
|
/**
|
|
* Return a boolean value indicating if this creator in particular can
|
|
* create bundles for specified section
|
|
*/
|
|
public static function handles(Bundle $bundle): bool
|
|
{
|
|
return $bundle->getPath() === '/dossiers/';
|
|
}
|
|
|
|
protected function collectSubBundles()
|
|
{
|
|
$subBundles = Bundle::findBundles($this->bundle->getDisk(), $this->bundle->getPath());
|
|
|
|
$subBundles = collect($subBundles)
|
|
->filter(fn (Bundle $bundle) => !empty($bundle->metadata()->get('date')) && $bundle->getPath() !== $this->bundle->getPath())
|
|
->sort(function (Bundle $bundleA, Bundle $bundleB) {
|
|
return Carbon::parse($bundleA->metadata()->get('date'))->lt(Carbon::parse($bundleB->metadata()->get('date')));
|
|
})
|
|
->map(fn (Bundle $bundle) => $bundle->getPath())
|
|
->toArray();
|
|
|
|
return $subBundles;
|
|
}
|
|
}
|