@@ -34,7 +34,20 @@ class InventoryController extends Controller
34
34
public function getIndex ()
35
35
{
36
36
$ categories = ItemCategory::orderBy ('sort ' , 'DESC ' )->get ();
37
- $ items = count ($ categories ) ? Auth::user ()->items ()->orderByRaw ('FIELD(item_category_id, ' .implode (', ' , $ categories ->pluck ('id ' )->toArray ()).') ' )->orderBy ('name ' )->orderBy ('updated_at ' )->get ()->groupBy ('item_category_id ' ) : Auth::user ()->items ()->orderBy ('name ' )->orderBy ('updated_at ' )->get ()->groupBy ('item_category_id ' );
37
+ $ items = count ($ categories ) ?
38
+ Auth::user ()->items ()
39
+ ->where ('count ' , '> ' , 0 )
40
+ ->orderByRaw ('FIELD(item_category_id, ' .implode (', ' , $ categories ->pluck ('id ' )->toArray ()).') ' )
41
+ ->orderBy ('name ' )
42
+ ->orderBy ('updated_at ' )
43
+ ->get ()
44
+ ->groupBy (['item_category_id ' , 'id ' ]) :
45
+ Auth::user ()->items ()
46
+ ->where ('count ' , '> ' , 0 )
47
+ ->orderBy ('name ' )
48
+ ->orderBy ('updated_at ' )
49
+ ->get ()
50
+ ->groupBy (['item_category_id ' , 'id ' ]);
38
51
return view ('home.inventory ' , [
39
52
'categories ' => $ categories ->keyBy ('id ' ),
40
53
'items ' => $ items ,
@@ -52,28 +65,61 @@ public function getIndex()
52
65
*/
53
66
public function getStack (Request $ request , $ id )
54
67
{
55
- $ stack = UserItem::withTrashed ()->where ('id ' , $ id )->with ('item ' )->first ();
56
- $ readOnly = $ request ->get ('read_only ' ) ? : ((Auth::check () && $ stack && !$ stack ->deleted_at && ($ stack ->user_id == Auth::user ()->id || Auth::user ()->hasPower ('edit_inventories ' ))) ? 0 : 1 );
68
+ $ first_instance = UserItem::withTrashed ()->where ('id ' , $ id )->first ();
69
+ $ readOnly = $ request ->get ('read_only ' ) ? : ((Auth::check () && $ first_instance && ($ first_instance ->user_id == Auth::user ()->id || Auth::user ()->hasPower ('edit_inventories ' ))) ? 0 : 1 );
70
+ $ stack = UserItem::where ([['user_id ' , $ first_instance ->user_id ], ['item_id ' , $ first_instance ->item_id ], ['count ' , '> ' , 0 ]])->get ();
71
+ $ item = Item::where ('id ' , $ first_instance ->item_id )->first ();
57
72
58
73
return view ('home._inventory_stack ' , [
59
74
'stack ' => $ stack ,
75
+ 'item ' => $ item ,
60
76
'user ' => Auth::user (),
61
- 'userOptions ' => ['' => 'Select User ' ] + User::visible ()->where ('id ' , '!= ' , $ stack ? $ stack ->user_id : 0 )->orderBy ('name ' )->get ()->pluck ('verified_name ' , 'id ' )->toArray (),
77
+ 'userOptions ' => ['' => 'Select User ' ] + User::visible ()->where ('id ' , '!= ' , $ first_instance ? $ first_instance ->user_id : 0 )->orderBy ('name ' )->get ()->pluck ('verified_name ' , 'id ' )->toArray (),
62
78
'readOnly ' => $ readOnly
63
79
]);
64
80
}
81
+
82
+ /**
83
+ * Edits the inventory of involved users.
84
+ *
85
+ * @param \Illuminate\Http\Request $request
86
+ * @param App\Services\InventoryManager $service
87
+ * @return \Illuminate\Http\RedirectResponse
88
+ */
89
+ public function postEdit (Request $ request , InventoryManager $ service )
90
+ {
91
+ if (!$ request ->ids ) { flash ('No items selected. ' )->error (); }
92
+ if (!$ request ->quantities ) { flash ('Quantities not set. ' )->error (); }
93
+
94
+ if ($ request ->ids && $ request ->quantities ) {
95
+ switch ($ request ->action ) {
96
+ default :
97
+ flash ('Invalid action selected. ' )->error ();
98
+ break ;
99
+ case 'transfer ' :
100
+ return $ this ->postTransfer ($ request , $ service );
101
+ break ;
102
+ case 'delete ' :
103
+ return $ this ->postDelete ($ request , $ service );
104
+ break ;
105
+ case 'act ' :
106
+ return $ this ->postAct ($ request );
107
+ break ;
108
+ }
109
+ }
110
+ return redirect ()->back ();
111
+ }
65
112
66
113
/**
67
- * Transfers an inventory stack to another user.
114
+ * Transfers inventory items to another user.
68
115
*
69
116
* @param \Illuminate\Http\Request $request
70
117
* @param App\Services\InventoryManager $service
71
- * @param int $id
72
118
* @return \Illuminate\Http\RedirectResponse
73
119
*/
74
- public function postTransfer (Request $ request , InventoryManager $ service, $ id )
120
+ private function postTransfer (Request $ request , InventoryManager $ service )
75
121
{
76
- if ($ service ->transferStack (Auth::user (), User::visible ()->where ('id ' , $ request ->get ('user_id ' ))->first (), UserItem::where ( ' id ' , $ id )-> first ( ))) {
122
+ if ($ service ->transferStack (Auth::user (), User::visible ()->where ('id ' , $ request ->get ('user_id ' ))->first (), UserItem::find ( $ request -> get ( ' ids ' )) , $ request -> get ( ' quantities ' ))) {
77
123
flash ('Item transferred successfully. ' )->success ();
78
124
}
79
125
else {
@@ -87,12 +133,11 @@ public function postTransfer(Request $request, InventoryManager $service, $id)
87
133
*
88
134
* @param \Illuminate\Http\Request $request
89
135
* @param App\Services\InventoryManager $service
90
- * @param int $id
91
136
* @return \Illuminate\Http\RedirectResponse
92
137
*/
93
- public function postDelete (Request $ request , InventoryManager $ service, $ id )
138
+ private function postDelete (Request $ request , InventoryManager $ service )
94
139
{
95
- if ($ service ->deleteStack (Auth::user (), UserItem::where ( ' id ' , $ id )-> first ( ))) {
140
+ if ($ service ->deleteStack (Auth::user (), UserItem::find ( $ request -> get ( ' ids ' )) , $ request -> get ( ' quantities ' ))) {
96
141
flash ('Item deleted successfully. ' )->success ();
97
142
}
98
143
else {
@@ -118,18 +163,17 @@ public function getSelector($id)
118
163
* Acts on an item based on the item's tag.
119
164
*
120
165
* @param \Illuminate\Http\Request $request
121
- * @param App\Services\InventoryManager $service
122
- * @param int $id
123
166
* @return \Illuminate\Http\RedirectResponse
124
167
*/
125
- public function postAct (Request $ request, $ id , $ tag )
168
+ private function postAct (Request $ request )
126
169
{
127
- $ stack = UserItem::where ('id ' , $ id )->first ();
128
- $ service = $ stack ->item ->hasTag ($ tag ) ? $ stack ->item ->tag ($ tag )->service : null ;
129
- if ($ service && $ service ->act ($ stack , Auth::user (), $ request ->all ())) {
170
+ $ stacks = UserItem::with ('item ' )->find ($ request ->get ('ids ' ));
171
+ $ tag = $ request ->get ('tag ' );
172
+ $ service = $ stacks ->first ()->item ->hasTag ($ tag ) ? $ stacks ->first ()->item ->tag ($ tag )->service : null ;
173
+ if ($ service && $ service ->act ($ stacks , Auth::user (), $ request ->all ())) {
130
174
flash ('Item used successfully. ' )->success ();
131
175
}
132
- else if (!$ stack ->item ->hasTag ($ tag )) flash ('Invalid action selected. ' )->error ();
176
+ else if (!$ stacks -> first () ->item ->hasTag ($ tag )) flash ('Invalid action selected. ' )->error ();
133
177
else {
134
178
foreach ($ service ->errors ()->getMessages ()['error ' ] as $ error ) flash ($ error )->error ();
135
179
}
0 commit comments