ForRo/app/Http/Controllers/FrontIndexController.php
ro 2bcb887d19 simplified pagination, cleaned up front controller
Adding total actions count to location data has made it possible to
simplify backend data queries, so the custom pagination was optimized
and location repositories have been cleaned up.

the front end controller has been cleaned up as well, which has resulted
in the appropriate template being polished up as well.
2024-02-10 11:48:09 -06:00

91 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Source;
use App\Repositories\LocationRepository;
class FrontIndexController extends Controller
{
protected $locationRepository;
public function __construct(LocationRepository $locationRepository)
{
$this->locationRepository = $locationRepository;
}
public function start()
{
return view('front.index', [
'count' => count($this->locationRepository->getActiveLocations()),
'sources' => count(Source::where("active", true)->get()),
'recent' => $this->locationRepository->getRecent(),
'latest_date' => $this->locationRepository->getRecent()[0]->updated_at->format('Y M d'),
'title' => "The Bad Space"
]);
}
public function indexSearch(Request $request)
{
return view('front.index', [
'count' => count($this->locationRepository->getActiveLocations()),
'sources' => count(Source::where("active", true)->get()),
'recent' => $this->locationRepository->getRecent(),
'results' => $this->locationRepository->search($request),
'terms' => $request->index_search,
'latest_date' => $this->locationRepository->getRecent()[0]->updated_at->format('Y M d'),
'title' => "Search Results",
]);
}
public function about()
{
$sources = Source::where("active", true)->get();
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->locationRepository->getLocation($uuid);
$sources = Source::where("active", true)->get();
$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->locationRepository->getPage($pageNum);
return view('front.listing', [
'title' => "Listings",
'sources' => count(Source::where("active", true)->get()),
"totalPages" => $listing[1],
"prev" => $listing[2],
"next" => $listing[3],
'pageNum' => $pageNum,
'locations' => $listing[0]
]);
}
}