33namespace App \Http \Controllers \Api ;
44
55use App \Helpers \Helper ;
6- use App \Http \Requests \ImageUploadRequest ;
76use App \Http \Controllers \Controller ;
7+ use App \Http \Requests \ImageUploadRequest ;
8+ use App \Http \Transformers \AccessoriesTransformer ;
89use App \Http \Transformers \AssetsTransformer ;
910use App \Http \Transformers \LocationsTransformer ;
1011use App \Http \Transformers \SelectlistTransformer ;
12+ use App \Models \Accessory ;
13+ use App \Models \AccessoryCheckout ;
1114use App \Models \Asset ;
1215use App \Models \Location ;
16+ use Illuminate \Http \JsonResponse ;
1317use Illuminate \Http \Request ;
1418use Illuminate \Pagination \LengthAwarePaginator ;
1519use Illuminate \Support \Collection ;
16- use Illuminate \Http \JsonResponse ;
1720
1821class LocationsController extends Controller
1922{
@@ -28,26 +31,28 @@ public function index(Request $request) : JsonResponse | array
2831 {
2932 $ this ->authorize ('view ' , Location::class);
3033 $ allowed_columns = [
31- 'id ' ,
32- 'name ' ,
34+ 'accessories_count ' ,
3335 'address ' ,
3436 'address2 ' ,
37+ 'assets_count ' ,
38+ 'assets_count ' ,
39+ 'assigned_accessories_count ' ,
40+ 'assigned_assets_count ' ,
41+ 'assigned_assets_count ' ,
3542 'city ' ,
36- 'state ' ,
3743 'country ' ,
38- 'zip ' ,
3944 'created_at ' ,
40- 'updated_at ' ,
41- 'manager_id ' ,
42- 'image ' ,
43- 'assigned_assets_count ' ,
44- 'users_count ' ,
45- 'assets_count ' ,
46- 'assigned_assets_count ' ,
47- 'assets_count ' ,
48- 'rtd_assets_count ' ,
4945 'currency ' ,
46+ 'id ' ,
47+ 'image ' ,
5048 'ldap_ou ' ,
49+ 'manager_id ' ,
50+ 'name ' ,
51+ 'rtd_assets_count ' ,
52+ 'state ' ,
53+ 'updated_at ' ,
54+ 'users_count ' ,
55+ 'zip ' ,
5156 ];
5257
5358 $ locations = Location::with ('parent ' , 'manager ' , 'children ' )->select ([
@@ -68,8 +73,11 @@ public function index(Request $request) : JsonResponse | array
6873 'locations.image ' ,
6974 'locations.ldap_ou ' ,
7075 'locations.currency ' ,
71- ])->withCount ('assignedAssets as assigned_assets_count ' )
76+ ])
77+ ->withCount ('assignedAssets as assigned_assets_count ' )
7278 ->withCount ('assets as assets_count ' )
79+ ->withCount ('assignedAccessories as assigned_accessories_count ' )
80+ ->withCount ('accessories as accessories_count ' )
7381 ->withCount ('rtd_assets as rtd_assets_count ' )
7482 ->withCount ('children as children_count ' )
7583 ->withCount ('users as users_count ' );
@@ -224,7 +232,17 @@ public function update(ImageUploadRequest $request, $id) : JsonResponse
224232 return response ()->json (Helper::formatStandardApiResponse ('error ' , null , $ location ->getErrors ()));
225233 }
226234
235+
227236 public function assets (Request $ request , Location $ location ) : JsonResponse | array
237+ {
238+ $ this ->authorize ('view ' , Asset::class);
239+ $ this ->authorize ('view ' , $ location );
240+ $ assets = Asset::where ('location_id ' , '= ' , $ location ->id )->with ('model ' , 'model.category ' , 'assetstatus ' , 'location ' , 'company ' , 'defaultLoc ' );
241+ $ assets = $ assets ->get ();
242+ return (new AssetsTransformer )->transformAssets ($ assets , $ assets ->count (), $ request );
243+ }
244+
245+ public function assignedAssets (Request $ request , Location $ location ) : JsonResponse | array
228246 {
229247 $ this ->authorize ('view ' , Asset::class);
230248 $ this ->authorize ('view ' , $ location );
@@ -233,6 +251,20 @@ public function assets(Request $request, Location $location) : JsonResponse | ar
233251 return (new AssetsTransformer )->transformAssets ($ assets , $ assets ->count (), $ request );
234252 }
235253
254+ public function assignedAccessories (Request $ request , Location $ location ) : JsonResponse | array
255+ {
256+ $ this ->authorize ('view ' , Accessory::class);
257+ $ this ->authorize ('view ' , $ location );
258+ $ accessory_checkouts = AccessoryCheckout::LocationAssigned ()->with ('adminuser ' )->with ('accessories ' );
259+
260+ $ offset = ($ request ->input ('offset ' ) > $ accessory_checkouts ->count ()) ? $ accessory_checkouts ->count () : app ('api_offset_value ' );
261+ $ limit = app ('api_limit_value ' );
262+
263+ $ total = $ accessory_checkouts ->count ();
264+ $ accessory_checkouts = $ accessory_checkouts ->skip ($ offset )->take ($ limit )->get ();
265+ return (new LocationsTransformer )->transformCheckedoutAccessories ($ accessory_checkouts , $ total );
266+ }
267+
236268 /**
237269 * Remove the specified resource from storage.
238270 *
0 commit comments