Improve ticketing settings

This commit is contained in:
Joel Wedemire
2026-04-08 19:48:32 -07:00
parent f2b614abb7
commit 3c65f9a4fd
3 changed files with 172 additions and 22 deletions

View File

@@ -5,6 +5,7 @@ namespace Dashboard\Ticketing\Http\Controllers;
use Dashboard\Ticketing\Models\PriorityLevel;
use Dashboard\Ticketing\Models\TicketingAgentAccess;
use Dashboard\Ticketing\Models\TicketingGroup;
use Illuminate\Validation\Rule;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
@@ -212,4 +213,52 @@ class TicketingSettingsController extends Controller
return back()->with('success', 'Priority level created.');
}
public function updatePriority(Request $request, PriorityLevel $priority)
{
$this->requireAgentAccess();
if ($priority->group_id) {
$this->requireManagerAccess($priority->group_id);
}
$validated = $request->validate([
'name' => 'required|string|max:100',
'color' => 'required|string|regex:/^#[0-9a-fA-F]{6}$/',
'description' => 'nullable|string',
'sort_order' => 'required|integer|min:0',
'group_id' => [
'nullable',
'exists:ticketing_groups,id',
Rule::in([$priority->group_id, null]),
],
]);
if (!empty($validated['group_id'])) {
$this->requireManagerAccess($validated['group_id']);
}
$priority->update($validated);
return back()->with('success', 'Priority level updated.');
}
public function destroyPriority(PriorityLevel $priority)
{
$this->requireAgentAccess();
if ($priority->group_id) {
$this->requireManagerAccess($priority->group_id);
}
if ($priority->tickets()->exists()) {
return back()->withErrors([
'priority' => 'Cannot delete a priority that is in use by tickets.',
]);
}
$priority->delete();
return back()->with('success', 'Priority level removed.');
}
}