Improve ticketing settings
This commit is contained in:
@@ -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.');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user