説明なし

CourseController.php 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Course;
  4. use App\Semester;
  5. use App\User;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Auth;
  8. use Illuminate\Support\Facades\Redirect;
  9. use Illuminate\Support\Facades\Storage;
  10. class CourseController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index(Request $request)
  18. {
  19. // if ($request->session()->has('department'))
  20. // $courses = Course::whereIn('dept_id')
  21. return view('courses.index', [
  22. 'courses' => Course::where('dept_id', '=', $request->session()->get('department'))->with('sections:id,course_id,semester_code')->get()->sort('cmpCourseCode'),
  23. 'semesters' => Semester::orderBy('code', 'asc')->get(),
  24. ]);
  25. }
  26. /**
  27. * Show the form for creating a new resource.
  28. *
  29. * @return \Illuminate\Http\Response
  30. */
  31. public function create()
  32. {
  33. }
  34. /**
  35. * Store a newly created resource in storage.
  36. *
  37. * @param \Illuminate\Http\Request $request
  38. * @return \Illuminate\Http\Response
  39. */
  40. public function store(Request $request)
  41. {
  42. // TODO: Validate syllabus is pdf
  43. $course = Course::create( $request->validate([
  44. 'code' => ['required','unique:courses','size:8','regex:/[A-Za-z]{4}[0-9]{4}/', 'string'],
  45. 'title' => ['required','max:255', 'string'],
  46. 'dept_id' => ['required','exists:departments,id', 'integer'],
  47. ]));
  48. if ($request->file('syllabus')) {
  49. $path = $request->file('syllabus')->store('course_syllabus');
  50. $course->update(['syllabus' => '/storage/'.$path]);
  51. }
  52. return redirect('/course/' . $course->id);
  53. }
  54. /**
  55. * Display the specified resource.
  56. *
  57. * @param \App\Course $course
  58. * @return \Illuminate\Http\Response
  59. */
  60. public function show(Course $course)
  61. {
  62. $course->loadMissing(['semesters.sections.professors']);
  63. return view('courses.show', [
  64. 'course' => $course,
  65. ]);
  66. }
  67. /**
  68. * Show the form for editing the specified resource.
  69. *
  70. * @param \App\Course $course
  71. * @return \Illuminate\Http\Response
  72. */
  73. public function edit(Course $course)
  74. {
  75. //
  76. }
  77. /**
  78. * Update the specified resource in storage.
  79. *
  80. * @param \Illuminate\Http\Request $request
  81. * @param \App\Course $course
  82. * @return \Illuminate\Http\Response
  83. */
  84. public function update(Request $request, Course $course)
  85. {
  86. $data = array_filter($request->validate([
  87. 'code' => ['nullable', 'unique:courses','size:8','regex:/[A-Za-z]{4}[0-9]{4}/', 'string'],
  88. 'title' => ['nullable', 'max:255', 'string'],
  89. 'dept_id' => ['nullable', 'exists:departments,id', 'integer'],
  90. ]));
  91. $course->update($data);
  92. if ($request->file('syllabus')) {
  93. $path = $request->file('syllabus')->store('course_syllabus');
  94. $course->update(['syllabus' => '/storage/'.$path]);
  95. }
  96. // dd($path);
  97. // dd(asset($path));
  98. // dd($course->syllabus);
  99. // return redirect($course->syllabus);
  100. return redirect()->back();
  101. }
  102. /**
  103. * Remove the specified resource from storage.
  104. *
  105. * @param \App\Course $course
  106. * @return \Illuminate\Http\Response
  107. */
  108. public function destroy(Course $course)
  109. {
  110. //
  111. }
  112. }