5
5
use App \Events \CheckoutableCheckedOut ;
6
6
use App \Helpers \Helper ;
7
7
use App \Http \Controllers \Controller ;
8
+ use App \Http \Requests \AccessoryCheckoutRequest ;
9
+ use App \Http \Requests \StoreAccessoryRequest ;
8
10
use App \Http \Transformers \AccessoriesTransformer ;
9
11
use App \Http \Transformers \SelectlistTransformer ;
10
12
use App \Models \Accessory ;
@@ -121,12 +123,12 @@ public function index(Request $request)
121
123
/**
122
124
* Store a newly created resource in storage.
123
125
*
126
+ * @param \App\Http\Requests\ImageUploadRequest $request
127
+ * @return \Illuminate\Http\JsonResponse
124
128
* @author [A. Gianotto] [<[email protected] >]
125
129
* @since [v4.0]
126
- * @param \App\Http\Requests\ImageUploadRequest $request
127
- * @return \Illuminate\Http\Response
128
130
*/
129
- public function store (ImageUploadRequest $ request )
131
+ public function store (StoreAccessoryRequest $ request )
130
132
{
131
133
$ this ->authorize ('create ' , Accessory::class);
132
134
$ accessory = new Accessory ;
@@ -144,10 +146,10 @@ public function store(ImageUploadRequest $request)
144
146
/**
145
147
* Display the specified resource.
146
148
*
149
+ * @param int $id
150
+ * @return array
147
151
* @author [A. Gianotto] [<[email protected] >]
148
152
* @since [v4.0]
149
- * @param int $id
150
- * @return \Illuminate\Http\Response
151
153
*/
152
154
public function show ($ id )
153
155
{
@@ -161,10 +163,10 @@ public function show($id)
161
163
/**
162
164
* Display the specified resource.
163
165
*
166
+ * @param int $id
167
+ * @return array
164
168
* @author [A. Gianotto] [<[email protected] >]
165
169
* @since [v4.0]
166
- * @param int $id
167
- * @return \Illuminate\Http\Response
168
170
*/
169
171
public function accessory_detail ($ id )
170
172
{
@@ -273,43 +275,31 @@ public function destroy($id)
273
275
* If Slack is enabled and/or asset acceptance is enabled, it will also
274
276
* trigger a Slack message and send an email.
275
277
*
276
- * @author [A. Gianotto] [<[email protected] >]
277
278
* @param int $accessoryId
278
- * @return \Illuminate\Http\RedirectResponse
279
+ * @return \Illuminate\Http\JsonResponse
280
+ * @author [A. Gianotto] [<[email protected] >]
279
281
*/
280
- public function checkout (Request $ request , $ accessoryId )
282
+ public function checkout (AccessoryCheckoutRequest $ request , Accessory $ accessory )
281
283
{
282
- // Check if the accessory exists
283
- if (is_null ($ accessory = Accessory::withCount ('users as users_count ' )->find ($ accessoryId ))) {
284
- return response ()->json (Helper::formatStandardApiResponse ('error ' , null , trans ('admin/accessories/message.does_not_exist ' )));
285
- }
286
-
287
284
$ this ->authorize ('checkout ' , $ accessory );
285
+ $ accessory ->assigned_to = $ request ->input ('assigned_to ' );
286
+ $ user = User::find ($ request ->input ('assigned_to ' ));
287
+ $ accessory ->checkout_qty = $ request ->input ('checkout_qty ' , 1 );
288
288
289
-
290
- if ($ accessory ->numRemaining () > 0 ) {
291
-
292
- if (! $ user = User::find ($ request ->input ('assigned_to ' ))) {
293
- return response ()->json (Helper::formatStandardApiResponse ('error ' , null , trans ('admin/accessories/message.checkout.user_does_not_exist ' )));
294
- }
295
-
296
- // Update the accessory data
297
- $ accessory ->assigned_to = $ request ->input ('assigned_to ' );
298
-
289
+ for ($ i = 0 ; $ i < $ accessory ->checkout_qty ; $ i ++) {
299
290
$ accessory ->users ()->attach ($ accessory ->id , [
300
291
'accessory_id ' => $ accessory ->id ,
301
292
'created_at ' => Carbon::now (),
302
293
'user_id ' => Auth::id (),
303
- 'assigned_to ' => $ request ->get ('assigned_to ' ),
304
- 'note ' => $ request ->get ('note ' ),
294
+ 'assigned_to ' => $ request ->input ('assigned_to ' ),
295
+ 'note ' => $ request ->input ('note ' ),
305
296
]);
306
-
307
- event (new CheckoutableCheckedOut ($ accessory , $ user , auth ()->user (), $ request ->input ('note ' )));
308
-
309
- return response ()->json (Helper::formatStandardApiResponse ('success ' , null , trans ('admin/accessories/message.checkout.success ' )));
310
297
}
311
298
312
- return response ()->json (Helper::formatStandardApiResponse ('error ' , null , 'No accessories remaining ' ));
299
+ // Set this value to be able to pass the qty through to the event
300
+ event (new CheckoutableCheckedOut ($ accessory , $ user , auth ()->user (), $ request ->input ('note ' )));
301
+
302
+ return response ()->json (Helper::formatStandardApiResponse ('success ' , null , trans ('admin/accessories/message.checkout.success ' )));
313
303
314
304
}
315
305
0 commit comments