lists('name', 'id'); $schools = School::orderBy('name', 'ASC')->get(); $criteria = Criterion::withTrashed()->orderBy('name', 'ASC')->get(); $programs = Program::orderBy('name', 'ASC')->get(); $user_id = auth::user()->id; $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; //program id 15 debido al user 8 $outcomes = Outcome::orderBy('name', 'ASC') ->where('deactivation_date', '=', '0000-00-00') ->orWhereNull('deactivation_date') ->get(); $objectives = array(); // if user is program coordinator if ($role == 3) { //1 edit panel: load the TA that // are custom ('transformative_actions.by_professor' == 0) // were approved in past ('transformative_actions.is_custom' == 1) $ta_edit_panel = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->orderBy('at_text', 'ASC') ->get(); //2 approve panel: load TAs that // can be approved ('transformative_actions.by_professor' == 1) $ta_approval_panel = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->orderBy('at_text', 'ASC') ->get(); //2.1 approve panel: load the filter options. // the "->where()" should be the same from $ta_approval_panel, // but with aditional joins and different select // // get the names of the professors $professor_filter_approvePanel = DB::table('transformative_actions') ->join('users', 'users.id', '=', 'transformative_actions.user_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('users.*') ->groupby('transformative_actions.user_id') ->orderBy('users.first_name', 'ASC') ->get(); // get the courses from asociated with a TA $course_filter_approvePanel = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('courses.*') ->groupBy('courses.name', 'courses.code') ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->get(); // get the outcome asociated with a TA $outcome_filter_approvePanel = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('outcomes.*') ->groupBy('outcomes.id') ->orderBy('outcomes.name', 'ASC') ->get(); //3 edit panel: load the filter options. // the "->where()" should be the same from $ta_edit_panel, // but with aditional joins and different select // $professor_filter_editPanel = DB::table('transformative_actions') ->join('users', 'users.id', '=', 'transformative_actions.user_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('users.*') ->groupby('transformative_actions.user_id') ->orderBy('users.first_name', 'ASC') ->get(); $course_filter_editPanel = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('courses.*') ->groupBy('courses.name', 'courses.code') ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->get(); $outcome_filter_editPanel = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('outcomes.*') ->groupBy('outcomes.id') ->orderBy('outcomes.name', 'ASC') ->get(); // 4 create panel: search all courses $courses_create = DB::table('courses') ->where('courses.program_id', $program_id) ->select('courses.*') ->groupBy('courses.name', 'courses.code') ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->get(); } // if user is profesor elseif ($role == 4) { // 1 the user can only edit TA that need approval and has been submited by the same user $ta_edit_panel = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.by_professor', 1) ->select('transformative_actions.*') ->orderBy('at_text', 'ASC') ->get(); // 2 approve panel: dont load TA since professors cant approve them $ta_approval_panel = array(); // 3 edit panel: load professor filter for his courses $professor_filter_editPanel = array(); $course_filter_editPanel = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('courses.*') ->groupBy('courses.name', 'courses.code') ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->get(); $outcome_filter_editPanel = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('outcomes.*') ->groupBy('outcomes.id') ->orderBy('outcomes.name', 'ASC') ->get(); // these arent used by professors $professor_filter_approvePanel = array(); $course_filter_approvePanel = array(); $outcome_filter_approvePanel = array(); // 4 create panel: search courses given by the professor $courses_create = DB::table('courses') ->where('courses.program_id', $program_id) ->where('courses.user_id', Auth::user()->id) ->select('courses.*') ->groupBy('courses.name', 'courses.code') ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->get(); } return View::make('local.managers.admins.transformativeAction', compact( 'title', 'role', 'outcomes', 'schools', 'criteria', 'programs', 'outcomes', 'objectives', 'ta_edit_panel', 'ta_approval_panel', 'courses_create', 'professor_filter_approvePanel', 'course_filter_approvePanel', 'outcome_filter_approvePanel', 'professor_filter_editPanel', 'outcome_filter_editPanel', 'course_filter_editPanel' )); } private function cleanInput() { $clean_input = array(); $trimmed = trim(preg_replace('/\t+/', '', Input::get('text'))); Log::info('trimmed 1 -->' . $trimmed . '<--'); // if ($trimmed == '') { // $trimmed = NULL; // } else { // $trimmed = json_encode(preg_split('/\r\n/', $trimmed)); // } Log::info('trimmed 2 -->' . $trimmed . '<--'); $clean_input['text'] = $trimmed; ////// $trimmed = trim(preg_replace('/\t+/', '', Input::get('description'))); Log::info('trimmed 3 -->' . $trimmed . '<--'); // if ($trimmed == '') { // $trimmed = NULL; // } else { // $trimmed = json_encode(preg_split('/\r\n/', $trimmed)); // } Log::info('trimmed 4 -->' . $trimmed . '<--'); $clean_input['description'] = $trimmed; $clean_input['objectiveid'] = Input::get('objectiveid'); $clean_input['courseid'] = Input::get('courseid'); $clean_input['approval'] = Input::get('approval'); $clean_input['ta_id'] = Input::get('ta_id'); return $clean_input; } private function makeValidator($clean_input) { /** Validation rules */ return Validator::make( array( 'text' => $clean_input['text'], 'description' => $clean_input['description'], 'objectiveid' => $clean_input['objectiveid'], 'courseid' => $clean_input['courseid'], 'approval' => $clean_input['approval'], 'ta_id' => $clean_input['ta_id'], ), array( 'text' => 'required|string', 'description' => 'required|string', 'objectiveid' => 'required|array', 'courseid' => 'required|array', 'approval' => 'integer', 'ta_id' => 'integer', ) ); } // Create a Transformative Action public function createTA() { $clean_input = $this->cleanInput(); /** Validation rules */ $validator = $this->makeValidator($clean_input); /** If validation fails */ if ($validator->fails()) { /** Prepare error message */ $message = '

