where('outcome_id', $outcome_id); } if ($program_id) { $objectives->where('program_id', $program_id); } if ($format == 'select') { $string = ''; foreach ($objectives->get() as $objective) { $string .= ''; } echo $string; return; } else { return $objectives->get(); } } catch (Exception $e) { echo $e->getMessage(); return; } } /** * Edit the learning objectives per learning outcome for a program */ public function index($program) { $role = Auth::user()->role; // Redirect users if they try to access forbidden page if ($role == 2 && $program->school_id != Auth::user()->school_id) { return Redirect::to('/'); } else if ($role == 3 && !in_array($program->id, Auth::user()->programs->lists('id'))) { return Redirect::to('/'); } else if ($role == 4) { return Redirect::to('/'); } $title = 'Learning Objectives (' . $program->name . ')'; $objectives = $program->objectives; // Eager load outcomes related to objectives // $program->load('outcomes'); // $outcomes = Outcome::select('id', 'name')->get(); return View::make('local.managers.shared.objectives.index', compact('title', 'objectives', 'role', 'program', 'outcomes')); } public function create() { try { $outcome_id = Input::get('outcome_id'); $program_id = Input::get('program_id'); $learning_objective = trim(Input::get('learning_objective')); $validator = Validator::make( array( 'outcome_id' => $outcome_id, 'program_id' => $program_id, 'learning_objective' => $learning_objective ), array( 'outcome_id' => 'required|integer', 'program_id' => 'required|integer', 'learning_objective' => 'required|min:1', ) ); if ($validator->fails()) { /** Prepare error message */ $message = '

Error(s) creating a new Learning Objective:

'; /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', $message); return Redirect::back()->withInput(); } DB::table('objectives')->insert(array( 'outcome_id' => $outcome_id, 'program_id' => $program_id, 'text' => $learning_objective )); /** Send success message */ Session::flash('status', 'success'); Session::flash('message', 'New Learning Objective successfully created.'); return Redirect::back(); } catch (Exception $e) { /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', 'An error ocurred trying to create a new Learning Objective. Please try again later.' . $e->getMessage()); return Redirect::back()->withInput(); } } /** * Update objective */ public function update() { try { $outcome_id = Input::get('edit_outcome_id'); $objective_id = Input::get('edit_objective_id'); $active = Input::get('edit_active'); $learning_objective = trim(Input::get('edit_learning_objective')); $validator = Validator::make( array( 'outcome_id' => $outcome_id, 'objective_id' => $objective_id, 'active' => $active, 'learning_objective' => $learning_objective ), array( 'outcome_id' => 'required|integer', 'objective_id' => 'required|integer', 'active' => 'required|integer|boolean', 'learning_objective' => 'required|min:1', ) ); if ($validator->fails()) { /** Prepare error message */ $message = '

Error(s) updating the Learning Objective:

'; /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', $message); return Redirect::back()->withInput(); } DB::table('objectives') ->where('id', $objective_id) ->update(array( 'outcome_id' => $outcome_id, 'text' => $learning_objective, 'active' => $active, )); /** Send success message */ Session::flash('status', 'success'); Session::flash('message', 'Learning Objective successfully updated.'); return Redirect::back(); } catch (Exception $e) { /** Send error message and old data */ Session::flash('status', 'danger'); Session::flash('message', 'An error ocurred trying to create a new Learning Objective. Please try again later.' . $e->getMessage()); return Redirect::back()->withInput(); } } /** * Check what this was for * @return [type] [description] */ public function fetchObjective() { $validator = Validator::make( array( 'objective_id' => Input::get('objective_id') ), array( 'objective_id' => 'required|integer', ) ); if ($validator->fails()) { return ''; } $res = DB::table('objectives')->where('id', Input::get('objective_id'))->first(); return json_encode($res); } public function fetchObjectiveForCriteria() { $id = Input::get('id'); //$objective = Objective::find($id); $objective = DB::table('objectives') ->where('id', $id) ->first(); $role = Auth::user()->role; switch ($role) { case 1: $program_ids = DB::table('programs')->lists('id'); # code... break; case 2: $program_ids = DB::table('programs') ->where('school_id', Auth::user()->school_id) ->lists('id'); break; case 3: case 4: $program_ids = DB::table('program_user') ->where('user_id', Auth::user()->id) ->lists('program_id'); break; } $criteria_scales = DB::table('criteria') ->join('criterion_objective_outcome as cobo', 'criterion_id', '=', 'criteria.id') ->join('program_criterion', 'cobo.criterion_id', '=', 'program_criterion.criterion_id') ->whereIn('program_id', $program_ids) ->where('objective_id', $objective->id) ->select('num_scales') ->orderBy('num_scales', 'DESC') ->distinct() ->lists('num_scales'); $objective->criteria = []; foreach ($criteria_scales as $i => $num_scales) { $objective->criteria[$num_scales] = DB::table('criteria') ->join('criterion_objective_outcome as cobo', 'cobo.criterion_id', '=', 'criteria.id') ->join('program_criterion', 'program_criterion.criterion_id', '=', 'criteria.id') ->whereIn('program_id', $program_ids) ->where('objective_id', $objective->id) ->where('num_scales', $num_scales) ->select('criteria.*', 'cobo.criterion_id') ->distinct() ->get(); foreach ($objective->criteria[$num_scales] as $criteria) { $criteria->programs = DB::table('programs') ->join('program_criterion', 'programs.id', '=', 'program_criterion.program_id') ->where('criterion_id', $criteria->criterion_id) ->get(); $criteria->outcomes = DB::table('outcomes') ->join('criterion_objective_outcome', 'outcomes.id', '=', 'criterion_objective_outcome.outcome_id') ->where('objective_id', $objective->id) ->where('criterion_id', $criteria->criterion_id) ->select('outcomes.*') ->get(); $criteria->scales = DB::table('criterion_scale') ->join('scales', 'criterion_scale.scale_id', '=', 'scales.id') ->where('criterion_id', $criteria->criterion_id) ->orderBy('position', 'asc') ->get(); } } //$objective->program; //$objective->criteria; return array( 'objective' => $objective ); } }