orderBy('name') ->get(); } public function findById(int $id): ?Group { return Group::with('units')->find($id); } public function create(array $data): Group { $group = Group::create([ 'name' => $data['name'], 'status' => $data['status'] ?? 'ACTIVE', ]); if (!empty($data['unit_ids'])) { $group->units()->sync($data['unit_ids']); } return $group->load('units'); } public function update(int $id, array $data): ?Group { $group = $this->findById($id); if (!$group) { return null; } $group->update(array_filter([ 'name' => $data['name'] ?? null, 'status' => $data['status'] ?? null, ], fn($v) => $v !== null)); if (array_key_exists('unit_ids', $data)) { $group->units()->sync($data['unit_ids'] ?? []); } return $group->fresh('units'); } public function delete(int $id): bool { $group = $this->findById($id); if (!$group) { return false; } $group->units()->detach(); return $group->delete(); } }