From f8f7c791e39059fbb91ae48ff4d1c08220626781 Mon Sep 17 00:00:00 2001 From: Nikhil Kadam Date: Wed, 21 May 2025 14:01:00 +0530 Subject: [PATCH] Assigning asset to multiple users --- .../APIS/AdminApi/AssetadmintController.php | 51 +++++++++---------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/APIS/AdminApi/AssetadmintController.php b/app/Http/Controllers/APIS/AdminApi/AssetadmintController.php index f02198c..db20069 100644 --- a/app/Http/Controllers/APIS/AdminApi/AssetadmintController.php +++ b/app/Http/Controllers/APIS/AdminApi/AssetadmintController.php @@ -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 ]); });