Error(s) creating a new Transformative Action:

'; /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } else { $user_id = auth::user()->id; $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; $role = Auth::user()['role']; $by_professor = 1; if ($role == 3) { $by_professor = 0; } // $by_professor = $clean_input['approval']; $current_timestamp = date('Y/m/d H:i:s', time()); // insert the TA $ta_id = DB::table('transformative_actions')->insertGetId( array( 'at_text' => $clean_input['text'], 'description' => $clean_input['description'], 'is_custom' => 1, 'user_id' => $user_id, 'program_id' => $program_id, 'created_at' => $current_timestamp, 'by_professor' => $by_professor, ) ); // // // insert the multiple TA_objective_program foreach ($clean_input['objectiveid'] as $objective_id) { DB::table('transformative_objective_course')->insert( array( 'ta_id' => $ta_id, 'objective_id' => $objective_id, 'program_id' => $program_id, 'created_at' => $current_timestamp, ) ); } // // // insert the multiple TA_course foreach ($clean_input['courseid'] as $course_id) { DB::table('TA_course')->insert( array( 'ta_id' => $ta_id, 'course_id' => $course_id, ) ); } Session::flash('status', 'success'); Session::flash('message', 'Transformative Action created: "' . $clean_input['text'] . '".'); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } } // apporve a Transformative Action public function approveTA() { $role = Auth::user()['role']; if ($role != 3) { $message = 'Only Program Coordinators can approve a TA'; Session::flash('status', 'danger'); Session::flash('message', $message); return Redirect::to('transformativeAction')->withInput(); } $ta_id = Input::get('ta_id'); $text = Input::get('at_text'); if ($ta_id == 0) { $message = 'Please select a Transformative Action

