Keine Beschreibung

routes.php 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. <?php
  2. // Event::listen('illuminate.query', function($sql, $params)
  3. // {
  4. // print_r($sql);
  5. // echo '<pre>';
  6. // print_r($params);
  7. // echo "</pre>";
  8. // });
  9. /*
  10. |--------------------------------------------------------------------------
  11. | Application Routes
  12. |--------------------------------------------------------------------------
  13. |
  14. | Here is where you can register all of the routes for an application.
  15. | It's a breeze. Simply tell Laravel the URIs it should respond to
  16. | and give it the Closure to execute when that URI is requested.
  17. |
  18. */
  19. // Route model bindings
  20. Route::model('template', 'Template');
  21. Route::model('program', 'Program');
  22. Route::model('five_year_plan', 'FiveYearPlan');
  23. // Composers
  24. View::composer(array(
  25. 'local.professors._navigation',
  26. 'local.managers.admins._navigation',
  27. 'local.managers.sCoords._navigation',
  28. 'local.managers.pCoords._navigation',
  29. ), function ($view) {
  30. // Get user's courses' numbers
  31. $courses = Auth::user()->courses;
  32. $schools = School::orderBy('name', 'asc')->get();
  33. $view->with('courses', $courses)->with('schools', $schools);
  34. });
  35. View::composer(array(
  36. 'local.professors.*',
  37. 'local.managers.admins._navigation',
  38. 'local.managers.sCoords._navigation',
  39. 'local.managers.pCoords._navigation',
  40. 'local.managers.shared.limited-course',
  41. 'local.managers.shared.school',
  42. 'local.managers.shared.school-uhs',
  43. 'local.managers.shared.programs',
  44. 'local.managers.shared.program',
  45. 'local.managers.shared.rubrics',
  46. 'global.view-learning-outcomes-criteria',
  47. 'global.view-learning-outcomes-criteria'
  48. ), function ($view) {
  49. $view->with('role', Auth::user()->role);
  50. });
  51. /*
  52. * Login/logout routes
  53. */
  54. /** Use modified guest filter to redirect logged in user */
  55. Route::get('/', array('before' => 'guest', 'uses' => 'AuthController@showLogin'));
  56. Route::post('/login', array('uses' => 'AuthController@login'));
  57. /**
  58. * Protected Routes
  59. */
  60. Route::group(array('before' => 'auth|has_access'), function () {
  61. /**
  62. * Recalculate course outcomes
  63. *
  64. */
  65. Route::get('recalculateCourses', function () {
  66. DB::disableQueryLog();
  67. if (Auth::user()->id != 58)
  68. Redirect::action('AuthController@showLogin');
  69. try {
  70. $courses = Course::all();
  71. foreach ($courses as $course) {
  72. echo $course->id;
  73. // Recalculate course outcomes
  74. $activities = Activity::where('course_id', $course->id)
  75. ->whereNotNull('outcomes_attempted')
  76. ->where('draft', 0)
  77. ->get();
  78. //If there are still evaluated activities in the course, recalculate course outcomes
  79. if (!$activities->isEmpty()) {
  80. $outcomeCount = Outcome::all()->count();
  81. // Variables to hold recalculated outcomes for the course
  82. $course_outcomes_attempted = array_fill(1, $outcomeCount, 0);
  83. $course_outcomes_achieved = array_fill(1, $outcomeCount, 0);
  84. // For each activity
  85. foreach ($activities as $activity2) {
  86. // If activity has been assessed
  87. if ($activity2->outcomes_attempted != NULL) {
  88. echo '<ul>';
  89. // Get the achieved criteria
  90. $criteria_achievement = json_decode($activity2->criteria_achieved, true);
  91. foreach ($criteria_achievement as $criterion_id => $criterion_achieved) {
  92. // Find corresponding learning outcome;
  93. $criterion = Criterion::withTrashed()->where('id', $criterion_id)->first();
  94. print '<li>' . $criterion->id . '</li>';
  95. $outcome = Outcome::find($criterion->outcome_id);
  96. // If criterion is achieved (1), add 1 to both arrays
  97. if ($criterion_achieved === 1) {
  98. $course_outcomes_attempted[$outcome->id] += 1;
  99. $course_outcomes_achieved[$outcome->id] += 1;
  100. }
  101. // Else, only add to the attempted outcomes arrays
  102. elseif ($criterion_achieved === 0) {
  103. $course_outcomes_attempted[$outcome->id] += 1;
  104. }
  105. }
  106. echo '</ul>';
  107. }
  108. }
  109. // Update course
  110. DB::table('courses')
  111. ->where('id', $course->id)
  112. ->update(array(
  113. 'outcomes_attempted' => json_encode($course_outcomes_attempted),
  114. 'outcomes_achieved' => json_encode($course_outcomes_achieved),
  115. 'updated_at' => date('Y-m-d H:i:s')
  116. ));
  117. }
  118. // Otherwise, set them all to NULL
  119. else {
  120. DB::table('courses')
  121. ->where('id', $course->id)
  122. ->update(array(
  123. 'outcomes_attempted' => NULL,
  124. 'outcomes_achieved' => NULL,
  125. 'updated_at' => date('Y-m-d H:i:s')
  126. ));
  127. }
  128. }
  129. return 'success';
  130. } catch (Exception $e) {
  131. return 'failure (' . $e->getLine() . '): ' . $e->getMessage();
  132. }
  133. });
  134. /**
  135. * Shared Routes
  136. */
  137. // Fetch all criteria associated to an outcome
  138. Route::post('fetchCriteria', array(
  139. 'as' => 'fetchCriteria',
  140. 'uses' => 'OutcomesController@fetchCriteria'
  141. ));
  142. // Fetch a criterion for a rubric
  143. Route::post('fetchCriterion', array(
  144. 'as' => 'fetchCriterion',
  145. 'uses' => 'CriteriaController@fetchCriterion'
  146. ));
  147. // Fetch Criterions associated to programs
  148. Route::post('fetchAllCriterion', array(
  149. 'as' => 'fetchAllCriterion',
  150. 'uses' => 'CriteriaController@fetchAllCriterion'
  151. ));
  152. Route::post('delete', array(
  153. 'as' => 'delete',
  154. 'uses' => 'CriteriaController@delete'
  155. ));
  156. // Fetch a criterion for a rubric
  157. Route::post('fetchCriterionWithTrashed', array(
  158. 'as' => 'fetchCriterionWithTrashed',
  159. 'uses' => 'CriteriaController@fetchCriterionWithTrashed'
  160. ));
  161. //Fetch objectives for criteria when outcome is chosen
  162. Route::post('fetchObjectivesForSelect', array(
  163. 'as' => 'fetchObjectivesForSelect',
  164. 'uses' => 'CriteriaController@fetchObjectivesForSelect'
  165. ));
  166. // Fetch a criterion for a rubric with custom content
  167. Route::post('fetchRubricCriterion', array(
  168. 'as' => 'fetchRubricCriterion',
  169. 'uses' => 'RubricsController@fetchRubricCriterion'
  170. ));
  171. // Load a rubric template
  172. Route::post('loadTemplate', array('uses' => 'TemplatesController@fetch'));
  173. Route::post('filterSemesters', array('uses' => 'SemestersController@filterSemesters'));
  174. // Log out user
  175. Route::get('logout', 'AuthController@logout');
  176. // Edit and update user profile
  177. Route::get('profile', 'UsersController@edit');
  178. Route::post('profile/update', array('before' => 'csrf', 'uses' => 'UsersController@update'));
  179. // Allows users to give feeback
  180. Route::post('feedback/send', array('before' => 'csrf', 'uses' => 'FeedbackController@send'));
  181. Route::resource(
  182. 'feedback',
  183. 'FeedbackController',
  184. array('only' => array('create'))
  185. );
  186. // Show users all learning outcomes and criteria
  187. Route::get('learning-outcomes-criteria', 'CriteriaController@index');
  188. Route::post('fetchOutcome', array('before' => 'csrf', 'uses'=> 'OutcomesController@fetchOutcome'));
  189. // Show users all objectives and criteria
  190. Route::get('learning-objectives-criteria', 'CriteriaController@objectivesIndex');
  191. Route::post('fetchObjectiveForCriteria', array('before' => 'csrf', 'uses'=> 'ObjectivesController@fetchObjectiveForCriteria'));
  192. // Show professor overview to users with courses
  193. Route::get('professor', 'ProfessorsController@overview');
  194. // Assessment reports for users' courses
  195. Route::get('my-assessment-reports', 'OutcomesController@professorAssessmentReports');
  196. Route::post('objectives/fetch', array('before' => 'csrf', 'uses' => 'ObjectivesController@fetch'));
  197. /**
  198. * Administrator Routes
  199. */
  200. Route::group(array('before' => 'admin'), function () {
  201. Route::get('/administrator', 'AdministratorsController@overview');
  202. Route::post('administrator/rubrics', array(
  203. 'as' => 'rubrics',
  204. 'before' => 'csrf',
  205. 'uses' => 'CriteriaController@fetch'
  206. ));
  207. Route::post('createOutcome', array('before' => 'csrf', 'uses' => 'OutcomesController@create'));
  208. Route::post('createCriterion', array('before' => 'csrf', 'uses' => 'CriteriaController@create'));
  209. Route::get('learning-outcomes', 'OutcomesController@index');
  210. Route::post('fetchObjectives', 'Objective2Controller@fetchAllObjectives');
  211. // TODO: Change later
  212. Route::get('new-learning-outcomes', 'OutcomesController@newIndex');
  213. Route::post('learning-outcomes/update', array('before' => 'csrf', 'uses' => 'OutcomesController@updateMore'));
  214. Route::post('learning-outcomes/update', array('before' => 'csrf', 'uses' => 'OutcomesController@update'));
  215. Route::post('learning-outcomes/update', array('before' => 'csrf', 'uses' => 'OutcomesController@updateMore'));
  216. Route::post('crtiteria/update', array('before' => 'csrf', 'uses'=> 'CriteriaController@update'));
  217. Route::delete('crtiteria/delete', array('before' => 'csrf', 'uses'=> 'CriteriaController@destroy'));
  218. Route::get('administrator/users/{query?}', 'UsersController@index');
  219. Route::post('administrator/updateAccess', array('before' => 'csrf', 'uses' => 'UsersController@updateAccess'));
  220. Route::post('administrator/users/store', array('before' => 'csrf', 'uses' => 'UsersController@store'));
  221. Route::get('criteria', array('uses' => 'CriteriaController@edit'));
  222. Route::get('objectives', array('uses' => 'Objective2Controller@edit'));
  223. Route::get('administrator/semesters', 'SemestersController@edit');
  224. Route::post('administrator/semesters/update', 'SemestersController@update');
  225. Route::post('deleteObjective', 'Objective2Controller@delete');
  226. Route::get('assessment-report/{outcome_id}', 'OutcomesController@assessmentReport');
  227. // TODO: Change later
  228. Route::get('new-assessment-report/{outcome_id}', 'OutcomesController@newAssessmentReport');
  229. Route::get('template-list', 'TemplatesController@index');
  230. Route::get('template/{template}', 'TemplatesController@show');
  231. Route::get('courses/reassign', 'CoursesController@reassign');
  232. Route::post('courses/update', array('before' => 'csrf', 'uses' => 'CoursesController@update'));
  233. Route::get('activities/create', 'ActivitiesController@newCreate');
  234. });
  235. /**
  236. * School Coordinator Routes
  237. */
  238. Route::group(array('before' => 'scoord'), function () {
  239. Route::get('school-coordinator', 'SchoolCoordinatorsController@overview');
  240. Route::get('school/{id}', 'SchoolsController@show');
  241. Route::get('program/{id}', 'ProgramsController@show');
  242. Route::post('programs/report', 'ProgramsController@showReport');
  243. Route::get('programs', 'ProgramsController@index');
  244. Route::get('template-list', 'TemplatesController@schoolCoordinatorIndex');
  245. Route::post('deleteObjective', 'Objective2Controller@delete');
  246. // Print school report
  247. Route::get('print_school/{id}', 'SchoolsController@print_school');
  248. // Assessment reports
  249. Route::get('school-assessment-report/{outcome_id}', 'OutcomesController@schoolAssessmentReport');
  250. // Gabriel added this, so the school coordinator can add criterias and objectives
  251. Route::get('school-objective', 'Objective2Controller@editSchool');
  252. Route::get('school-criteria', 'CriteriaController@editSchool');
  253. });
  254. /**
  255. * Program Coordinator Routes
  256. */
  257. Route::group(array('before' => 'pcoord'), function () {
  258. Route::get('program-coordinator', 'ProgramCoordinatorsController@overview');
  259. Route::post('deleteObjective', 'Objective2Controller@delete');
  260. Route::get('rubrics', 'TemplatesController@newTemplate');
  261. Route::post('saveTemplate', array('before' => 'csrf', 'uses' => 'TemplatesController@create'));
  262. Route::post('updateTemplate', array('before' => 'csrf', 'uses' => 'TemplatesController@update'));
  263. Route::post('deleteTemplate', array('before' => 'csrf', 'uses' => 'TemplatesController@destroy'));
  264. Route::get('course/{id}', 'CoursesController@showLimited');
  265. Route::get('rubrics/{template_id}/download', 'TemplatesController@download');
  266. Route::post('program/fetch', array('before' => 'csrf', 'uses' => 'ProgramsController@fetch'));
  267. Route::get('printRubric/{id}', 'TemplatesController@printview');
  268. Route::get('rubric/{rubric_id}', 'RubricsController@show_limited');
  269. Route::get('grouped_course/{code}/{number}/{semester_code}', 'CoursesController@showGrouped');
  270. //Criteria and objectives
  271. Route::get('program-criteria', 'CriteriaController@editProgram');
  272. Route::get('program-objective', 'Objective2Controller@editProgram');
  273. // Print program report
  274. Route::get('print_program/{id}', 'ProgramsController@print_program');
  275. // Print course (grouped sections) report
  276. Route::get('print_course/{code}/{number}/{semester_code}', 'CoursesController@print_course');
  277. // Assessment reports
  278. Route::get('program-assessment-report/{outcome_id}/{program_id}', 'OutcomesController@programAssessmentReport');
  279. Route::get('assessment-reports', 'OutcomesController@managerAssessmentReports');
  280. // Learning Objectives
  281. Route::get('program/{program}/objectives', 'ObjectivesController@index');
  282. Route::post('updateObjective', array('before' => 'csrf', 'uses' => 'ObjectivesController@update'));
  283. Route::post('program/{id}/createObjective', array('before' => 'csrf', 'uses' => 'ObjectivesController@create'));
  284. Route::post('fetchObjective', array('before' => 'csrf', 'uses' => 'ObjectivesController@fetchObjective'));
  285. Route::post('fetchObjectivesForCriteria', array('before' => 'csrf', 'uses' => 'ObjectivesController@fetchObjectivesForCriteria'));
  286. //Objectives por Gabriel
  287. Route::get('objective', 'Objective2Controller@edit');
  288. Route::post('createObjective', array('before' => 'csrf', 'uses' => 'Objective2Controller@create'));
  289. Route::post('updateObjective', array('before' => 'csrf', 'uses' => 'Objective2Controller@update'));
  290. Route::post('fetchObjectiveWithTrashed', array('before' => 'csrf', 'uses' => 'Objective2Controller@fetchObjectiveWithTrashed'));
  291. // Five year plans,
  292. Route::get('five-year-plans', 'FiveYearPlansController@index');
  293. Route::get('program/{program}/five-year-plans/create', 'FiveYearPlansController@create');
  294. Route::get('program/{program}/five-year-plans/{five_year_plan}', 'FiveYearPlansController@show');
  295. Route::get('program/{program}/five-year-plans/{five_year_plan}/edit', 'FiveYearPlansController@edit');
  296. Route::get('five-year-plans/{five_year_plan}/ms-word', 'FiveYearPlansController@msWord');
  297. Route::post('five-year-plans/store', array('before' => 'csrf', 'uses' => 'FiveYearPlansController@store'));
  298. Route::post('five-year-plans/update', array('before' => 'csrf', 'uses' => 'FiveYearPlansController@update'));
  299. // Annual plans
  300. Route::get('annual-plans', 'AnnualPlansController@index');
  301. Route::get('program/{program}/annual-plans/create', 'AnnualPlansController@create');
  302. Route::get('program/{program}/annual-plans/{five_year_plan}', 'AnnualPlansController@show');
  303. Route::get('program/{program}/annual-plans/{five_year_plan}/edit', 'AnnualPlansController@edit');
  304. Route::post('annual-plans/store', array('before' => 'csrf', 'uses' => 'AnnualPlansController@store'));
  305. Route::post('annual-plans/update', array('before' => 'csrf', 'uses' => 'AnnualPlansController@update'));
  306. Route::get('learning-outcomes/show/{id}', 'OutcomesController@show');
  307. // TODO: Change route name
  308. Route::get('learning-outcomes/newshow/{id}', 'OutcomesController@newShow');
  309. Route::get('new-report/{id}', 'OutcomesController@newReport');
  310. Route::get('new-report-all', 'OutcomesController@newReportAll');
  311. Route::get('courses/{id}', 'CoursesController@newShow');
  312. });
  313. /**
  314. * Professor Routes
  315. */
  316. Route::group(array('prefix' => 'professor', 'before' => 'prof'), function () {
  317. Route::post('program', array('before' => 'csrf', 'uses' => 'ProfessorsController@program'));
  318. Route::get('activities/{activity_id}/rubrics', 'RubricsController@newRubric');
  319. Route::get('activities/{activity_id}/rubric', 'RubricsController@show');
  320. Route::get('activities/{activity_id}/rubric/{rubric_id}/download', 'RubricsController@download');
  321. Route::get('activities/{activity_id}/rubric/{rubric_id}/print', 'RubricsController@printview');
  322. Route::get('activities/{activity_id}/assess', 'ActivitiesController@assess');
  323. Route::get('activities/{activity_id}/view_assessment', 'ActivitiesController@viewAssessment');
  324. Route::get('activities/{activity_id}/print_assessment', 'ActivitiesController@printAssessment');
  325. Route::post('activities/saveAssessment', array('before' => 'csrf', 'uses' => 'ActivitiesController@saveAssessment'));
  326. Route::post('activities/deleteAssessment', array('before' => 'csrf', 'uses' => 'ActivitiesController@deleteAssessment'));
  327. Route::delete('activities/{activity_id}/delete', 'ActivitiesController@destroy');
  328. Route::post('activities/{activity_id}/update', array('before' => 'csrf', 'uses' => 'ActivitiesController@update'));
  329. Route::get('courses/{id}', 'CoursesController@show');
  330. Route::get('courses/{semester}/{id}/students/{number}', 'StudentsController@show');
  331. Route::get('courses/{semester}/{id}/students/{number}/print_report', 'StudentsController@printStudentReport');
  332. Route::get('activities/{id}', 'ActivitiesController@show');
  333. Route::post('activities/{id}', array('before' => 'csrf', 'uses' => 'ActivitiesController@create'));
  334. Route::get('students', 'StudentsController@students');
  335. Route::get('program', 'ProfessorsController@program');
  336. Route::get('personal-information', 'ProfessorsController@personalInformation');
  337. Route::get('manual', 'ProfessorsController@manual');
  338. Route::post('loadRubric', array('before' => 'csrf', 'uses' => 'RubricsController@fetch'));
  339. Route::post('saveRubric', array('before' => 'csrf', 'uses' => 'RubricsController@create'));
  340. Route::post('updateRubric', array('before' => 'csrf', 'uses' => 'RubricsController@update'));
  341. Route::post('deleteRubric', array('before' => 'csrf', 'uses' => 'RubricsController@destroy'));
  342. Route::get('learning-outcomes-criteria', 'CriteriaController@index');
  343. Route::get('learning-objectives-criteria', 'CriteriaController@objectivesIndex');
  344. Route::get('export_grades/{id}', 'CoursesController@exportGrades');
  345. Route::get('learning-objectives-criteria', 'CriteriaController@objectivesIndex');
  346. // Assessment reports
  347. Route::get('professor-assessment-report/{outcome_id}', 'OutcomesController@professorAssessmentReport');
  348. Route::get('professor-assessment-reports', 'OutcomesController@professorAssessmentReports');
  349. Route::get('general-studies-overview', 'ProfessorsController@generalStudiesOverview');
  350. });
  351. });