middleware('auth'); } /** * Show the application dashboard. * * @return \Illuminate\Contracts\Support\Renderable */ public function index() { return view('dashboard', [ 'professors' => Professor::orderBy('last_name')->get(), 'semesters' => Semester::orderBy('code')->get() ]); } /** * Download the schedule for the given semester. * * @param string $semester * @return View */ public function schedule($semester_code) { $data = Semester::findOrFail($semester_code); $data->courses = $data->courses->sort('cmpCourseCode'); foreach($data->courses as $course) { $course->sections = $course->sections->where('semester_code', '=', $semester_code); foreach($course->sections as $section) { $section->professors = $section->professors; } } // header('Content-Type: application/pdf'); // header(`Content-Disposition: attachment; filename="${semester_code}.pdf";`); // return $data->toJson(); return ''; } public function export($semester_code) { $semester = Semester::findOrFail($semester_code); $professors = Professor::with(['sections', 'semesters:code,admin_load,investigative_load'])->whereIn('id', function($query) use ($semester_code) { $query->select('professor_id') ->from('professor_semester') ->where('semester_code', '=', $semester_code); })->orWhereIn('id', function($query) use ($semester_code) { $query->select('professor_id') ->from('sections') ->join('professor_section', 'sections.id', '=', 'professor_section.section_id') ->where('semester_code', '=', $semester_code); })->orderBy('last_name')->get(); header('Content-Type: application/csv'); header(`Content-Disposition: attachment; filename="${semester_code}.csv";`); if ($file = fopen('php://output', 'w+')) { fputcsv($file, ['PROFESOR', 'CARGA ACADEMICA', 'CARGA ADMINISTRATIVA', 'CARGA INVESTIGATIVE', 'CARGA TOTAL']); foreach ($professors as $professor) { $professor->academic_load = $professor->getAcademicLoad($semester); $prof_loads = $professor->semesters->find($semester); fputcsv($file, [ $professor->last_name . ', ' . $professor->first_name, $professor->academic_load, $prof_loads->admin_load ?? 0, $prof_loads->investigative_load ?? 0, $professor->academic_load + ($prof_loads->admin_load ?? 0) + ($prof_loads->investigative_load ?? 0), ]); } fclose($file); die(); } } }