Undangan/backend/app/Http/Controllers/Api/TemplateController.php
2025-09-08 14:23:18 +07:00

101 lines
2.7 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\Template;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
class TemplateController extends Controller
{
/**
* Mengambil daftar semua template beserta kategorinya.
*/
public function index()
{
$templates = Template::with('kategori')->get();
return response()->json($templates);
}
/**
* Menyimpan template baru.
*/
public function store(Request $request)
{
try {
$validated = $request->validate([
'kategori_id' => 'required|exists:kategoris,id',
'nama_template' => 'required|string|max:255',
'fitur' => 'nullable|string',
'foto' => 'nullable|string',
]);
$template = Template::create($validated);
return response()->json($template, 201);
} catch (ValidationException $e) {
return response()->json([
'message' => 'Validation failed',
'errors' => $e->errors()
], 422);
}
}
/**
* Mengambil detail satu template berdasarkan ID.
*/
public function show($id)
{
$template = Template::with('kategori')->find($id);
if (!$template) {
return response()->json(['message' => 'Template not found'], 404);
}
return response()->json($template);
}
/**
* Memperbarui template yang sudah ada.
*/
public function update(Request $request, $id)
{
$template = Template::find($id);
if (!$template) {
return response()->json(['message' => 'Template not found'], 404);
}
try {
$validated = $request->validate([
'kategori_id' => 'required|exists:kategoris,id',
'nama_template' => 'required|string|max:255',
'fitur' => 'nullable|string',
'foto' => 'nullable|string',
]);
$template->update($validated);
return response()->json($template);
} catch (ValidationException $e) {
return response()->json([
'message' => 'Validation failed',
'errors' => $e->errors()
], 422);
}
}
/**
* Menghapus template.
*/
public function destroy($id)
{
$template = Template::find($id);
if (!$template) {
return response()->json(['message' => 'Template not found'], 404);
}
$template->delete();
return response()->json(null, 204);
}
}