diff --git a/app/Http/Controllers/Settings/LocationController.php b/app/Http/Controllers/Settings/LocationController.php new file mode 100644 index 0000000..8c83678 --- /dev/null +++ b/app/Http/Controllers/Settings/LocationController.php @@ -0,0 +1,39 @@ +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.'); + } +} diff --git a/app/Http/Controllers/Settings/ProjectSettingController.php b/app/Http/Controllers/Settings/ProjectSettingController.php new file mode 100644 index 0000000..2e2f2cc --- /dev/null +++ b/app/Http/Controllers/Settings/ProjectSettingController.php @@ -0,0 +1,39 @@ +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.'); + } +} diff --git a/app/Http/Controllers/Settings/UrgencyLevelController.php b/app/Http/Controllers/Settings/UrgencyLevelController.php new file mode 100644 index 0000000..1d07e5b --- /dev/null +++ b/app/Http/Controllers/Settings/UrgencyLevelController.php @@ -0,0 +1,72 @@ +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.'); + } +}