|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
+use App\Http\Controllers\Concerns\ResolvesActiveUnit;
|
|
|
use App\Services\SupportTicketService;
|
|
|
use App\Http\Requests\SupportTicketRequest;
|
|
|
use App\Http\Resources\SupportTicketResource;
|
|
|
@@ -9,6 +10,8 @@
|
|
|
|
|
|
class SupportTicketController extends Controller
|
|
|
{
|
|
|
+ use ResolvesActiveUnit;
|
|
|
+
|
|
|
public function __construct(
|
|
|
protected SupportTicketService $service,
|
|
|
) {}
|
|
|
@@ -23,7 +26,7 @@ public function index(): JsonResponse
|
|
|
if ($this->isMatriz($user)) {
|
|
|
$query->where(fn($q) => $q->where('origin', '!=', 'unit')->orWhere('scope', '!=', 'internal'));
|
|
|
} else {
|
|
|
- $query->visibleToUnit($user->units()->first()?->id);
|
|
|
+ $query->visibleToUnit($this->activeUnitId($user));
|
|
|
}
|
|
|
|
|
|
return $this->successResponse(
|
|
|
@@ -40,7 +43,7 @@ public function store(SupportTicketRequest $request): JsonResponse
|
|
|
$data['origin'] = $isMatriz ? 'matriz' : 'unit';
|
|
|
$data['applicant_user_id'] = $user->id;
|
|
|
$data['responsable_user_id'] = $user->id;
|
|
|
- $data['applicant_unit_id'] = $isMatriz ? null : $user->units()->first()?->id;
|
|
|
+ $data['applicant_unit_id'] = $isMatriz ? null : $this->activeUnitId($user);
|
|
|
$data['status'] = 'in_progress';
|
|
|
|
|
|
// Broadcast: Matriz para todas as unidades
|
|
|
@@ -70,7 +73,7 @@ public function store(SupportTicketRequest $request): JsonResponse
|
|
|
} else {
|
|
|
// Franchisee
|
|
|
$data['target_unit_id'] = (($data['scope'] ?? null) === 'internal')
|
|
|
- ? $user->units()->first()?->id
|
|
|
+ ? $this->activeUnitId($user)
|
|
|
: null; // 'specific' do Franchisee = "para Matriz"
|
|
|
}
|
|
|
|
|
|
@@ -128,6 +131,6 @@ private function canManage(\App\Models\User $user, \App\Models\SupportTicket $ti
|
|
|
// Franchisee só pode gerenciar tickets internos que ela mesma criou
|
|
|
return $ticket->origin === 'unit'
|
|
|
&& $ticket->scope === 'internal'
|
|
|
- && $ticket->applicant_unit_id === $user->units()->first()?->id;
|
|
|
+ && $ticket->applicant_unit_id === $this->activeUnitId($user);
|
|
|
}
|
|
|
}
|