'; Session::flash('status', 'danger'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } $current_timestamp = date('Y/m/d H:i:s', time()); // edit the TA DB::table('transformative_actions') ->where('id', $ta_id) ->update([ 'by_professor' => 0, 'updated_at' => $current_timestamp, ]); Session::flash('status', 'success'); Session::flash('message', 'Approved the Transformative Action: "' . $text . '".'); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } // update a Tranformative Action public function updateTA() { $clean_input = $this->cleanInput(); /** Validation rules */ $validator = $this->makeValidator($clean_input); /** If validation fails */ if ($validator->fails()) { /** Prepare error message */ $message = 'Error(s) updating the Transformative Action: '; /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } else { $user_id = auth::user()->id; $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; $role = Auth::user()['role']; $by_professor = $clean_input['approval']; if ($role == 4) { $by_professor = 1; } // $by_professor = $clean_input['approval']; $current_timestamp = date('Y/m/d H:i:s', time()); // edit the TA DB::table('transformative_actions') ->where('id', $clean_input['ta_id']) ->update([ 'by_professor' => $by_professor, 'at_text' => $clean_input['text'], 'description' => $clean_input['description'], 'updated_at' => $current_timestamp, ]); $ta_id = $clean_input['ta_id']; $new_objective_id = $clean_input['objectiveid']; $old_objective_id = DB::table('transformative_objective_course') ->where('ta_id', $ta_id) ->select('objective_id') ->lists('objective_id'); //delete existing objective_id if it isnt in new_ids array foreach ($old_objective_id as $old_id) { if (in_array($old_id, $new_objective_id)) { //do nothing if a new id is already in atble } else { //if old id not in new id, delete DB::table('transformative_objective_course') ->where('ta_id', $ta_id) ->where('objective_id', $old_id) ->delete(); } } // foreach ($new_objective_id as $new_id) { $result = DB::table('transformative_objective_course') ->where('objective_id', $new_id) ->select('objective_id') ->lists('objective_id'); if (count($result) == 0) { //if the new_id does not exists, do nothing DB::table('transformative_objective_course')->insert( array( 'ta_id' => $ta_id, 'objective_id' => $new_id, 'program_id' => $program_id, 'created_at' => $current_timestamp, ) ); } else { //if the new_id already exists, do nothing } } $new_course_id = $clean_input['courseid']; $old_course_id = DB::table('ta_course') ->where('ta_id', $ta_id) ->select('course_id') ->lists('course_id'); //delete existing course_id if it isnt in new_ids array foreach ($old_course_id as $old_id) { if (in_array($old_id, $new_course_id)) { //do nothing if a new id is already in atble } else { //if old id not in new id, delete DB::table('ta_course') ->where('ta_id', $ta_id) ->where('course_id', $old_id) ->delete(); } } //add course_id if it isnt already inserted foreach ($new_course_id as $new_id) { $result = DB::table('ta_course') ->where('ta_id', $ta_id) ->where('course_id', $new_id) ->select('course_id') ->lists('course_id'); if (count($result) == 0) { //if the new_id does not exists, do nothing DB::table('ta_course')->insert( array( 'ta_id' => $ta_id, 'course_id' => $new_id, ) ); } else { //if the new_id already exists, do nothing } } Session::flash('status', 'success'); Session::flash('message', 'Updated Transformative Action: "' . $clean_input['text'] . '".'); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } } // delete a Transformative Action public function deleteTA() { $ta_id = array(Input::get('ta_id')); // si envia id 0, el backend se queja en la linea: $ta = $ta[0]; // nunca deberia ocurrir, pero es un safity measure. if ($ta_id == 0) { $message = 'Please select a Transformative Action

'; Session::flash('status', 'danger'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } $ta = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('id', $ta_id) ->get(); $ta = $ta[0]; $used = DB::table('annual_plan_transformative') ->where('id', $ta_id) ->get(); $recommended = $ta->by_professor; // the TA can only be deleted if error if the TA is not currently as "Recommended" // and isnt used in an anual plan if ($recommended == 1 && count($used) == 0) { // delete the TA if it qualifies DB::delete("delete from transformative_actions where id = ?", $ta_id); $name = $ta->at_text; $message = 'The Transformative Action has been deleted:

'; Session::flash('status', 'success'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } $message = 'Transformative Actions can only be deleted if:

