| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- <?php
- namespace App\Http\Controllers\admin;
- use App\Constants\HttpStatus;
- use App\Http\Controllers\Controller;
- use App\Services\AnnouncementService;
- use App\Support\AnnouncementFailure;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Validation\ValidationException;
- use Throwable;
- class Announcement extends Controller
- {
- public function index(AnnouncementService $service) { return $this->run(fn () => $service->listing(request()->all())); }
- public function options(AnnouncementService $service) { return $this->run(fn () => $service->options()); }
- public function detail(AnnouncementService $service)
- {
- return $this->run(function () use ($service) {
- $params = request()->validate(['id' => ['required', 'integer', 'min:1']]);
- return $service->detail((int) $params['id']);
- });
- }
- public function submit(AnnouncementService $service) { return $this->run(fn () => $service->save(request()->all())); }
- public function status(AnnouncementService $service)
- {
- return $this->run(function () use ($service) {
- $params = request()->validate(['id' => ['required', 'integer', 'min:1'], 'status' => ['required', 'integer', 'in:0,1']]);
- return $service->status((int) $params['id'], (int) $params['status']);
- });
- }
- public function logs(AnnouncementService $service) { return $this->run(fn () => $service->logs(request()->all())); }
- private function run(callable $callback)
- {
- try { return $this->success($callback()); }
- catch (ValidationException $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->validator->errors()->first()); }
- catch (Throwable $e) {
- Log::error('announcement_admin_failed', ['exception' => $e]);
- return $this->error(HttpStatus::CUSTOM_ERROR, AnnouncementFailure::message($e));
- }
- }
- }
|