thebadspace/app/Http/Controllers/FrontIndexController.php
ro f96707f256 Added Source Repository Class
Created a class to handle source data and methodology, and to offload
actions from service classes to make them easier to manage
2024-02-19 13:30:00 -06:00

95 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Repositories\LocationRepository;
use App\Repositories\SourceRepository;
class FrontIndexController extends Controller
{
protected $location;
protected $source;
public function __construct(
LocationRepository $locationRepository,
SourceRepository $sourceRepository
) {
$this->location = $locationRepository;
$this->source = $sourceRepository;
}
public function start()
{
return view('front.index', [
'count' => count($this->location->getActiveLocations()),
'sources' => count($this->source->getActive()),
'recent' => $this->location->getRecent(),
'latest_date' => $this->location->getRecent()[0]->updated_at->format('Y M d'),
'title' => "The Bad Space"
]);
}
public function indexSearch(Request $request)
{
return view('front.index', [
'count' => count($this->location->getActiveLocations()),
'sources' => count($this->source->getActive()),
'recent' => $this->location->getRecent(),
'results' => $this->location->search($request),
'terms' => $request->index_search,
'latest_date' => $this->location->getRecent()[0]->updated_at->format('Y M d'),
'title' => "Search Results",
]);
}
public function about()
{
$sources = $this->source->getActive();
return view('front.about', [
'title' => "ABOUT",
'sources' => $sources
]);
}
public function appeals()
{
return view('front.appeals', [
'title' => "LOCATION APPEALS",
]);
}
public function location(string $uuid = "1")
{
$location = $this->location->getLocation($uuid);
$sources = $this->source->getActive();
$name = "NO LOCATION FOUND";
if ($location) {
$name = $location->name;
}
return view('front.location', [
'title' => str_replace(".", " ", $name),
'location' => $location,
'actions' => $location->block_count + $location->silence_count,
'sources_count' => count($sources),
'images' => json_decode($location->images),
'updated' => $location->updated_at->format('Y M d'),
]);
}
public function listings(int $pageNum = 1)
{
$listing = $this->location->getPage($pageNum);
return view('front.listing', [
'title' => "Listings",
'sources' => count($this->source->getActive()),
"totalPages" => $listing[1],
"prev" => $listing[2],
"next" => $listing[3],
'pageNum' => $pageNum,
'locations' => $listing[0]
]);
}
}