public function render() { try { $sessionModel = new SessionModel(); $masterView = new MasterView(); // Dependency injection of sessionModel to make sure they all user same. $loginController = new LoginController($sessionModel); $isLoggedIn = $loginController->checkLogin(); $umlToCodeController = new UmlToCodeController(new InterpretModel()); switch (NavView::getAction()) { case NavView::$umlSubmit: if ($isLoggedIn) { $masterView->SetMemberVIew($umlToCodeController->showMemberView($sessionModel)); break; } $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; case NavView::$umlGetLists: if ($isLoggedIn) { $masterView->SetProjectsView($umlToCodeController->projectsView($sessionModel)); $masterView->SetMemberVIew($umlToCodeController->showMemberView($sessionModel)); break; } $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; case NavView::$showProject: if ($isLoggedIn) { $umlToCodeController->selectProject($sessionModel); $masterView->SetMemberVIew($umlToCodeController->showMemberView($sessionModel)); break; } $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; case NavView::$deleteProject: if ($isLoggedIn) { $umlToCodeController->deleteUmlProject($sessionModel); $masterView->SetMemberVIew($umlToCodeController->showMemberView($sessionModel)); break; } $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; case NavView::$registerView: $registerController = new RegisterController(); $masterView->SetRegisterView($registerController->registerView()); break; case NavView::$login: $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; case NavView::$logoutView: $loginController->logout(); break; default: if ($isLoggedIn) { $masterView->SetMemberVIew($umlToCodeController->showMemberView($sessionModel)); break; } $masterView->SetGuestView($umlToCodeController->showGuestView()); $masterView->SetLoginView($loginController->loginView()); break; } return $masterView->render(); } catch (Exception $e) { header('Location: /' . \Settings::$ROOT_PATH . '/common/error.html'); return null; } }