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;
switch ($role) {
case 3:
$program_id = DB::table('program_user')
->where('user_id', $user_id)
->select('program_id')
->lists('program_id');
break;
case 2:
$program_id = DB::table('programs')
->where('school_id', Auth::user()->school_id)
->lists('id');
break;
}
/*$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();
$types = DB::table('transformative_actions')
->select('type_of_TA')
->where('type_of_TA', '<>', '')
->groupBy('type_of_TA')
->get();
// if user is program coordinator
//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)
->whereIn('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)
->whereIn('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)
->whereIn('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', function ($join) {
$join->on('courses.number', '=', 'ta_course.course_number');
$join->on('courses.code', '=', 'ta_course.course_code');
})
->where('transformative_actions.is_custom', 1)
->whereIn('transformative_actions.program_id', $program_id)
->where('transformative_actions.by_professor', 1)
->select('courses.*')
->groupBy('courses.number', 'courses.code', 'courses.name')
->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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.objective_id')
->join('outcomes', 'outcomes.id', '=', 'objective_outcome.outcome_id')
->where('transformative_actions.is_custom', 1)
->whereIn('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)
->whereIn('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', function ($join) {
$join->on('courses.number', '=', 'ta_course.course_number');
$join->on('courses.code', '=', 'ta_course.course_code');
})
->where('transformative_actions.is_custom', 1)
->whereIn('transformative_actions.program_id', $program_id)
->where('transformative_actions.by_professor', 0)
->select('courses.*')
->groupBy('courses.number', 'courses.code', 'courses.name')
->orderBy('courses.name', 'ASC')
->orderBy('courses.code', 'ASC')
->get();
$outcome_filter_editPanel = DB::table('transformative_actions')
->join('transformative_objective', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.objective_id')
->join('outcomes', 'outcomes.id', '=', 'objective_outcome.outcome_id')
->where('transformative_actions.is_custom', 1)
->whereIn('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')
->whereIn('courses.program_id', $program_id)
->select('courses.*')
->groupBy('courses.number', 'courses.code', 'courses.name')
->orderBy('courses.code', 'ASC')
->orderBy('courses.number', '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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('criterion_objective_outcome', 'criterion_objective_outcome.objective_id', '=', 'transformative_objective.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',
'types',
'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['type'] = Input::get('type_of_ta');
$clean_input['ta_id'] = Input::get('ta_id');
$clean_input['new_type'] = Input::get('new_type');
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'],
'type_of_ta' => $clean_input['type'],
),
array(
'text' => 'required|string',
'description' => 'required|string',
'objectiveid' => 'required|array',
'courseid' => 'required|string',
'approval' => 'integer',
'ta_id' => 'integer',
'type_of_ta' => 'required|string'
)
);
}
// 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:
';
foreach ($validator->messages()->all('- :message
') as $validationError) {
$message .= $validationError;
}
$message .= '
';
/** 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 != 4) {
$by_professor = 0;
}
Log::info($clean_input['courseid']);
// $by_professor = $clean_input['approval'];
$parentesis = array('(', ')');
$course_code_number = str_replace($parentesis, '', $clean_input['courseid']);
$course_code_number = explode(',', $course_code_number);
$program_id = DB::table('courses')
->where('code', $course_code_number[0])
->where('number', $course_code_number[1])
->select('program_id')
->first()->program_id;
$current_timestamp = date('Y/m/d H:i:s', time());
if ($clean_input['new_type']) $type = $clean_input['new_type'];
else $type = $clean_input['type'];
// 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,
'type_of_TA' => $type
)
);
//
// // insert the multiple TA_objective_program
foreach ($clean_input['objectiveid'] as $objective_id) {
DB::table('transformative_objective')->insert(
array(
'ta_id' => $ta_id,
'objective_id' => $objective_id,
)
);
}
//
// // insert the multiple TA_course
DB::table('ta_course')->insert(
array(
'ta_id' => $ta_id,
'course_number' => $course_code_number[1],
'course_code' => $course_code_number[0],
)
);
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());
if (Input::get('new_type')) {
$type = Input::get('new_type');
} else {
$type = Input::get('type_of_ta');
}
// edit the TA
DB::table('transformative_actions')
->where('id', $ta_id)
->update([
'by_professor' => 0,
'updated_at' => $current_timestamp,
'type_of_TA' => $type
]);
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: ';
foreach ($validator->messages()->all('- :message
') as $validationError) {
$message .= $validationError;
}
$message .= '
';
/** Send error message and old data */
Session::flash('status', 'danger');
Session::flash('message', $message);
$role = Auth::user()['role'];
return Redirect::to('transformativeAction')->withInput();
} else {
$parentesis = array('(', ')');
$course_code_number = str_replace($parentesis, '', $clean_input['courseid']);
$course_code_number = explode(',', $course_code_number);
$program_id = DB::table('courses')
->where('code', $course_code_number[0])
->where('number', $course_code_number[1])
->select('program_id')
->first()->program_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;*/
$role = Auth::user()['role'];
$by_professor = $clean_input['approval'];
if ($role == 4) {
$by_professor = 1;
}
// $by_professor = $clean_input['approval'];
if ($clean_input['new_type']) $type = $clean_input['new_type'];
else $type = $clean_input['type'];
$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,
'type_of_TA' => $type
]);
$ta_id = $clean_input['ta_id'];
$new_objective_id = $clean_input['objectiveid'];
$old_objective_id = DB::table('transformative_objective')
->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')
->where('ta_id', $ta_id)
->where('objective_id', $old_id)
->delete();
}
}
//
foreach ($new_objective_id as $new_id) {
$result = DB::table('transformative_objective')
->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')->insert(
array(
'ta_id' => $ta_id,
'objective_id' => $new_id,
// 'created_at' => $current_timestamp,
)
);
} else {
//if the new_id already exists, do nothing
}
}
DB::update(
"UPDATE `ta_course` set `course_number` = '{$course_code_number[1]}', `course_code` = '{$course_code_number[0]}' where ta_id = {$ta_id}"
);
/*$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:';
$message .= '- ' . $name . '
';
$message .= '
';
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:';
$message .= '- It has a status of "Recommended"
';
$message .= '- It is not currently used in a plan
';
$message .= '
';
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_role = Auth::user()->role;
switch ($user_role) {
case 1:
$program_ids = DB::table('programs')->lists('id');
break;
case 2:
$user_school = Auth::user()->school_id;
$program_ids = DB::table('programs')
->where('school_id', $user_school)
->lists('id');
break;
case 3:
$user_id = Auth::user()->id;
$program_ids = DB::table('program_user')
->where('user_id', $user_id)
->select('program_id')
->lists('program_id');
break;
}
//$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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objectives', 'objectives.id', '=', 'transformative_objective.objective_id')
->where('transformative_actions.id', $ta_id)
->where('objectives.id', '<>', 0)
->select('objectives.text as text', 'objectives.id as id')
->orderBy('objectives.text', 'ASC')
->get();
$objective_ids = DB::table('transformative_actions')
->join('transformative_objective', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objectives', 'objectives.id', '=', 'transformative_objective.objective_id')
->where('transformative_actions.id', $ta_id)
->where('objectives.id', '<>', 0)
->select('objectives.text as text', 'objectives.id as id')
->orderBy('objectives.text', 'ASC')
->lists('objectives.id');
Log::info($ta_id);
//$an_objective = $objectives[0]->id;
$outcome_ids = DB::table('objective_outcome')
->whereIn('objective_outcome.objective_id', $objective_ids)
->select('objective_outcome.outcome_id')
->lists('outcome_id');
//$outcome_id = $outcome_id[0]->outcome_id;
Log::info("outcomes");
Log::info($outcome_ids);
$objectives_from_outcome = DB::table('objectives')
->join('objective_program', 'objective_program.objective_id', '=', 'objectives.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
->whereIn('objective_outcome.outcome_id', $outcome_ids)
->whereIn('objective_program.program_id', $program_ids)
->where('objective_outcome.objective_id', '<>', 0)
->orderBy('objectives.text', 'ASC')
->select('objectives.text as text', 'objectives.id as id')
->distinct()
->get();
$selected_courses = DB::table('ta_course')
->join('courses', function ($join) {
$join->on('courses.number', '=', 'ta_course.course_number');
$join->on('courses.code', '=', 'ta_course.course_code');
})
->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('trans_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_role = Auth::user()->role;
switch ($user_role) {
case 1:
$program_ids = DB::table('programs')->lists('id');
break;
case 2:
$user_school = Auth::user()->school_id;
$program_ids = DB::table('programs')
->where('school_id', $user_school)
->lists('id');
break;
case 3:
$user_id = Auth::user()->id;
$program_ids = DB::table('program_user')
->where('user_id', $user_id)
->select('program_id')
->lists('program_id');
break;
}
//$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('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
->where('objective_outcome.outcome_id', $outcome_id)
->where('objective_outcome.objective_id', '<>', 0)
->whereIn('objective_program.program_id', $program_ids)
->orderBy('objectives.text', 'ASC')
->select('objectives.text as text', 'objectives.id as id')
->distinct()
->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');
switch ($role) {
case 1:
$program_id = DB::table('programs')->lists('id');
break;
case 2:
$program_id = DB::table('programs')->where('school_id', Auth::user()->school_id)
->lists('id');
break;
case 3:
$program_id = DB::table('program_user')
->where('user_id', $user_id)
->lists('program_id');
break;
}
// 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', function ($join) {
$join->on('courses.number', '=', 'ta_course.course_number');
$join->on('courses.code', '=', 'ta_course.course_code');
})
->where('transformative_actions.is_custom', 1)
->where('transformative_actions.program_id', $program_id)
->where('transformative_actions.by_professor', 1)
->select('ta_course.course_number', 'ta_course.course_code')
->distinct()
->get();
$course_id = array();
foreach ($courses as $key => $course) {
array_push($course_id["number"], $course->course_number);
array_push($course_id["code"], $course->code);
}
} else {
$parentesis = array('(', ')');
$course_code_number = str_replace($parentesis, '', $course_id);
$course_code_number = explode(',', $course_code_number);
$course_id = array();
$course_id['number'] = $course_code_number[1];
$course_id['code'] = $course_code_number[0];
}
// if outcome isnt a desired filter, search all outcomes
if ($outcome_id == 0) {
$outcomes = DB::table('transformative_actions')
->join('transformative_objective', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.objective_id')
->join('outcomes', 'outcomes.id', '=', '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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.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('objective_outcome.outcome_id', $outcome_id)
->whereIn('ta_course.course_code', $course_id['code'])
->whereIn('ta_course.course_number', $course_id['number'])
->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
if ($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', function ($join) {
$join->on('courses.number', '=', 'ta_course.course_number');
$join->on('courses.code', '=', 'ta_course.course_code');
})
->where('transformative_actions.is_custom', 1)
->where('transformative_actions.program_id', $program_id)
->where('transformative_actions.by_professor', 0)
->select('ta_course.course_number', 'ta_course.course_code')
->distinct()
->get();
$course_id = array();
foreach ($courses as $key => $course) {
array_push($course_id["number"], $course->course_number);
array_push($course_id["code"], $course->code);
}
} else {
$parentesis = array('(', ')');
$course_code_number = str_replace($parentesis, '', $course_id);
$course_code_number = explode(',', $course_code_number);
$course_id = array();
$course_id['number'] = $course_code_number[1];
$course_id['code'] = $course_code_number[0];
}
// if outcome isnt a desired filter, search all outcomes
if ($outcome_id == 0) {
$outcomes = DB::table('transformative_actions')
->join('transformative_objective', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.objective_id')
->join('outcomes', 'outcomes.id', '=', '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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.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('objective_outcome.outcome_id', $outcome_id)
->whereIn('ta_course.course_code', $course_id['code'])
->whereIn('ta_course.course_number', $course_id['number'])
->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('ta_course.course_number', 'ta_course.course_code')
->distinct()
->get();
$course_id = array();
foreach ($courses as $key => $course) {
array_push($course_id["number"], $course->course_number);
array_push($course_id["code"], $course->code);
}
} else {
$parentesis = array('(', ')');
$course_code_number = str_replace($parentesis, '', $course_id);
$course_code_number = explode(',', $course_code_number);
$course_id = array();
$course_id['number'] = $course_code_number[1];
$course_id['code'] = $course_code_number[0];
}
// if outcome isnt a desired filter, search all outcomes
if ($outcome_id == 0) {
$outcomes = DB::table('transformative_actions')
->join('transformative_objective', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.objective_id')
->join('outcomes', 'outcomes.id', '=', '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', 'transformative_objective.ta_id', '=', 'transformative_actions.id')
->join('objective_outcome', 'objective_outcome.objective_id', '=', 'transformative_objective.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('objective_outcome.outcome_id', $outcome_id)
->whereIn('ta_course.course_code', $course_id['code'])
->whereIn('ta_course.course_number', $course_id['number'])
->select('transformative_actions.*')
->groupBy('transformative_actions.id')
->orderBy('transformative_actions.at_text', 'ASC')
->get();
return $filtered_at;
}*/
return 'ilegal';
}
function postActivityCriterion($activity_id)
{
DB::beginTransaction();
$existing_transformative_action = DB::table('transformative_actions')
->join('transformative_activity_criterion', 'transformative_activity_criterion.trans_action_id', '=', 'transformative_actions.id')
->join('activity_criterion', 'activity_criterion.id', '=', 'transformative_activity_criterion.activity_criterion_id')
->where('activity_id', $activity_id)
->delete();
$activity_criterion = Input::get('trans_act');
$trans = new TransformativeAction;
$trans->user_id = Auth::user()['id'];
$program_id = DB::table('activities')
->join('courses', 'activities.course_id', '=', 'courses.id')
->where('activities.id', $activity_id)
->lists('program_id');
$trans->program_id = $program_id[0];
$trans->is_custom = 1;
$trans->by_professor = 1;
$trans->at_text = Input::get('name_trans');
$trans->description = Input::get('transforming_actions');
$activity = DB::table('activities')
->where('id', $activity_id)
->first();
$course_credentials = DB::table('courses')
->where('id', $activity->course_id)
->first();
if ($trans->save()) {
foreach ($activity_criterion as $single_ac) {
$result = DB::insert("insert into `transformative_activity_criterion` (`trans_action_id`, `activity_criterion_id`) values ($trans->id, $single_ac)");
if (!$result) {
DB::rollback();
Session::flash('status', 'danger');
Session::flash('message', 'Error saving Formative Action. Try again later.');
return Redirect::to("professor/activities/{$activity_id}");
}
}
$criteria = DB::table('activity_criterion')
->whereIn('id', $activity_criterion)
->lists('criterion_id');
$allObjectives = DB::table('criterion_objective_outcome')
->whereIn('criterion_id', $criteria)
->select('objective_id')
->distinct()
->lists('objective_id');
foreach ($allObjectives as $objective) {
$result2 = DB::insert("insert into `transformative_objective` (`ta_id`, `objective_id`) values ({$trans->id},{$objective})");
if (!$result2) {
DB::rollback();
Session::flash('status', 'danger');
Session::flash('message', 'Error saving Formative Action. Try again later.');
return Redirect::to("professor/activities/{$activity_id}");
}
}
$result3 = DB::insert("insert into `ta_course` (`ta_id`, `course_number`, `course_code`) values ({$trans->id}, '{$course_credentials->number}', '{$course_credentials->code}')");
if (!($result3)) {
DB::rollback();
Session::flash('status', 'danger');
Session::flash('message', 'Error saving Formative Action. Try again later.');
return Redirect::to("professor/activities/{$activity_id}");
}
DB::commit();
Session::flash('status', 'success');
Session::flash('message', 'Formative Actions Saved.');
return Redirect::to("professor/activities/{$activity_id}");
} else {
DB::rollback();
Session::flash('status', 'danger');
Session::flash('message', 'Error saving Formative Action. Try again later.');
return Redirect::to("professor/activities/{$activity_id}");
}
}
public function viewFormativeActions()
{
$title = "Formative Actions";
$semesters = Session::get('semesters_ids');
$semesters = DB::table('semesters')->whereIn('id', $semesters)->orderBy('start', 'ASC')->first();
Log::info($semesters->start);
$outcomes = Outcome::select(array('id', 'name', 'expected_outcome'))
->whereNull('deleted_at')
->whereRaw("(deactivation_date IS NULL or deactivation_date >= '{$semesters->start}')")
->orderBy('name', 'ASC')->get();
$semesters = DB::table('semesters')->where('is_visible', 1)->orderBy('end', 'DESC')->get();
$role = Auth::user()->role;
switch ($role) {
case 1:
$schools = DB::table('schools')->get();
$programs = DB::table('programs')->get();
break;
case 2:
$schools = DB::table('schools')->where('id', Auth::user()->school_id)->get();
$programs = DB::table('programs')->where('school_id', $schools[0]->id)->get();
break;
case 3:
$programs = DB::table('programs')
->join('program_user', 'programs.id', '=', 'program_user.program_id')
->where('user_id', Auth::user()->id)
->select('programs.*')
->get();
$schools = DB::table('schools')->where('id', $programs[0]->school_id)->get();
break;
}
return View::make('local.managers.shared.view_formative', compact('title', 'outcomes', 'schools', 'programs', 'semesters'));
}
public function fetchCourses()
{
$school = Input::get('schools');
$programs = Input::get('programs');
$semesters = Input::get('semesters');
$outcome_id = Input::get('id');
Log::info($programs);
Log::info($semesters);
/* if (in_array(0, $semesters)) {
$semesters = DB::table('semesters')->where('is_visible', 1)->lists('id');
}*/
/* if (in_array(0, $programs)) {
$role = Auth::user()->role;
switch ($role) {
case 1:
$programs = DB::table('programs')->lists('id');
break;
case 2:
$programs = DB::table('programs')->where('school_id', Auth::user()->school_id)->lists('id');
break;
case 3:
$programs = DB::table('program_user')->where('user_id', Auth::user()->id)->lists('program_id');
break;
}
}*/
$typ_semester_outcome = DB::table('typ_semester_outcome')
->where('semester_id', $semesters)
->where('outcome_id', $outcome_id)
->lists('id');
//each row has objectives, repeated ta, but distinct activity_criterion_id
/* $objective_ta = DB::table('typ_semester_objectives')
->join('transformative_objective as trob', 'trob.objective_id', '=', 'typ_semester_objectives.objective_id')
->join('objectives', 'trob.objective_id', '=', 'objective_id')
->join('transformative_actions', 'transformative_actions.id', 'trob.ta_id')
->whereIn('typ_semester_objectives.typ_semester_outcome_id', $typ_semester_outcome)
->select('transformative_actions.*')
->addSelect('objectives.*')
->distinct()
->get();
$objective_ta = DB::table('typ_semester_objectives')
->join('transformative_objective as trob', 'trob.objective_id', '=', 'typ_semester_objectives.objective_id')
->join('objectives', 'trob.objective_id', '=', 'objective_id')
->join('transformative_actions', 'transformative_actions.id', 'trob.ta_id')
->whereIn('typ_semester_objectives.typ_semester_outcome_id', $typ_semester_outcome)
->select('transformative_actions.*')
->addSelect('objectives.*')
->distinct()
->lists();*/
$grouped_courses = DB::table('courses')
->where('program_id', $programs)
->where('semester_id', $semesters)
->join('activities', 'activities.course_id', '=', 'courses.id')
->join('activity_criterion', 'activities.id', '=', 'activity_criterion.activity_id')
->join('transformative_activity_criterion as tac', 'tac.activity_criterion_id', '=', 'activity_criterion.id')
->select('courses.*')
->groupBy(array('courses.code', 'courses.name', 'courses.semester_id'))
->orderBy('courses.code')
->orderBy('courses.number')
->get();
foreach ($grouped_courses as $course_name) {
$course_name->sections = DB::table('courses')
->where('code', $course_name->code)
->where('name', $course_name->name)
->where('semester_id', $course_name->semester_id)
->where('program_id', $course_name->program_id)
->get();
foreach ($course_name->sections as $section) {
$section->activities = DB::table('activities')
->join('activity_criterion', 'activities.id', '=', 'activity_criterion.activity_id')
->join('transformative_activity_criterion', 'transformative_activity_criterion.activity_criterion_id', '=', 'activity_criterion.id')
->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'activity_criterion.criterion_id')
->join('transformative_actions', 'transformative_activity_criterion.trans_action_id', '=', 'transformative_actions.id')
->where('activities.course_id', $section->id)
->where('activities.draft', 0)
->where('activities.diagnostic', 0)
->where('criterion_objective_outcome.outcome_id', $outcome_id)
->select('activities.id as activity_id', 'activities.name')
->addSelect('transformative_actions.*', 'transformative_activity_criterion.trans_action_id as trans_action_id')
->groupBy('transformative_actions.id')
->get();
//If section has activity that assessess outcome
if (count($section->activities)) {
$course_name->outcome_assessed = true;
}
foreach ($section->activities as $activity) {
/*$activity->criterion = DB::table('transformative_activity_criterion')
->join('activity_criterion','activity_criterion.id','=','transformative_activity_criterion.activity_criterion_id')
->join('activities','activities.id','=','activity_criterion.activity_id')
->join('criteria','activity_criterion.criterion_id','=','criteria.id')
->where('activity_id', $activity->id)
->select('criteria')*/
//Log::info($activity->trans_action_id);
$activity->criterion_with_objective = DB::table('transformative_activity_criterion')
->join('activity_criterion', 'activity_criterion.id', '=', 'transformative_activity_criterion.activity_criterion_id')
->join('criteria', 'activity_criterion.criterion_id', '=', 'criteria.id')
->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'criteria.id')
->join('objectives', 'objectives.id', '=', 'criterion_objective_outcome.objective_id')
->where('activity_id', $activity->activity_id)
->where('trans_action_id', $activity->trans_action_id)
->get();
/*$activity->objectives = DB::table('transformative_objective')
->join('objectives', 'transformative_objective.objective_id', '=', 'objectives.id')
->where('ta_id', $activity->trans_action_id)
->get();*/
/*foreach ($activity->objectives as $objective) {
// Log::info($activity->activity_id);
// Log::info($objective->objective_id);
/* Log::info(DB::table('criterion_objective_outcome')
->join('activity_criterion', 'activity_criterion.criterion_id', '=', 'criterion_objective_outcome.criterion_id')
->join('criteria', 'criteria.id', '=', 'activity_criterion.criterion_id')
->where('activity_criterion.activity_id', $activity->activity_id)
->where('objective_id', $objective->objective_id)
->select('criteria.*')
->distinct()
->toSql());
$objective->criterion = DB::table('criterion_objective_outcome')
->join('activity_criterion', 'activity_criterion.criterion_id', '=', 'criterion_objective_outcome.criterion_id')
->join('criteria', 'criteria.id', '=', 'activity_criterion.criterion_id')
->where('activity_criterion.activity_id', $activity->activity_id)
->where('objective_id', $objective->objective_id)
->select('criteria.*')
->distinct()
->get();
}*/
}
}
}
return $grouped_courses;
}
public function createTAForOutcome()
{
$is_custom = Input::get('is_custom');
$category = Input::get('category');
$is_new = Input::get('is_new');
$name = Input::get('name');
$description = Input::get('description');
$edit_ta_id = Input::get('edit');
if ($is_new || $is_custom)
$program_id = Input::get('program_id');
else $program_id = NULL;
$typ_semester_outcome_id = Input::get('typ_semester_outcome_id');
if (!$edit_ta_id) {
$ta_id = DB::table('transformative_actions')->insertGetId(array(
'program_id' => $program_id,
'type_of_TA' => $category,
'at_text' => $name,
'description' => $description,
'user_id' => Auth::user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
'by_professor' => 0,
'is_custom' => $is_custom
));
DB::table('transformative_typ_outcome')->insert(array(
'trans_id' => $ta_id,
'typ_semester_outcome_id' => $typ_semester_outcome_id,
'proposing_coordinator_id' => Auth::user()->id,
));
} else {
DB::table('transformative_actions')
->where('id', $edit_ta_id)
->update(array(
'program_id' => $program_id,
'type_of_TA' => $category,
'at_text' => $name,
'description' => $description,
'user_id' => Auth::user()->id,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
'by_professor' => 0,
'is_custom' => $is_custom
));
$ta_id = $edit_ta_id;
}
return $ta_id;
}
public function deleteTaFromOutcome()
{
DB::table('transformative_actions')
->where('id', Input::get('trans_id'))
->delete();
return;
}
public function fetchStatus()
{
$trans_id = Input::get('trans_id');
$semester_id = Input::get('semester_id');
$transformative_action = DB::table('transformative_actions')
->where('id', $trans_id)
->first();
$transformative_action->status = DB::table('transformative_action_status')
->where('trans_id', $transformative_action->id)
->where('semester_id', $semester_id)
->first();
//TransformativeAction::find($trans_id)->status($semester_id);
return array($transformative_action);
}
public function saveTransStatus()
{
$semester_id = Input::get('semester_id');
$trans_id = Input::get('trans_id');
$results = Input::get('results');
$comments = Input::get('comments');
$accomplished = Input::get('accomplished');
$was_it_useful = Input::get('was_it_useful');
$existing_status = DB::table('transformative_action_status')
->where('semester_id', $semester_id)
->where('trans_id', $trans_id)
->first();
if ($existing_status) {
DB::table('transformative_action_status')
->where('trans_id', $trans_id)
->update(array(
'results' => $results,
'comments' => $comments,
'accomplished' => $accomplished,
'it_was_useful' => $was_it_useful,
'supervised_coordinator_id' => Auth::user()->id
));
} else {
DB::table('transformative_action_status')->insert(array(
'trans_id' => $trans_id,
'results' => $results,
'comments' => $comments,
'accomplished' => $accomplished,
'it_was_useful' => $was_it_useful,
'semester_id' => $semester_id,
'supervised_coordinator_id' => Auth::user()->id
));
}
return "done";
}
}