public function createRoomSet(Request $req, $confId, $residenceId) { if (!Entrust::can(PermissionNames::ConferenceRoomEdit($confId))) { return response("", 403); } return DB::transaction(function () use($req, $confId, $residenceId) { $res = Residence::find($residenceId); if (is_null($res) || $res->conferenceID != $confId) { return response("", 404); } $responses = []; foreach ($req->all() as $request) { $this->validateRoomSet($request); if (isset($request['typeID'])) { $type = $request['typeID']; } else { $tyVal = new RoomType(); $tyVal->name = $request['type']['name']; $tyVal->capacity = $request['type']['capacity']; $tyVal->accessible = $request['type']['accessible']; $tyVal->save(); $type = $tyVal->id; } $set = new RoomSet(); $set->typeID = $type; $set->residenceID = $residenceId; $set->name = $request['name']; $set->save(); $responses[] = ['name' => $set->name, 'id' => $set->id, 'typeID' => $type]; } Log::info("Created " . sizeof($responses) . " new room sets in residence {$res->name} for conference {$confId}"); return response()->json($responses); }); }