Refactor HotelApiController into 6 focused controllers + FurniEditorController Eloquent migration

This commit is contained in:
root
2026-06-04 20:32:15 +02:00
parent 36887244e6
commit f7fe86efeb
9 changed files with 436 additions and 395 deletions
@@ -1,12 +1,16 @@
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Game\Furniture\CatalogItem;
use App\Models\Game\Furniture\CatalogPage;
use App\Models\Game\Furniture\ItemBase;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class FurniEditorController extends Controller
@@ -25,10 +29,10 @@ class FurniEditorController extends Controller
'user_id' => Auth::id(),
]);
return response()->json(['error' => "{$action} mislukt"], 500);
return response()->json(['error' => "{$action} failed"], 500);
}
private function formatItemData(\stdClass $item): array
private function formatItemData(ItemBase $item): array
{
return [
'id' => $item->id,
@@ -59,17 +63,17 @@ class FurniEditorController extends Controller
];
}
private function formatCatalogItemData(\stdClass $r): array
private function formatCatalogItemData(CatalogItem $item): array
{
return [
'id' => $r->id,
'catalogName' => $r->catalog_name,
'costCredits' => $r->cost_credits,
'costPoints' => $r->cost_points,
'pointsType' => $r->points_type,
'pageId' => $r->page_id,
'pageName' => $r->page_id
? DB::table('catalog_pages')->where('id', $r->page_id)->value('caption') ?? ''
'id' => $item->id,
'catalogName' => $item->catalog_name,
'costCredits' => $item->cost_credits,
'costPoints' => $item->cost_points,
'pointsType' => $item->points_type,
'pageId' => $item->page_id,
'pageName' => $item->page_id
? CatalogPage::where('id', $item->page_id)->value('caption') ?? ''
: '',
];
}
@@ -84,7 +88,7 @@ class FurniEditorController extends Controller
$page = max(1, (int) $request->input('page', 1));
$limit = min(50, max(1, (int) $request->input('limit', 20)));
$query = DB::table('items_base');
$query = ItemBase::query();
if ($q !== '' && $q !== '0') {
$query->where(function ($w) use ($q) {
@@ -105,7 +109,7 @@ class FurniEditorController extends Controller
->skip(($page - 1) * $limit)
->take($limit)
->get()
->map(fn ($r) => [
->map(fn (ItemBase $r) => [
'id' => $r->id,
'spriteId' => $r->sprite_id,
'itemName' => $r->item_name,
@@ -128,7 +132,7 @@ class FurniEditorController extends Controller
'page' => $page,
]);
} catch (\Exception $e) {
return $this->handleApiError('Zoeken', $e);
return $this->handleApiError('Search', $e);
}
}
@@ -142,15 +146,14 @@ class FurniEditorController extends Controller
return response()->json(['error' => 'Missing id'], 400);
}
$item = DB::table('items_base')->where('id', $id)->first();
$item = ItemBase::where('id', $id)->first();
if (! $item) {
return response()->json(['error' => 'Item not found'], 404);
}
$catalog = DB::table('catalog_items')
->whereRaw('FIND_IN_SET(?, item_ids)', [$id])
$catalog = CatalogItem::whereRaw('FIND_IN_SET(?, item_ids)', [$id])
->get()
->map(fn ($r) => $this->formatCatalogItemData($r));
->map(fn (CatalogItem $r) => $this->formatCatalogItemData($r));
return response()->json([
'item' => array_merge($this->formatItemData($item), [
@@ -161,7 +164,7 @@ class FurniEditorController extends Controller
'furniDataEntry' => null,
]);
} catch (\Exception $e) {
return $this->handleApiError('Item laden', $e);
return $this->handleApiError('Load item', $e);
}
}
@@ -182,7 +185,7 @@ class FurniEditorController extends Controller
return response()->json(['error' => 'No fields to update'], 400);
}
DB::table('items_base')->where('id', $id)->update($update);
ItemBase::where('id', $id)->update($update);
Log::info('[Audit] FurniEditor update', [
'user_id' => Auth::id(),
@@ -192,7 +195,7 @@ class FurniEditorController extends Controller
return response()->json(['success' => true]);
} catch (\Exception $e) {
return $this->handleApiError('Actie', $e);
return $this->handleApiError('Update', $e);
}
}
@@ -203,7 +206,7 @@ class FurniEditorController extends Controller
try {
$data = $request->json()->all();
$id = DB::table('items_base')->insertGetId($this->buildInsertData($data));
$id = ItemBase::insertGetId($this->buildInsertData($data));
Log::info('[Audit] FurniEditor create', [
'user_id' => Auth::id(),
@@ -212,7 +215,7 @@ class FurniEditorController extends Controller
return response()->json(['id' => $id]);
} catch (\Exception $e) {
return $this->handleApiError('Actie', $e);
return $this->handleApiError('Create', $e);
}
}
@@ -226,7 +229,7 @@ class FurniEditorController extends Controller
return response()->json(['error' => 'Missing id'], 400);
}
DB::table('items_base')->where('id', $id)->delete();
ItemBase::where('id', $id)->delete();
Log::warning('[Audit] FurniEditor delete', [
'user_id' => Auth::id(),
@@ -235,7 +238,7 @@ class FurniEditorController extends Controller
return response()->json(['success' => true]);
} catch (\Exception $e) {
return $this->handleApiError('Actie', $e);
return $this->handleApiError('Delete', $e);
}
}
@@ -244,7 +247,7 @@ class FurniEditorController extends Controller
$this->checkAdmin();
try {
$rows = DB::table('items_base')
$rows = ItemBase::query()
->select('interaction_type')
->groupBy('interaction_type')
->orderBy('interaction_type')
@@ -252,7 +255,7 @@ class FurniEditorController extends Controller
return response()->json(['interactions' => $rows]);
} catch (\Exception $e) {
return $this->handleApiError('Actie', $e);
return $this->handleApiError('Interactions', $e);
}
}
@@ -266,14 +269,14 @@ class FurniEditorController extends Controller
return response()->json(['error' => 'Missing spriteId'], 400);
}
$item = DB::table('items_base')->where('sprite_id', $spriteId)->first();
$item = ItemBase::where('sprite_id', $spriteId)->first();
if (! $item) {
return response()->json(['error' => 'Item not found'], 404);
}
return response()->json(['id' => $item->id]);
} catch (\Exception $e) {
return $this->handleApiError('Actie', $e);
return $this->handleApiError('By sprite', $e);
}
}