'; Session::flash('status', 'danger'); Session::flash('message', $message); $role = Auth::user()['role']; return Redirect::to('transformativeAction')->withInput(); } // load the information of a Tranformative Action when its // selected on the approve or edit panel public function selectTA() { $ta_id = Input::get("ta_id"); $user_id = Auth::user()->id; $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; $objectives = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('objectives', 'objectives.id', '=', 'transformative_objective_course.objective_id') ->where('transformative_actions.id', $ta_id) ->select('objectives.text as text', 'objectives.id as id') ->orderBy('objectives.text', 'ASC') ->get(); $an_objective = $objectives[0]->id; $outcome_id = DB::table('criterion_objective_outcome') ->where('criterion_objective_outcome.objective_id', $an_objective) ->select('criterion_objective_outcome.outcome_id') ->get(); $outcome_id = $outcome_id[0]->outcome_id; $objectives_from_outcome = DB::table('objectives') ->join('objective_program', 'objective_program.objective_id', '=', 'objectives.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'objectives.id') ->where('criterion_objective_outcome.outcome_id', $outcome_id) ->where('objective_program.program_id', $program_id) ->orderBy('objectives.text', 'ASC') ->select('objectives.text as text', 'objectives.id as id') ->get(); $selected_courses = DB::table('ta_course') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('ta_id', $ta_id) ->orderBy('courses.name', 'ASC') ->orderBy('courses.code', 'ASC') ->select('courses.*') ->get(); $name = DB::table('transformative_actions') ->where('id', $ta_id) ->select('at_text as name') ->lists('name'); $description = DB::table('transformative_actions') ->where('id', $ta_id) ->select('description') ->lists('description'); $status = DB::table('transformative_actions') ->where('id', $ta_id) ->select('by_professor as status') ->lists('status'); $status = $status[0]; $plans_count = DB::table('annual_plan_transformative') ->where('id', $ta_id) ->get(); $plans_count = count($plans_count); $can_be_deleted = false; if ($plans_count == 0 && $status == 1) { $can_be_deleted = true; } return array( 'objectives' => $objectives, 'objectives_from_outcome' => $objectives_from_outcome, 'selected_courses' => $selected_courses, 'name' => $name, 'description' => $description, 'status' => $status, 'can_be_deleted' => $can_be_deleted, 'plans_count' => $plans_count, ); } // load the available objectieves from an outcome when creating a Tranformative Action public function objectivesFromOutcome() { $user_id = Auth::user()->id; $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; $ta_id = Input::get("ta_id"); $outcome_id = Input::get("outcome_id"); $objectives = DB::table('objectives') ->join('objective_program', 'objective_program.objective_id', '=', 'objectives.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'objectives.id') ->where('criterion_objective_outcome.outcome_id', $outcome_id) ->where('objective_program.program_id', $program_id) ->orderBy('objectives.text', 'ASC') ->select('objectives.text as text', 'objectives.id as id') ->get(); return array( 'objectives' => $objectives, ); } // return Transformative Actions that meet the filter criterias public function filterTA() { $user_id = Auth::user()->id; $role = Auth::user()['role']; $professor_id = Input::get('professor_id'); $course_id = Input::get('course_id'); $outcome_id = Input::get('outcome_id'); $panel_id = Input::get('panel_id'); $program_id = DB::table('program_user') ->where('user_id', $user_id) ->select('program_id') ->get(); $program_id = $program_id[0]->program_id; // if the user is a coordinator filtering the approvePanel if ($role == '3' && $panel_id == 'approvePanel') { // if professor isnt a desired filter, search all professors if ($professor_id == 0) { $all_ta_users = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('transformative_actions.user_id') ->get(); $professor_id = array(); foreach ($all_ta_users as $key => $user) { array_push($professor_id, $user->user_id); } } else { $professor_id = array($professor_id); } // if course isnt a desired filter, search all courses if ($course_id == 0) { $courses = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('courses.id') ->get(); $course_id = array(); foreach ($courses as $key => $course) { array_push($course_id, $course->id); } } else { $course_id = array($course_id); } // if outcome isnt a desired filter, search all outcomes if ($outcome_id == 0) { $outcomes = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('outcomes.id') ->groupBy('outcomes.id') ->get(); $outcome_id = array(); foreach ($outcomes as $key => $outcome) { array_push($outcome_id, $outcome->id); } } else { $outcome_id = array($outcome_id); } // search TA with filters $filtered_at = DB::table('transformative_actions') ->join('ta_course', 'ta_course.ta_id', '=', 'transformative_actions.id') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->whereIn('transformative_actions.user_id', $professor_id) ->whereIn('criterion_objective_outcome.outcome_id', $outcome_id) ->whereIn('ta_course.course_id', $course_id) ->select('transformative_actions.*') ->groupBy('transformative_actions.id') ->orderBy('transformative_actions.at_text', 'ASC') ->get(); return $filtered_at; } // if the user is a coordinator filtering the editPanel elseif ($role == '3' && $panel_id == 'editPanel') { // if professor isnt a desired filter, search all professors if ($professor_id == 0) { $all_ta_users = DB::table('transformative_actions') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('transformative_actions.user_id') ->get(); $professor_id = array(); foreach ($all_ta_users as $key => $user) { array_push($professor_id, $user->user_id); } } else { $professor_id = array($professor_id); } // if course isnt a desired filter, search all courses if ($course_id == 0) { $courses = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('courses.id') ->get(); $course_id = array(); foreach ($courses as $key => $course) { array_push($course_id, $course->id); } } else { $course_id = array($course_id); } // if outcome isnt a desired filter, search all outcomes if ($outcome_id == 0) { $outcomes = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->select('outcomes.id') ->groupBy('outcomes.id') ->get(); $outcome_id = array(); foreach ($outcomes as $key => $outcome) { array_push($outcome_id, $outcome->id); } } else { $outcome_id = array($outcome_id); } // search TA with filters $filtered_at = DB::table('transformative_actions') ->join('ta_course', 'ta_course.ta_id', '=', 'transformative_actions.id') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 0) ->whereIn('transformative_actions.user_id', $professor_id) ->whereIn('criterion_objective_outcome.outcome_id', $outcome_id) ->whereIn('ta_course.course_id', $course_id) ->select('transformative_actions.*') ->groupBy('transformative_actions.id') ->orderBy('transformative_actions.at_text', 'ASC') ->get(); return $filtered_at; } // if the user is a professor filtering the editPanel elseif ($role == '4' && $panel_id == 'editPanel') { // if course isnt a desired filter, search all courses if ($course_id == 0) { $courses = DB::table('ta_course') ->join('transformative_actions', 'transformative_actions.id', '=', 'ta_course.ta_id') ->join('courses', 'courses.id', '=', 'ta_course.course_id') ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('courses.id') ->get(); $course_id = array(); foreach ($courses as $key => $course) { array_push($course_id, $course->id); } } else { $course_id = array($course_id); } // if outcome isnt a desired filter, search all outcomes if ($outcome_id == 0) { $outcomes = DB::table('transformative_actions') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->join('outcomes', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->select('outcomes.id') ->groupBy('outcomes.id') ->get(); $outcome_id = array(); foreach ($outcomes as $key => $outcome) { array_push($outcome_id, $outcome->id); } } else { $outcome_id = array($outcome_id); } // search TA with filters $filtered_at = DB::table('transformative_actions') ->join('ta_course', 'ta_course.ta_id', '=', 'transformative_actions.id') ->join('transformative_objective_course', 'transformative_objective_course.ta_id', '=', 'transformative_actions.id') ->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective_course.objective_id') ->where('transformative_actions.user_id', Auth::user()->id) ->where('transformative_actions.is_custom', 1) ->where('transformative_actions.program_id', $program_id) ->where('transformative_actions.by_professor', 1) ->whereIn('criterion_objective_outcome.outcome_id', $outcome_id) ->whereIn('ta_course.course_id', $course_id) ->select('transformative_actions.*') ->groupBy('transformative_actions.id') ->orderBy('transformative_actions.at_text', 'ASC') ->get(); return $filtered_at; } return 'ilegal'; } }