Initial commit

This commit is contained in:
2025-10-11 17:02:49 +02:00
commit 92056f073f
243 changed files with 27536 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\Footer;
class FooterController extends Controller
{
public function index(): JsonResponse
{
$footer = Footer::first();
$links = $footer ? $footer->links : [];
return response()->json([
'status' => 'success',
'data' => $links
]);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Homepage;
use Illuminate\Http\JsonResponse;
class HomepageController extends Controller
{
public function index(): JsonResponse
{
$data = Homepage::first();
return response()->json([
'status' => 'success',
'data' => [
'photo' => $data->photo ? '/storage/' . $data->photo : null,
'photo_mobile' => $data->photo_mobile ? '/storage/' . $data->photo_mobile : null,
'photo_menu' => $data->photo_menu ? '/storage/' . $data->photo_menu : null,
'title' => $data->title,
'body' => $data->body,
'address' => $data->address,
'delivery' => $data->delivery,
'opening_hours' => $data->opening_hours,
'widget_link' => $data->widget_link
]
]);
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\Link;
class LinkController extends Controller
{
public function index(): JsonResponse
{
$link = Link::first();
$links = $link ? $link->links : [];
return response()->json([
'status' => 'success',
'data' => $links
]);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\NavigationLink;
class NavigationController extends Controller
{
public function index(): JsonResponse
{
$navigation = NavigationLink::orderBy('sort_order', 'asc')->get();
return response()->json([
'status' => 'success',
'data' => $navigation
]);
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\Photo;
class PhotoController extends Controller
{
public function index(): JsonResponse
{
$photos = Photo::orderBy('sort_order', 'asc')->get();
$photosWithPaths = $photos->map(function ($photo) {
$data = $photo->toArray();
$data['photo'] = $photo->photo ? '/storage/' . $photo->photo : null;
return $data;
});
return response()->json([
'status' => 'success',
'data' => $photosWithPaths
]);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\Product;
use App\Models\Ingredient;
class ProductController extends Controller
{
public function index(): JsonResponse
{
$products = Product::all();
$ingredients = Ingredient::all()->keyBy('id');
$productsWithIngredients = $products->map(function ($product) use ($ingredients) {
$productData = $product->toArray();
if (isset($productData['products']) && is_array($productData['products'])) {
$productData['products'] = collect($productData['products'])->map(function ($item) use ($ingredients) {
if (isset($item['data']['ingredients'])) {
$item['data']['ingredients'] = collect($item['data']['ingredients'])
->map(fn($id) => $ingredients->get($id))
->filter()
->values()
->toArray();
}
return $item;
})->toArray();
}
return $productData;
});
return response()->json([
'status' => 'success',
'data' => $productsWithIngredients
]);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Models\Promotion;
class PromotionController extends Controller
{
public function index(): JsonResponse
{
$promotions = Promotion::orderBy('sort_order', 'asc')->get();
return response()->json([
'status' => 'success',
'data' => $promotions
]);
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\JsonResponse;
use App\Models\Size;
class SizeController extends Controller
{
public function index(): JsonResponse
{
$size = Size::first();
if (!$size) {
return response()->json([
'status' => 'error',
'message' => 'Size configuration not found'
], 404);
}
return response()->json([
'status' => 'success',
'data' => [
'small' => [
'description' => $size->small,
'photo' => $size->small_photo ? '/storage/' . $size->small_photo : null,
],
'medium' => [
'description' => $size->medium,
'photo' => $size->medium_photo ? '/storage/' . $size->medium_photo : null,
],
'large' => [
'description' => $size->large,
'photo' => $size->large_photo ? '/storage/' . $size->large_photo : null,
],
]
]);
}
}