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:
';
foreach ($validator->messages()->all('- :message
') as $validationError) {
$message .= $validationError;
}
$message .= '
';
/** 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:
';
foreach ($validator->messages()->all('- :message
') as $validationError) {
$message .= $validationError;
}
$message .= '
';
/** 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
);
}
}