get(); // Create the pseudo group $allGroup = new Group([ 'name' => __('commons.all') ]); $allGroup->id = 0; $allGroup->twofaccounts_count = TwoFAccount::count(); // Merge them all $groups->prepend($allGroup); return response()->json($groups->toArray()); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $this->validate($request, [ 'name' => 'required|string|max:32|unique:groups', ]); $group = Group::create([ 'name' => $request->name, ]); return response()->json($group, 201); } /** * Display the specified resource. * * @param \App\Group $group * @return \Illuminate\Http\Response */ public function show(Group $group) { return response()->json($group, 200); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Group $twofaccount * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $this->validate($request, [ 'name' => 'required|string|max:32|unique:groups', ]); // Here we catch a possible missing model exception in order to // delete orphan submited icon try { $group = Group::FindOrFail($id); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { throw $e; } $group->update([ 'name' => $request->name, ]); return response()->json($group, 200); } /** * Associate the specified accounts with the group * * @param \App\Group $group * @return \Illuminate\Http\Response */ public function associateAccounts(Request $request) { if( $request->input('groupId') > 0 ) { $twofaccounts = TwoFAccount::find($request->input('accountsIds')); $group = Group::FindOrFail($request->input('groupId')); $group->twofaccounts()->saveMany($twofaccounts); return response()->json($group, 200); } else { TwoFAccount::whereIn('id', $request->input('accountsIds')) ->update(['group_id' => NULL]); return response()->json(['message' => 'moved to null'], 200); } } /** * Remove the specified resource from storage. * * @param \App\Group $group * @return \Illuminate\Http\Response */ public function destroy(Group $group) { $group->delete(); return response()->json(null, 204); } }