$objectivesArray['id'], 'text' => $objectivesArray['text'], 'outcome_id');
//}
return json_encode($json);
}
public function isCriterionUnique($input, $existing_criterion = NULL)
{
// dd($input);
Log::info('isCriterionUnique');
if (Input::get('program_id') != 0)
$program_id = $input['program_id'];
else
$program_id = NULL;
$saved_criterion = Criterion::withTrashed()
->where('name', '=', $input['name'])
->where('outcome_id', '=', $input['outcome_id'])
->where('program_id', '=', $program_id)
// ->where('description12', '=', $input['description12'])
// ->where('description34', '=', $input['description34'])
// ->where('description56', '=', $input['description56'])
// ->where('description78', '=', $input['description78'])
->first();
if ($saved_criterion)
return false;
else
return true;
}
private function cleanInput()
{
$clean_input = array();
$clean_input['name'] = trim(preg_replace('/\t+/', '', Input::get('name')));
$trimmed = trim(preg_replace('/\t+/', '', Input::get('subcriteria')));
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['subcriteria'] = $trimmed;
$clean_input['outcome_id'] = Input::get('outcome');
$clean_input['objective_id'] = Input::get('objective');
$clean_input['program_id'] = trim(preg_replace('/\t+/', '', Input::get('program_id')));
$clean_input['description12'] = trim(preg_replace('/\t+/', '', Input::get('description12')));
$clean_input['description34'] = trim(preg_replace('/\t+/', '', Input::get('description34')));
$clean_input['description56'] = trim(preg_replace('/\t+/', '', Input::get('description56')));
$clean_input['description78'] = trim(preg_replace('/\t+/', '', Input::get('description78')));
$clean_input['copyright'] = trim(preg_replace('/\t+/', '', Input::get('copyright')));
$clean_input['notes'] = trim(preg_replace('/\t+/', '', Input::get('notes')));
$clean_input['maximum_score'] = 8;
$clean_input['number_of_scales'] = 4;
return $clean_input;
}
private function makeValidator($clean_input)
{
/** Validation rules */
return Validator::make(
array(
'name' => $clean_input['name'],
'subcriteria' => $clean_input['subcriteria'],
'outcome_id' => $clean_input['outcome_id'],
'description12' => $clean_input['description12'],
'description34' => $clean_input['description34'],
'description56' => $clean_input['description56'],
'description78' => $clean_input['description78'],
'notes' => $clean_input['notes'],
'copyright' => $clean_input['copyright'],
),
array(
'name' => 'required|string',
'subcriteria' => 'string',
'outcome_id' => 'required|array',
'description12' => 'required|string',
'description34' => 'required|string',
'description56' => 'required|string',
'description78' => 'required|string',
'notes' => 'string',
'copyright' => 'string',
),
array(
'description12.required' => 'The Beginning (1-2) field is required.',
'description34.required' => 'The In Progress (3-4) field is required.',
'description56.required' => 'The Satisfactory (5-6) field is required.',
'description78.required' => 'The Excellent (7-8) field is required.',
)
);
}
/**
* Create a new criterion.
*
* @return Redirect Redirect back to form page
*/
public function create()
{
$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 Criterion:
';
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::to('criteria')->withInput();
} else {
// Check criterion uniqueness
/*if (!$this->isCriterionUnique($clean_input)) {
/** Send error message and old data
Session::flash('status', 'danger');
Session::flash('message', 'This criterion is a duplicate of an already saved criterion because its name and associated program are the same.');
return Redirect::to('criteria')->withInput();
}*/
/** Instantiate new criterion */
$criterion = new Criterion;
$criterion->name = $clean_input['name'];
$criterion->subcriteria = $clean_input['subcriteria'];
$criterion->description12 = $clean_input['description12'];
$criterion->description34 = $clean_input['description34'];
$criterion->description56 = $clean_input['description56'];
$criterion->description78 = $clean_input['description78'];
//gabriel añadió aqui
$criterion->objective_id = 1; //$clean_input['objective_id'];
if (Input::get('copyright'))
$criterion->copyright = $clean_input['copyright'];
if (Input::get('notes'))
$criterion->notes = $clean_input['notes'];
// Set program
if (Input::get('program_id') != 0)
$criterion->program_id = $clean_input['program_id'];
else
$criterion->program_id = NULL;
/** If criterion is saved, send success message */
if ($criterion->save()) {
$criterionId = $criterion->id;
foreach ($clean_input['outcome_id'] as $outcome_id) {
foreach ($clean_input['objective_id'] as $objective_id) {
//try{
DB::insert("insert into `criterion_objective_outcome` (`objective_id`, `outcome_id`, `criterion_id`, `objective_outcome_id`) values ({$objective_id},{$outcome_id}, {$criterionId}, 0)");
// }
//catch{
//Session::flash('status', 'danger');
//Session::flash('message', 'Error creating objective. Please try again later.
');
//return Redirect::to('objective')->withInput();
//}
}
}
Session::flash('status', 'success');
Session::flash('message', 'Criterion created: "' . $criterion->name . '".');
return Redirect::to('criteria')->withInput(Input::only('outcome_id'));
}
/** If saving fails, send error message and old data */
else {
Session::flash('status', 'danger');
Session::flash('message', 'Error creating Criterion. Please try again later.
');
return Redirect::to('learning-outcomes-criteria')->withInput();
}
}
}
public function edit()
{
$title = "Criteria";
$outcomes = Outcome::orderBy('name', 'ASC')->lists('name', 'id');
$schools = School::orderBy('name', 'ASC')->get();
$criteria = Criterion::withTrashed()->orderBy('name', 'ASC')->get();
$programs = Program::orderBy('name', 'ASC')->get();
$objectives = DB::table('objectives')->orderBy('text', 'ASC')->lists('text', 'id');
return View::make('local.managers.admins.criteria', compact('title', 'outcomes', 'schools', 'criteria', 'programs', 'objectives'));
}
private function cleanInputEdit()
{
$clean_input = array();
$clean_input['name'] = trim(preg_replace('/\t+/', '', Input::get('name')));
$trimmed = trim(preg_replace('/\t+/', '', Input::get('subcriteria')));
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['subcriteria'] = $trimmed;
$clean_input['outcome_id'] = Input::get('assoc_outcome');
$clean_input['objective_id'] = Input::get('assoc_objective');
$clean_input['program_id'] = trim(preg_replace('/\t+/', '', Input::get('program_id')));
$clean_input['description12'] = trim(preg_replace('/\t+/', '', Input::get('description12')));
$clean_input['description34'] = trim(preg_replace('/\t+/', '', Input::get('description34')));
$clean_input['description56'] = trim(preg_replace('/\t+/', '', Input::get('description56')));
$clean_input['description78'] = trim(preg_replace('/\t+/', '', Input::get('description78')));
$clean_input['copyright'] = trim(preg_replace('/\t+/', '', Input::get('copyright')));
$clean_input['notes'] = trim(preg_replace('/\t+/', '', Input::get('notes')));
$clean_input['maximum_score'] = 8;
$clean_input['number_of_scales'] = 4;
return $clean_input;
}
public function update()
{
$criterion = Criterion::withTrashed()->find(Input::get('id'));
$clean_input = $this->cleanInputEdit();
/** Validation rules */
$validator = $this->makeValidator($clean_input);
/** If validation fails */
if ($validator->fails()) {
/** Prepare error message */
$message = 'Error(s) updating the Criterion: ';
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();
} else {
// // Check criterion uniqueness
// if(!$this->isCriterionUnique($clean_input, $criterion))
// {
// /** Send error message and old data */
// Session::flash('status', 'danger');
// Session::flash('message', 'This criterion is a duplicate of an already saved criterion because its name, assoaciated school or program, and progress indicators are the same.');
// return Redirect::to('criteria')->withInput();
// }
/** Set info */
$criterion->name = $clean_input['name'];
$criterion->subcriteria = $clean_input['subcriteria'];
//$criterion->outcome_id = $clean_input['outcome_id'];
$criterion->description12 = $clean_input['description12'];
$criterion->description34 = $clean_input['description34'];
$criterion->description56 = $clean_input['description56'];
$criterion->description78 = $clean_input['description78'];
// Set program
if (Input::get('program_id') != 0)
$criterion->program_id = Input::get('program_id');
else
$criterion->program_id = NULL;
// Set status
if (Input::get('status') == 0)
$criterion->deleted_at = date('Y-m-d H:i:s');
else
$criterion->deleted_at = NULL;
if (Input::get('copyright'))
$criterion->copyright = $clean_input['copyright'];
else
$criterion->copyright = NULL;
if (Input::get('notes'))
$criterion->notes = $clean_input['notes'];
else
$criterion->notes = NULL;
/** If criterion is updated, send success message */
if ($criterion->save()) {
$criterionId = $criterion->id;
DB::delete("delete from `criterion_objective_outcome` where `criterion_id` ={$criterionId}");
foreach ($clean_input['outcome_id'] as $outcome_id) {
foreach ($clean_input['objective_id'] as $objective_id) {
DB::insert("insert into `criterion_objective_outcome` (`objective_id`, `outcome_id`, `criterion_id`,`objective_outcome_id`) values ({$objective_id},{$outcome_id}, {$criterionId}, 0)");
}
}
Session::flash('status', 'success');
Session::flash('message', 'Updated criterion: "' . $criterion->name . '"');
return Redirect::back();
}
/** If saving fails, send error message and old data */
else {
Session::flash('status', 'danger');
Session::flash('message', 'Error updating the Criterion. Please try again later.');
return Redirect::back()->withInput();
}
}
}
public function index()
{
$title = "Learning Outcomes and Criteria";
$outcomes = Outcome::orderBy('name', 'ASC')->get();
$schools = School::orderBy('name', 'ASC')->get();
$criteria = Criterion::withTrashed()->orderBy('name', 'ASC')->get();
return View::make('global.view-learning-outcomes-criteria', compact('title', 'outcomes', 'schools', 'criteria'));
}
public function destroy()
{
$criterion = Criterion::withTrashed()->find(Input::get('id'));
if (!$criterion->trashed()) {
try {
$criterion->delete();
Session::flash('status', 'success');
Session::flash('message', 'Deactivated criterion: "' . $criterion->name . '"');
} catch (Exception $e) {
Session::flash('status', 'danger');
Session::flash('message', 'Error deactivating criterion."' . $criterion->name . '"');
}
return Redirect::back();
} else {
try {
$criterion->restore();
Session::flash('status', 'success');
Session::flash('message', 'Reactivated criterion: "' . $criterion->name . '"');
} catch (Exception $e) {
Session::flash('status', 'danger');
Session::flash('message', 'Error reactivating criterion: "' . $criterion->name . '".');
}
return Redirect::back();
}
}
public function filterCriteria()
{
switch (Input::get('filter')) {
case 'all':
return Criteria::all();
break;
case 'school':
// If scoord
if (Auth::user()->role == '2') {
// Fetch all the programs whose school is the user's
$program_ids = DB::table('programs')->where('school_id', Auth::user()->school_id)->lists('id');
// Return all criteria belonging to any of those programs
return Criterion::whereIn('program_id', $program_ids)
->orderBy('name', 'ASC')
->get();
}
// If pcoord
else {
// Fetch all the programs from the user's school;
$program_ids = DB::table('programs')->where('school_id', Auth::user()->programs[0]->school->id)->lists('id');
return Criterion::whereIn('program_id', $program_ids)
->orderBy('name', 'ASC')
->get();
}
break;
case 'program':
return Criterion::whereIn('program_id', Auth::user()->programs->lists('id'))
->orderBy('name', 'ASC')
->get();
break;
default:
return Criteria::all();
break;
}
}
}