|
@@ -23,7 +23,7 @@ public function getAll(): Collection
|
|
|
|
|
|
|
|
public function getAllByUnit(): Collection
|
|
public function getAllByUnit(): Collection
|
|
|
{
|
|
{
|
|
|
- $unitId = Auth::user()->units->first()?->id;
|
|
|
|
|
|
|
+ $unitId = request()->input('active_unit_id') ?? Auth::user()->units->first()?->id;
|
|
|
|
|
|
|
|
if (!$unitId) {
|
|
if (!$unitId) {
|
|
|
return User::with(['state', 'units', 'userType'])->whereNull('id')->get();
|
|
return User::with(['state', 'units', 'userType'])->whereNull('id')->get();
|
|
@@ -42,20 +42,25 @@ public function findById(int $id): ?User
|
|
|
|
|
|
|
|
public function create(array $data): User
|
|
public function create(array $data): User
|
|
|
{
|
|
{
|
|
|
- $unitId = $data['unit_id'] ?? Auth::user()->units->first()?->id;
|
|
|
|
|
- unset($data['unit_id']);
|
|
|
|
|
|
|
+ // Suporta unit_ids[] (múltiplas) ou unit_id (retrocompatibilidade)
|
|
|
|
|
+ $unitIds = $data['unit_ids'] ?? null;
|
|
|
|
|
+ if (empty($unitIds) && isset($data['unit_id'])) {
|
|
|
|
|
+ $unitIds = array_filter([$data['unit_id']]);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (empty($unitIds)) {
|
|
|
|
|
+ $fallback = Auth::user()->units->first()?->id;
|
|
|
|
|
+ $unitIds = $fallback ? [$fallback] : [];
|
|
|
|
|
+ }
|
|
|
|
|
+ unset($data['unit_ids'], $data['unit_id']);
|
|
|
|
|
|
|
|
$data = $this->handleAvatar($data);
|
|
$data = $this->handleAvatar($data);
|
|
|
$user = User::create($data);
|
|
$user = User::create($data);
|
|
|
|
|
|
|
|
- if ($unitId) {
|
|
|
|
|
- UnitUser::create([
|
|
|
|
|
- 'unit_id' => $unitId,
|
|
|
|
|
- 'user_id' => $user->id,
|
|
|
|
|
- ]);
|
|
|
|
|
|
|
+ if (!empty($unitIds)) {
|
|
|
|
|
+ $user->units()->sync($unitIds);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return $user->load('state');
|
|
|
|
|
|
|
+ return $user->load('state', 'units');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function update(int $id, array $data): ?User
|
|
public function update(int $id, array $data): ?User
|
|
@@ -66,14 +71,19 @@ public function update(int $id, array $data): ?User
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- $hasUnitId = array_key_exists('unit_id', $data);
|
|
|
|
|
- $unitId = $data['unit_id'] ?? null;
|
|
|
|
|
- unset($data['unit_id']);
|
|
|
|
|
|
|
+ // Suporta unit_ids[] (múltiplas) com fallback para unit_id (retrocompatibilidade)
|
|
|
|
|
+ $hasUnitIds = array_key_exists('unit_ids', $data);
|
|
|
|
|
+ $unitIds = $data['unit_ids'] ?? null;
|
|
|
|
|
+ $hasUnitId = array_key_exists('unit_id', $data);
|
|
|
|
|
+ $unitId = $data['unit_id'] ?? null;
|
|
|
|
|
+ unset($data['unit_ids'], $data['unit_id']);
|
|
|
|
|
|
|
|
$data = $this->handleAvatar($data, $model->avatar_url);
|
|
$data = $this->handleAvatar($data, $model->avatar_url);
|
|
|
$model->update($data);
|
|
$model->update($data);
|
|
|
|
|
|
|
|
- if ($hasUnitId) {
|
|
|
|
|
|
|
+ if ($hasUnitIds) {
|
|
|
|
|
+ $model->units()->sync(array_filter($unitIds ?? []));
|
|
|
|
|
+ } elseif ($hasUnitId) {
|
|
|
$model->units()->sync($unitId ? [$unitId] : []);
|
|
$model->units()->sync($unitId ? [$unitId] : []);
|
|
|
}
|
|
}
|
|
|
|
|
|