Keine Beschreibung

School.php 27KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <?php
  2. class School extends Eloquent
  3. {
  4. public function programs()
  5. {
  6. return $this->hasMany('Program')->orderBy('name', 'asc');
  7. }
  8. public function coordinators()
  9. {
  10. return $this->hasMany('User');
  11. }
  12. public function courses()
  13. {
  14. return $this->hasManyThrough('Course', 'Program')->orderBy('name', 'asc');
  15. }
  16. public function templates()
  17. {
  18. return $this->hasMany('Template')->orderBy('name', 'asc');
  19. }
  20. public function getUndergraduateProgramsAttribute()
  21. {
  22. return $this->hasMany("Program")->where('is_graduate', 0)->orderBy("name", 'asc');
  23. }
  24. public function getGraduateProgramsAttribute()
  25. {
  26. return $this->hasMany("Program")->where('is_graduate', 1)->orderBy("name", 'asc');
  27. }
  28. //Esto envia
  29. /*
  30. [
  31. undergraduate_info:[
  32. outcomes_attempted_uncombined:{
  33. outcome_1: count(students),
  34. }
  35. outcomes_attempted_combined:{
  36. }
  37. outcomes_achieved_uncombined:{
  38. }
  39. outcomes_achieved_combined:{
  40. }
  41. ],
  42. graduate_info:[
  43. ]
  44. ]
  45. */
  46. public function getSchoolCoursesPerOutcomeAttribute()
  47. {
  48. $semesters = Semester::whereIn('id', Session::get('semesters_ids'))->get();
  49. $outcomes_grad = Outcome::active_by_semesters($semesters, 1);
  50. $outcomes_undergrad = Outcome::active_by_semesters($semesters, 0);
  51. $outcomes = Outcome::orderBy('name', 'asc')->get();
  52. $array_to_send = [];
  53. $undergraduate_students =
  54. DB::table('assessments')
  55. ->join('activity_criterion', 'activity_criterion.id', '=', 'assessments.activity_criterion_id')
  56. ->join('activities', 'activities.id', '=', 'activity_criterion.activity_id')
  57. ->join('courses', 'courses.id', '=', 'activities.course_id')
  58. ->join('students', 'students.id', '=', 'assessments.student_id')
  59. ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'activity_criterion.criterion_id')
  60. ->join('rubric_activity', 'rubric_activity.activity_id', '=', 'activities.id')
  61. ->join('rubrics', 'rubrics.id', '=', 'rubric_activity.rubric_id')
  62. ->join('outcomes', 'criterion_objective_outcome.outcome_id', '=', 'outcomes.id')
  63. ->join('semesters', 'semesters.id', '=', 'courses.semester_id')
  64. ->whereNotNull('score')
  65. ->whereIn('courses.program_id', $this->undergraduate_programs->lists('id'))
  66. ->whereIn('semester_id', Session::get('semesters_ids'))
  67. ->where('semesters.is_visible', '=', 1)
  68. ->select('student_id', 'courses.program_id', 'semesters.code', 'outcome_id', 'outcomes.expected_outcome', 'criterion_objective_outcome.criterion_id', 'score', 'expected_points')
  69. ->addSelect(DB::raw("count(activity_criterion.criterion_id) as criteria_attempted"))
  70. ->addSelect(DB::raw("count(CASE WHEN score>= expected_points then 1 else null END) as criteria_achieved"))
  71. ->groupBy('students.id', 'outcome_id');
  72. //->get();
  73. $undergraduate_students = $undergraduate_students->get();
  74. //$array_to_send["undergraduate_students"] = $undergraduate_students;
  75. $graduate_students = DB::table('assessments')
  76. ->join('activity_criterion', 'activity_criterion.id', '=', 'assessments.activity_criterion_id')
  77. ->join('activities', 'activities.id', '=', 'activity_criterion.activity_id')
  78. ->join('courses', 'courses.id', '=', 'activities.course_id')
  79. ->join('students', 'students.id', '=', 'assessments.student_id')
  80. ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'activity_criterion.criterion_id')
  81. ->join('rubric_activity', 'rubric_activity.activity_id', '=', 'activities.id')
  82. ->join('rubrics', 'rubrics.id', '=', 'rubric_activity.rubric_id')
  83. ->join('semesters', 'semesters.id', '=', 'courses.semester_id')
  84. ->join('outcomes', 'criterion_objective_outcome.outcome_id', '=', 'outcomes.id')
  85. ->whereNotNull('score')
  86. ->whereIn('courses.program_id', $this->graduate_programs->lists('id'))
  87. ->whereIn('semester_id', Session::get('semesters_ids'))
  88. ->where('semesters.is_visible', '=', 1)
  89. ->select('student_id', 'courses.program_id', 'semesters.code', 'outcome_id', 'outcomes.expected_outcome', 'criterion_objective_outcome.criterion_id', 'score', 'expected_points')
  90. ->addSelect(DB::raw("count(activity_criterion.criterion_id) as criteria_attempted"))
  91. ->addSelect(DB::raw("count(CASE WHEN score>= expected_points then 1 else null END) as criteria_achieved"))
  92. ->groupBy('students.id', 'outcome_id', 'courses.program_id')
  93. ->get();
  94. //$array_to_send["graduate_students"] = $graduate_students;
  95. //Log::info(count($graduate_students));
  96. //Log::info(count($undergraduate_students));
  97. $outcome_ids = DB::table("outcomes")
  98. ->whereNotNull('new_outcome_id')
  99. ->get();
  100. $combined_outcomes = [];
  101. foreach ($outcome_ids as $outcome) {
  102. $combined_outcomes[$outcome->id] = $outcome->new_outcome_id;
  103. }
  104. //Necesito undergraduateCombined, undergraduateUncombined,
  105. //lo mismo pa graduate
  106. $array_to_send['undergraduate_info'] = [];
  107. $array_to_send['graduate_info'] = [];
  108. $array_to_send['undergraduate_info']['outcomes_attempted_uncombined'] = [];
  109. $array_to_send['undergraduate_info']['outcomes_achieved_uncombined'] = [];
  110. $array_to_send['graduate_info']['outcomes_attempted_uncombined'] = [];
  111. $array_to_send['graduate_info']['outcomes_achieved_uncombined'] = [];
  112. $under_out_att = [];
  113. $under_out_ach = [];
  114. $program_out_att = [];
  115. $program_out_ach = [];
  116. foreach ($outcomes as $outcome) {
  117. $under_out_att[$outcome->id] = 0;
  118. $under_out_ach[$outcome->id] = 0;
  119. $program_out_att[$outcome->id] = [];
  120. $program_out_ach[$outcome->id] = [];
  121. }
  122. //Para los programas attempted, voy a tener, un arreglo por dominio, y cada dominio tendra
  123. //indices por cada programa, y cada programa tendrá conteo del estudiantes que intentaron y
  124. // estudiantes que fallaron.
  125. //las filas son , estudiante, outcome que intentó, criterios_attempted, criterion_achieved,
  126. foreach ($undergraduate_students as $result) {
  127. $crit_att = $result->criteria_attempted;
  128. $crit_ach = $result->criteria_achieved;
  129. $expected_outcome = $result->expected_outcome;
  130. $program_id = $result->program_id;
  131. if (!isset($program_out_att[$result->outcome_id][$program_id])) {
  132. $program_out_att[$result->outcome_id][$program_id] = 0;
  133. }
  134. $program_out_att[$result->outcome_id][$program_id] += 1;
  135. $under_out_att[$result->outcome_id] += 1;
  136. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  137. if (!isset($program_out_ach[$result->outcome_id][$program_id])) {
  138. $program_out_ach[$result->outcome_id][$program_id] = 0;
  139. }
  140. $program_out_ach[$result->outcome_id][$program_id] += 1;
  141. $under_out_ach[$result->outcome_id] += 1;
  142. }
  143. }
  144. $array_to_send['undergraduate_info']['programs_attempted_uncombined'] = $program_out_att;
  145. $array_to_send['undergraduate_info']['programs_achieved_uncombined'] = $program_out_ach;
  146. $array_to_send['undergraduate_info']['outcomes_attempted_uncombined'] = $under_out_att;
  147. $array_to_send['undergraduate_info']['outcomes_achieved_uncombined'] = $under_out_ach;
  148. $grad_out_att = [];
  149. $grad_out_ach = [];
  150. foreach ($outcomes as $outcome) {
  151. $grad_out_att[$outcome->id] = 0;
  152. $grad_out_ach[$outcome->id] = 0;
  153. $program_out_att[$outcome->id] = [];
  154. $program_out_ach[$outcome->id] = [];
  155. }
  156. //las filas son , estudiante, outcome que intentó, criterios_attempted, criterion_achieved,
  157. foreach ($graduate_students as $result) {
  158. $crit_att = $result->criteria_attempted;
  159. $crit_ach = $result->criteria_achieved;
  160. $expected_outcome = $result->expected_outcome;
  161. $program_id = $result->program_id;
  162. if (!isset($program_out_att[$result->outcome_id][$program_id])) {
  163. $program_out_att[$result->outcome_id][$program_id] = 0;
  164. }
  165. $program_out_att[$result->outcome_id][$program_id] += 1;
  166. $grad_out_att[$result->outcome_id] += 1;
  167. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  168. if (!isset($program_out_ach[$result->outcome_id][$program_id])) {
  169. $program_out_ach[$result->outcome_id][$program_id] = 0;
  170. }
  171. $program_out_ach[$result->outcome_id][$program_id] += 1;
  172. $grad_out_ach[$result->outcome_id] += 1;
  173. }
  174. }
  175. $array_to_send['graduate_info']['outcomes_attempted_uncombined'] = $grad_out_att;
  176. $array_to_send['graduate_info']['outcomes_achieved_uncombined'] = $grad_out_ach;
  177. $array_to_send['graduate_info']['programs_attempted_uncombined'] = $program_out_att;
  178. $array_to_send['graduate_info']['programs_achieved_uncombined'] = $program_out_ach;
  179. $array_to_send['undergraduate_info']['outcomes_attempted_combined'] = [];
  180. $array_to_send['undergraduate_info']['outcomes_achieved_combined'] = [];
  181. $array_to_send['graduate_info']['outcomes_attempted_combined'] = [];
  182. $array_to_send['graduate_info']['outcomes_achieved_combined'] = [];
  183. $under_out_att = [];
  184. $under_out_ach = [];
  185. foreach ($outcomes as $outcome) {
  186. $under_out_att[$outcome->id] = 0;
  187. $under_out_ach[$outcome->id] = 0;
  188. $program_out_att[$outcome->id] = [];
  189. $program_out_ach[$outcome->id] = [];
  190. }
  191. //preprocess para combined_students
  192. $the_processed_table = [];
  193. foreach ($undergraduate_students as $result) {
  194. $student_id = $result->student_id;
  195. $outcome_id = $result->outcome_id;
  196. $expected_outcome = $result->expected_outcome;
  197. if (isset($combined_outcomes[$outcome_id]))
  198. $outcome_id = $combined_outcomes[$outcome_id];
  199. if (!isset($the_processed_table[$student_id])) {
  200. $the_processed_table[$student_id] = [];
  201. }
  202. //si en esta tabla, el estudiante no está pareado con este dominio, entonces registra
  203. // los criterios, achieved y attempted
  204. if (!isset($the_processed_table[$student_id][$outcome_id])) {
  205. $the_processed_table[$student_id][$outcome_id] = array(
  206. "criteria_attempted" => $result->criteria_attempted,
  207. "criteria_achieved" => $result->criteria_achieved,
  208. 'expected_outcome' => $expected_outcome,
  209. "program_id" => $result->program_id
  210. );
  211. }
  212. //si este estudiante está pareado a este dominio, significa que ahora estoy en los
  213. //deprecated outcomes.
  214. else {
  215. $the_processed_table[$student_id][$outcome_id]['criteria_attempted'] += $result->criteria_attempted;
  216. $the_processed_table[$student_id][$outcome_id]['criteria_achieved'] += $result->criteria_achieved;
  217. }
  218. }
  219. foreach ($the_processed_table as $student_id => $outcome_ids) {
  220. foreach ($outcome_ids as $outcome_id => $crit_information) {
  221. $crit_att = $crit_information['criteria_attempted'];
  222. $crit_ach = $crit_information['criteria_achieved'];
  223. $program_id = $crit_information['program_id'];
  224. $expected_outcome = $crit_information['expected_outcome'];
  225. $under_out_att[$outcome_id] += 1;
  226. if (!isset($program_out_att[$outcome_id][$program_id])) {
  227. $program_out_att[$outcome_id][$program_id] = 0;
  228. }
  229. $program_out_att[$outcome_id][$program_id] += 1;
  230. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  231. if (!isset($program_out_ach[$outcome_id][$program_id])) {
  232. $program_out_ach[$outcome_id][$program_id] = 0;
  233. }
  234. $program_out_ach[$outcome_id][$program_id] += 1;
  235. $under_out_ach[$outcome_id] += 1;
  236. }
  237. }
  238. }
  239. $array_to_send['undergraduate_info']['outcomes_attempted_combined'] = $under_out_att;
  240. $array_to_send['undergraduate_info']['outcomes_achieved_combined'] = $under_out_ach;
  241. $array_to_send['undergraduate_info']['programs_attempted_combined'] = $program_out_att;
  242. $array_to_send['undergraduate_info']['programs_achieved_combined'] = $program_out_ach;
  243. $grad_out_att = [];
  244. $grad_out_ach = [];
  245. foreach ($outcomes as $outcome) {
  246. $grad_out_att[$outcome->id] = 0;
  247. $grad_out_ach[$outcome->id] = 0;
  248. $program_out_att[$outcome->id] = [];
  249. $program_out_ach[$outcome->id] = [];
  250. }
  251. //preprocess para combined_students
  252. $the_processed_table = [];
  253. foreach ($graduate_students as $result) {
  254. $student_id = $result->student_id;
  255. $outcome_id = $result->outcome_id;
  256. $expected_outcome = $result->expected_outcome;
  257. if (isset($combined_outcomes[$outcome_id]))
  258. $outcome_id = $combined_outcomes[$outcome_id];
  259. if (!isset($the_processed_table[$student_id])) {
  260. $the_processed_table[$student_id] = [];
  261. }
  262. //si en esta tabla, el estudiante no está pareado con este dominio, entonces registra
  263. // los criterios, achieved y attempted
  264. if (!isset($the_processed_table[$student_id][$outcome_id])) {
  265. $the_processed_table[$student_id][$outcome_id] = array(
  266. "criteria_attempted" => $result->criteria_attempted,
  267. "criteria_achieved" => $result->criteria_achieved,
  268. 'expected_outcome' => $expected_outcome,
  269. 'program_id' => $result->program_id
  270. );
  271. }
  272. //si este estudiante está pareado a este dominio, significa que ahora estoy en los
  273. //deprecated outcomes.
  274. else {
  275. $the_processed_table[$student_id][$outcome_id]['criteria_attempted'] += $result->criteria_attempted;
  276. $the_processed_table[$student_id][$outcome_id]['criteria_achieved'] += $result->criteria_achieved;
  277. }
  278. }
  279. foreach ($the_processed_table as $student_id => $outcome_ids) {
  280. foreach ($outcome_ids as $out_id => $crit_information) {
  281. $crit_att = $crit_information['criteria_attempted'];
  282. $crit_ach = $crit_information['criteria_achieved'];
  283. $program_id = $crit_information['program_id'];
  284. $expected_outcome = $crit_information['expected_outcome'];
  285. $grad_out_att[$out_id] += 1;
  286. if (!isset($program_out_att[$out_id][$program_id])) {
  287. $program_out_att[$out_id][$program_id] = 0;
  288. }
  289. $program_out_att[$out_id][$program_id] += 1;
  290. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  291. if (!isset($program_out_ach[$out_id][$program_id])) {
  292. $program_out_ach[$out_id][$program_id] = 0;
  293. }
  294. $program_out_ach[$out_id][$program_id] += 1;
  295. $grad_out_ach[$out_id] += 1;
  296. }
  297. }
  298. }
  299. $array_to_send['graduate_info']['outcomes_attempted_combined'] = $grad_out_att;
  300. $array_to_send['graduate_info']['outcomes_achieved_combined'] = $grad_out_ach;
  301. $array_to_send['graduate_info']['programs_attempted_combined'] = $program_out_att;
  302. $array_to_send['graduate_info']['programs_achieved_combined'] = $program_out_ach;
  303. Log::info($array_to_send);
  304. return $array_to_send;
  305. }
  306. public function getSchoolStudentsPerOutcomeAttribute()
  307. {
  308. $semesters = Semester::whereIn('id', Session::get('semesters_ids'))->get();
  309. $outcomes_grad = Outcome::active_by_semesters($semesters, 1);
  310. $outcomes_undergrad = Outcome::active_by_semesters($semesters, 0);
  311. $outcomes = Outcome::orderBy('name', 'asc')->get();
  312. $array_to_send = [];
  313. $undergraduate_students =
  314. DB::table('assessments')
  315. ->join('activity_criterion', 'activity_criterion.id', '=', 'assessments.activity_criterion_id')
  316. ->join('activities', 'activities.id', '=', 'activity_criterion.activity_id')
  317. ->join('courses', 'courses.id', '=', 'activities.course_id')
  318. ->join('students', 'students.id', '=', 'assessments.student_id')
  319. ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'activity_criterion.criterion_id')
  320. ->join('rubric_activity', 'rubric_activity.activity_id', '=', 'activities.id')
  321. ->join('rubrics', 'rubrics.id', '=', 'rubric_activity.rubric_id')
  322. ->join('semesters', 'semesters.id', '=', 'courses.semester_id')
  323. ->join('outcomes', 'criterion_objective_outcome.outcome_id', '=', 'outcomes.id')
  324. ->whereNotNull('score')
  325. ->whereIn('students.program_id', $this->undergraduate_programs->lists('id'))
  326. ->whereIn('semester_id', Session::get('semesters_ids'))
  327. ->where('semesters.is_visible', '=', 1)
  328. ->select('student_id', 'students.program_id', 'semesters.code', 'outcome_id', 'outcomes.expected_outcome', 'criterion_objective_outcome.criterion_id', 'score', 'expected_points')
  329. ->addSelect(DB::raw("count(activity_criterion.criterion_id) as criteria_attempted"))
  330. ->addSelect(DB::raw("count(CASE WHEN score>= expected_points then 1 else null END) as criteria_achieved"))
  331. ->groupBy('students.id', 'outcome_id');
  332. //->get();
  333. $undergraduate_students = $undergraduate_students->get();
  334. //$array_to_send["undergraduate_students"] = $undergraduate_students;
  335. $graduate_students = DB::table('assessments')
  336. ->join('activity_criterion', 'activity_criterion.id', '=', 'assessments.activity_criterion_id')
  337. ->join('activities', 'activities.id', '=', 'activity_criterion.activity_id')
  338. ->join('courses', 'courses.id', '=', 'activities.course_id')
  339. ->join('students', 'students.id', '=', 'assessments.student_id')
  340. ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'activity_criterion.criterion_id')
  341. ->join('rubric_activity', 'rubric_activity.activity_id', '=', 'activities.id')
  342. ->join('rubrics', 'rubrics.id', '=', 'rubric_activity.rubric_id')
  343. ->join('semesters', 'semesters.id', '=', 'courses.semester_id')
  344. ->join('outcomes', 'criterion_objective_outcome.outcome_id', '=', 'outcomes.id')
  345. ->whereNotNull('score')
  346. ->whereIn('students.program_id', $this->graduate_programs->lists('id'))
  347. ->whereIn('semester_id', Session::get('semesters_ids'))
  348. ->where('semesters.is_visible', '=', 1)
  349. ->select('student_id', 'students.program_id', 'semesters.code', 'outcome_id', 'outcomes.expected_outcome', 'criterion_objective_outcome.criterion_id', 'score', 'expected_points')
  350. ->addSelect(DB::raw("count(activity_criterion.criterion_id) as criteria_attempted"))
  351. ->addSelect(DB::raw("count(CASE WHEN score>= expected_points then 1 else null END) as criteria_achieved"))
  352. ->groupBy('students.id', 'outcome_id')
  353. ->get();
  354. //$array_to_send["graduate_students"] = $graduate_students;
  355. //Log::info(count($graduate_students));
  356. //Log::info(count($undergraduate_students));
  357. $outcome_ids = DB::table("outcomes")
  358. ->whereNotNull('new_outcome_id')
  359. ->get();
  360. $combined_outcomes = [];
  361. foreach ($outcome_ids as $outcome) {
  362. $combined_outcomes[$outcome->id] = $outcome->new_outcome_id;
  363. }
  364. //Necesito undergraduateCombined, undergraduateUncombined,
  365. //lo mismo pa graduate
  366. $array_to_send['undergraduate_info'] = [];
  367. $array_to_send['graduate_info'] = [];
  368. $array_to_send['undergraduate_info']['outcomes_attempted_uncombined'] = [];
  369. $array_to_send['undergraduate_info']['outcomes_achieved_uncombined'] = [];
  370. $array_to_send['graduate_info']['outcomes_attempted_uncombined'] = [];
  371. $array_to_send['graduate_info']['outcomes_achieved_uncombined'] = [];
  372. $under_out_att = [];
  373. $under_out_ach = [];
  374. $program_out_att = [];
  375. $program_out_ach = [];
  376. foreach ($outcomes as $outcome) {
  377. $under_out_att[$outcome->id] = 0;
  378. $under_out_ach[$outcome->id] = 0;
  379. $program_out_att[$outcome->id] = [];
  380. $program_out_ach[$outcome->id] = [];
  381. }
  382. //Para los programas attempted, voy a tener, un arreglo por dominio, y cada dominio tendra
  383. //indices por cada programa, y cada programa tendrá conteo del estudiantes que intentaron y
  384. // estudiantes que fallaron.
  385. //las filas son , estudiante, outcome que intentó, criterios_attempted, criterion_achieved,
  386. foreach ($undergraduate_students as $result) {
  387. $crit_att = $result->criteria_attempted;
  388. $crit_ach = $result->criteria_achieved;
  389. $expected_outcome = $result->expected_outcome;
  390. $program_id = $result->program_id;
  391. if (!isset($program_out_att[$result->outcome_id][$program_id])) {
  392. $program_out_att[$result->outcome_id][$program_id] = 0;
  393. }
  394. $program_out_att[$result->outcome_id][$program_id] += 1;
  395. $under_out_att[$result->outcome_id] += 1;
  396. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  397. if (!isset($program_out_ach[$result->outcome_id][$program_id])) {
  398. $program_out_ach[$result->outcome_id][$program_id] = 0;
  399. }
  400. $program_out_ach[$result->outcome_id][$program_id] += 1;
  401. $under_out_ach[$result->outcome_id] += 1;
  402. }
  403. }
  404. $array_to_send['undergraduate_info']['programs_attempted_uncombined'] = $program_out_att;
  405. $array_to_send['undergraduate_info']['programs_achieved_uncombined'] = $program_out_ach;
  406. $array_to_send['undergraduate_info']['outcomes_attempted_uncombined'] = $under_out_att;
  407. $array_to_send['undergraduate_info']['outcomes_achieved_uncombined'] = $under_out_ach;
  408. $grad_out_att = [];
  409. $grad_out_ach = [];
  410. foreach ($outcomes as $outcome) {
  411. $grad_out_att[$outcome->id] = 0;
  412. $grad_out_ach[$outcome->id] = 0;
  413. $program_out_att[$outcome->id] = [];
  414. $program_out_ach[$outcome->id] = [];
  415. }
  416. //las filas son , estudiante, outcome que intentó, criterios_attempted, criterion_achieved,
  417. foreach ($graduate_students as $result) {
  418. $crit_att = $result->criteria_attempted;
  419. $crit_ach = $result->criteria_achieved;
  420. $expected_outcome = $result->expected_outcome;
  421. $program_id = $result->program_id;
  422. if (!isset($program_out_att[$result->outcome_id][$program_id])) {
  423. $program_out_att[$result->outcome_id][$program_id] = 0;
  424. }
  425. $program_out_att[$result->outcome_id][$program_id] += 1;
  426. $grad_out_att[$result->outcome_id] += 1;
  427. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  428. if (!isset($program_out_ach[$result->outcome_id][$program_id])) {
  429. $program_out_ach[$result->outcome_id][$program_id] = 0;
  430. }
  431. $program_out_ach[$result->outcome_id][$program_id] += 1;
  432. $grad_out_ach[$result->outcome_id] += 1;
  433. }
  434. }
  435. $array_to_send['graduate_info']['outcomes_attempted_uncombined'] = $grad_out_att;
  436. $array_to_send['graduate_info']['outcomes_achieved_uncombined'] = $grad_out_ach;
  437. $array_to_send['graduate_info']['programs_attempted_uncombined'] = $program_out_att;
  438. $array_to_send['graduate_info']['programs_achieved_uncombined'] = $program_out_ach;
  439. $array_to_send['undergraduate_info']['outcomes_attempted_combined'] = [];
  440. $array_to_send['undergraduate_info']['outcomes_achieved_combined'] = [];
  441. $array_to_send['graduate_info']['outcomes_attempted_combined'] = [];
  442. $array_to_send['graduate_info']['outcomes_achieved_combined'] = [];
  443. $under_out_att = [];
  444. $under_out_ach = [];
  445. foreach ($outcomes as $outcome) {
  446. $under_out_att[$outcome->id] = 0;
  447. $under_out_ach[$outcome->id] = 0;
  448. $program_out_att[$outcome->id] = [];
  449. $program_out_ach[$outcome->id] = [];
  450. }
  451. //preprocess para combined_students
  452. $the_processed_table = [];
  453. foreach ($undergraduate_students as $result) {
  454. $student_id = $result->student_id;
  455. $outcome_id = $result->outcome_id;
  456. $expected_outcome = $result->expected_outcome;
  457. if (isset($combined_outcomes[$outcome_id]))
  458. $outcome_id = $combined_outcomes[$outcome_id];
  459. if (!isset($the_processed_table[$student_id])) {
  460. $the_processed_table[$student_id] = [];
  461. }
  462. //si en esta tabla, el estudiante no está pareado con este dominio, entonces registra
  463. // los criterios, achieved y attempted
  464. if (!isset($the_processed_table[$student_id][$outcome_id])) {
  465. $the_processed_table[$student_id][$outcome_id] = array(
  466. "criteria_attempted" => $result->criteria_attempted,
  467. "criteria_achieved" => $result->criteria_achieved,
  468. "program_id" => $result->program_id,
  469. 'expected_outcome' => $expected_outcome
  470. );
  471. }
  472. //si este estudiante está pareado a este dominio, significa que ahora estoy en los
  473. //deprecated outcomes.
  474. else {
  475. $the_processed_table[$student_id][$outcome_id]['criteria_attempted'] += $result->criteria_attempted;
  476. $the_processed_table[$student_id][$outcome_id]['criteria_achieved'] += $result->criteria_achieved;
  477. }
  478. }
  479. foreach ($the_processed_table as $student_id => $outcome_ids) {
  480. foreach ($outcome_ids as $outcome_id => $crit_information) {
  481. $crit_att = $crit_information['criteria_attempted'];
  482. $crit_ach = $crit_information['criteria_achieved'];
  483. $program_id = $crit_information['program_id'];
  484. $expected_outcome = $crit_information['expected_outcome'];
  485. $under_out_att[$outcome_id] += 1;
  486. if (!isset($program_out_att[$outcome_id][$program_id])) {
  487. $program_out_att[$outcome_id][$program_id] = 0;
  488. }
  489. $program_out_att[$outcome_id][$program_id] += 1;
  490. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  491. if (!isset($program_out_ach[$outcome_id][$program_id])) {
  492. $program_out_ach[$outcome_id][$program_id] = 0;
  493. }
  494. $program_out_ach[$outcome_id][$program_id] += 1;
  495. $under_out_ach[$outcome_id] += 1;
  496. }
  497. }
  498. }
  499. $array_to_send['undergraduate_info']['outcomes_attempted_combined'] = $under_out_att;
  500. $array_to_send['undergraduate_info']['outcomes_achieved_combined'] = $under_out_ach;
  501. $array_to_send['undergraduate_info']['programs_attempted_combined'] = $program_out_att;
  502. $array_to_send['undergraduate_info']['programs_achieved_combined'] = $program_out_ach;
  503. $grad_out_att = [];
  504. $grad_out_ach = [];
  505. foreach ($outcomes as $outcome) {
  506. $grad_out_att[$outcome->id] = 0;
  507. $grad_out_ach[$outcome->id] = 0;
  508. $program_out_att[$outcome->id] = [];
  509. $program_out_ach[$outcome->id] = [];
  510. }
  511. //preprocess para combined_students
  512. $the_processed_table = [];
  513. foreach ($graduate_students as $result) {
  514. $student_id = $result->student_id;
  515. $outcome_id = $result->outcome_id;
  516. $expected_outcome = $result->expected_outcome;
  517. if (isset($combined_outcomes[$outcome_id]))
  518. $outcome_id = $combined_outcomes[$outcome_id];
  519. if (!isset($the_processed_table[$student_id])) {
  520. $the_processed_table[$student_id] = [];
  521. }
  522. //si en esta tabla, el estudiante no está pareado con este dominio, entonces registra
  523. // los criterios, achieved y attempted
  524. if (!isset($the_processed_table[$student_id][$outcome_id])) {
  525. $the_processed_table[$student_id][$outcome_id] = array(
  526. "criteria_attempted" => $result->criteria_attempted,
  527. "criteria_achieved" => $result->criteria_achieved,
  528. 'program_id' => $result->program_id,
  529. 'expected_outcome' => $expected_outcome
  530. );
  531. }
  532. //si este estudiante está pareado a este dominio, significa que ahora estoy en los
  533. //deprecated outcomes.
  534. else {
  535. $the_processed_table[$student_id][$outcome_id]['criteria_attempted'] += $result->criteria_attempted;
  536. $the_processed_table[$student_id][$outcome_id]['criteria_achieved'] += $result->criteria_achieved;
  537. }
  538. }
  539. foreach ($the_processed_table as $student_id => $outcome_ids) {
  540. foreach ($outcome_ids as $out_id => $crit_information) {
  541. $crit_att = $crit_information['criteria_attempted'];
  542. $crit_ach = $crit_information['criteria_achieved'];
  543. $program_id = $crit_information['program_id'];
  544. $expected_outcome = $crit_information['expected_outcome'];
  545. $grad_out_att[$out_id] += 1;
  546. if (!isset($program_out_att[$out_id][$program_id])) {
  547. $program_out_att[$out_id][$program_id] = 0;
  548. }
  549. $program_out_att[$out_id][$program_id] += 1;
  550. if ($crit_att != 0 && ($crit_ach / $crit_att) * 100 >= $expected_outcome) {
  551. if (!isset($program_out_ach[$out_id][$program_id])) {
  552. $program_out_ach[$out_id][$program_id] = 0;
  553. }
  554. $program_out_ach[$out_id][$program_id] += 1;
  555. $grad_out_ach[$out_id] += 1;
  556. }
  557. }
  558. }
  559. $array_to_send['graduate_info']['outcomes_attempted_combined'] = $grad_out_att;
  560. $array_to_send['graduate_info']['outcomes_achieved_combined'] = $grad_out_ach;
  561. $array_to_send['graduate_info']['programs_attempted_combined'] = $program_out_att;
  562. $array_to_send['graduate_info']['programs_achieved_combined'] = $program_out_ach;
  563. Log::info($array_to_send);
  564. return $array_to_send;
  565. }
  566. }