public function modules(ModulesRequest $request) { switch ($request->getActionType()) { case ActionType::GET: if (!$request->getFreshData()) { $data = $this->dbHelper->getModuleData($request); //depending on the request we can get an eloquent collection or one of our models. Need to validate them differently switch (get_class($data)) { case "Illuminate\\Database\\Eloquent\\Collection": return !$data->isEmpty() ? $data : $this->getModuleDataFromLms($request); default: return !is_null($data) ? $data : $this->getModuleDataFromLms($request); } } else { return $this->getModuleDataFromLms($request); } break; case ActionType::PUT: switch ($request->getLms()) { case Lms::CANVAS: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->putModuleData($request); default: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->putModuleData($request); } break; case ActionType::POST: switch ($request->getLms()) { case Lms::CANVAS: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->postModuleData($request); default: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->postModuleData($request); } break; case ActionType::DELETE: switch ($request->getLms()) { case Lms::CANVAS: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->deleteModuleData($request); default: $canvas = new CanvasHelper(DataType::MODULES); return $canvas->deleteModuleData($request); } break; } }