69 lines
1.7 KiB
PHP
69 lines
1.7 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Http\Controllers;
|
||
|
|
||
|
use Illuminate\Http\Request;
|
||
|
use App\Models\Palette;
|
||
|
use App\Models\PaletteColor;
|
||
|
|
||
|
class PaletteController extends Controller
|
||
|
{
|
||
|
public function index()
|
||
|
{
|
||
|
$palettes = Palette::all();
|
||
|
return view('palette-editor', compact('palettes'));
|
||
|
}
|
||
|
|
||
|
public function store(Request $request)
|
||
|
{
|
||
|
$request->validate([
|
||
|
'name' => 'required|unique:palettes,name',
|
||
|
]);
|
||
|
|
||
|
$palette = Palette::create(['name' => $request->name]);
|
||
|
return response()->json($palette);
|
||
|
}
|
||
|
|
||
|
public function addColor(Request $request, Palette $palette)
|
||
|
{
|
||
|
$request->validate([
|
||
|
'name' => 'required|regex:/^[a-z-]+$/',
|
||
|
'hex_value' => 'required|regex:/^#[a-fA-F0-9]{6}$/'
|
||
|
]);
|
||
|
|
||
|
$color = PaletteColor::create([
|
||
|
'palette_id' => $palette->id,
|
||
|
'name' => $request->name,
|
||
|
'hex_value' => $request->hex_value
|
||
|
]);
|
||
|
|
||
|
return response()->json($color);
|
||
|
}
|
||
|
|
||
|
public function updateColor(Request $request, Palette $palette, PaletteColor $color)
|
||
|
{
|
||
|
$request->validate([
|
||
|
'name' => 'required|regex:/^[a-z-]+$/',
|
||
|
'hex_value' => 'required|regex:/^#[a-fA-F0-9]{6}$/'
|
||
|
]);
|
||
|
|
||
|
$color->update([
|
||
|
'name' => $request->name,
|
||
|
'hex_value' => $request->hex_value
|
||
|
]);
|
||
|
|
||
|
return response()->json($color);
|
||
|
}
|
||
|
|
||
|
public function deleteColor(Palette $palette, PaletteColor $color)
|
||
|
{
|
||
|
$color->delete();
|
||
|
return response()->json(['message' => 'Color deleted']);
|
||
|
}
|
||
|
|
||
|
public function getColors(Palette $palette)
|
||
|
{
|
||
|
return response()->json($palette->colors);
|
||
|
}
|
||
|
}
|