feat: add Settings controllers for Location, ProjectSetting, UrgencyLevel

This commit is contained in:
Ghassan Yusuf 2026-05-24 09:56:03 +03:00
parent 70db1184c8
commit 75e4890a08
3 changed files with 150 additions and 0 deletions

View File

@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\Settings\Location;
use Illuminate\Http\Request;
class LocationController extends Controller
{
public function index()
{
$locations = Location::orderBy('name')->get();
return view('settings.locations.index', compact('locations'));
}
public function store(Request $request)
{
$request->validate(['name' => 'required|string|max:255|unique:settings_locations,name']);
Location::create(['name' => $request->name, 'is_active' => true]);
return redirect()->route('settings.locations.index')->with('success', 'Location added.');
}
public function update(Request $request, Location $location)
{
$request->validate(['name' => 'required|string|max:255|unique:settings_locations,name,' . $location->id]);
$location->update([
'name' => $request->name,
'is_active' => $request->boolean('is_active', true),
]);
return redirect()->route('settings.locations.index')->with('success', 'Location updated.');
}
public function destroy(Location $location)
{
$location->delete();
return redirect()->route('settings.locations.index')->with('success', 'Location deleted.');
}
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\Settings\ProjectSetting;
use Illuminate\Http\Request;
class ProjectSettingController extends Controller
{
public function index()
{
$projects = ProjectSetting::orderBy('name')->get();
return view('settings.projects.index', compact('projects'));
}
public function store(Request $request)
{
$request->validate(['name' => 'required|string|max:255|unique:settings_projects,name']);
ProjectSetting::create(['name' => $request->name, 'is_active' => true]);
return redirect()->route('settings.projects.index')->with('success', 'Project added.');
}
public function update(Request $request, ProjectSetting $project)
{
$request->validate(['name' => 'required|string|max:255|unique:settings_projects,name,' . $project->id]);
$project->update([
'name' => $request->name,
'is_active' => $request->boolean('is_active', true),
]);
return redirect()->route('settings.projects.index')->with('success', 'Project updated.');
}
public function destroy(ProjectSetting $project)
{
$project->delete();
return redirect()->route('settings.projects.index')->with('success', 'Project deleted.');
}
}

View File

@ -0,0 +1,72 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Models\Settings\UrgencyLevel;
use Illuminate\Http\Request;
class UrgencyLevelController extends Controller
{
public function index()
{
$urgencyLevels = UrgencyLevel::orderBy('sort_order')->get();
return view('settings.urgency-levels.index', compact('urgencyLevels'));
}
public function store(Request $request)
{
$request->validate([
'label' => 'required|string|max:100|unique:settings_urgency_levels,label',
'emoji' => 'required|string|max:10',
'color_bg' => 'required|string|max:20',
'color_text' => 'required|string|max:20',
'subtitle' => 'nullable|string|max:100',
'sort_order' => 'required|integer|min:0',
]);
UrgencyLevel::create([
'label' => $request->label,
'emoji' => $request->emoji,
'color_bg' => $request->color_bg,
'color_text' => $request->color_text,
'subtitle' => $request->subtitle,
'sort_order' => $request->sort_order,
'show_date_picker' => $request->boolean('show_date_picker'),
'is_active' => true,
]);
return redirect()->route('settings.urgency-levels.index')->with('success', 'Urgency level added.');
}
public function update(Request $request, UrgencyLevel $urgencyLevel)
{
$request->validate([
'label' => 'required|string|max:100|unique:settings_urgency_levels,label,' . $urgencyLevel->id,
'emoji' => 'required|string|max:10',
'color_bg' => 'required|string|max:20',
'color_text' => 'required|string|max:20',
'subtitle' => 'nullable|string|max:100',
'sort_order' => 'required|integer|min:0',
]);
$urgencyLevel->update([
'label' => $request->label,
'emoji' => $request->emoji,
'color_bg' => $request->color_bg,
'color_text' => $request->color_text,
'subtitle' => $request->subtitle,
'sort_order' => $request->sort_order,
'show_date_picker' => $request->boolean('show_date_picker'),
'is_active' => $request->boolean('is_active', true),
]);
return redirect()->route('settings.urgency-levels.index')->with('success', 'Urgency level updated.');
}
public function destroy(UrgencyLevel $urgencyLevel)
{
$urgencyLevel->delete();
return redirect()->route('settings.urgency-levels.index')->with('success', 'Urgency level deleted.');
}
}