first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

View File

@@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use App\Actions\People\DeletePeople;
use App\Actions\People\GetPersonCredits;
use App\Actions\People\PaginatePeople;
use App\Jobs\IncrementModelViews;
use App\Models\Person;
use Common\Core\BaseController;
use Illuminate\Support\Arr;
class PersonController extends BaseController
{
public function index()
{
$this->authorize('index', Person::class);
$pagination = (new PaginatePeople())->execute(request()->all());
return $this->success(['pagination' => $pagination]);
}
public function show($id, $name = null)
{
$this->authorize('show', Person::class);
$loader = request('loader', 'personPage');
if (is_numeric($id) || ctype_digit($id)) {
$person = Person::findOrFail($id);
} else {
$person = Person::firstOrCreateFromEncodedTmdbId($id);
}
if ($loader === 'personPage' && requestIsFromFrontend()) {
$person->maybeUpdateFromExternal();
}
$data = array_merge(
['person' => $person, 'loader' => $loader],
app(GetPersonCredits::class)->execute($person),
);
(new IncrementModelViews())->execute($data['person']);
return $this->renderClientOrApi([
'data' => $data,
'pageName' => 'person-page',
]);
}
public function store()
{
$this->authorize('store', Person::class);
$data = request()->all();
$data['popularity'] = Arr::get($data, 'popularity') ?: 50;
$person = Person::create($data);
return $this->success(['person' => $person]);
}
public function update($id)
{
$this->authorize('update', Person::class);
$person = Person::findOrFail($id);
$data = request()->all();
$data['popularity'] = Arr::get($data, 'popularity') ?: 50;
$person->fill($data)->save();
return $this->success(['person' => $person]);
}
public function destroy(string $ids)
{
$ids = explode(',', $ids);
$this->authorize('destroy', Person::class);
app(DeletePeople::class)->execute($ids);
return $this->success();
}
}