Assigning asset to multiple users

This commit is contained in:
Nikhil Kadam
2025-05-21 14:01:00 +05:30
parent 5a935782f2
commit f8f7c791e3

View File

@@ -255,7 +255,7 @@ class AssetadmintController extends Controller
];
}
return null;
})->pluck('full_name')->filter()->values(); // remove nulls and reset keys
})->filter()->values(); // remove nulls and reset keys
// $assetData['assign_to_users'] = !empty($assignToUsers) ? implode(', ', $assignToUsers) : '';
$assetData['assign_to_users'] = $assignToUsers;
@@ -443,31 +443,28 @@ class AssetadmintController extends Controller
$assetId = $request->asset_id;
$activeStatus = $request->active;
// if ($activeStatus) {
// // If assigning asset, first unassign from any other users
// UserAssetLink::where('asset_id', $assetId)
// ->update(['active' => 0]);
// }
// Now either update existing record or create a new one for this user and asset
$userAssetLink = UserAssetLink::firstOrNew([
'user_id' => $userId,
'asset_id' => $assetId
]);
if($userId){
foreach($userId as $user){
$userAssetLink = UserAssetLink::firstOrNew([
'user_id' => $user,
'asset_id' => $assetId
]);
$userAssetLink->active = $activeStatus;
$userAssetLink->save();
$userAssetLink->active = $activeStatus;
$userAssetLink->save();
}
}
$message = $activeStatus
? 'Asset assigned to user successfully.'
: 'Asset unassigned from user.';
? 'Asset assigned to user(s) successfully'
: 'Asset unassigned from user(s)';
Log::info($message, ['userId' => $userId, 'assetId' => $assetId]);
return response()->json([
'success' => true,
'message' => $message,
'data' => $userAssetLink
], 200);
} catch (Exception $e) {
Log::error("Error assigning/unassigning asset: " . $e->getMessage());
@@ -617,21 +614,21 @@ class AssetadmintController extends Controller
->get()
->map(function ($asset) {
// Since only active userAssetLinks are fetched, take the first one (only one user per asset)
$assignToUser = $asset->userAssetLinks->first(); // get first active link if exists
$userDetails = null;
if ($assignToUser && $assignToUser->user) {
$userDetails = [
'user_id' => $assignToUser->user->id,
'full_name' => trim($assignToUser->user->first_name . ' ' . $assignToUser->user->last_name),
];
}
$assignToUsers = $asset->userAssetLinks->map(function ($userAssetLink) {
$user = $userAssetLink->user;
if ($user) {
return [
'user_id' => $user->id,
'full_name' => trim($user->first_name . ' ' . $user->last_name),
];
}
});
return collect($asset)
->except('customer', 'userAssetLinks') // remove full objects
->except('customer', 'user_asset_links') // remove full objects
->merge([
'customer_name' => optional($asset->customer)->name,
'assign_to_user' => $userDetails, // assign only one user
'assign_to_users' => $assignToUsers, // attach user_id and full_name
]);
});