From 31d9aae393a2332a6f2d7a63c22357c61ed7fa47 Mon Sep 17 00:00:00 2001 From: Jacob Date: Thu, 1 Jul 2021 11:29:00 +0530 Subject: [PATCH] Subject,Course creation done. Need to complete validation and tests --- Contributing.MD | 1 + .../Http/Controllers/AttendanceController.php | 4 +- src/app/Http/Controllers/CourseController.php | 137 ++++++++++++++++++ .../Http/Controllers/SubjectController.php | 122 ++++++++++++++++ src/app/Models/Subject.php | 4 +- .../views/attendance/index.blade.php | 1 - src/resources/views/courses/create.blade.php | 49 +++++++ src/resources/views/courses/edit.blade.php | 65 +++++++++ src/resources/views/courses/index.blade.php | 51 +++++++ src/resources/views/subjects/create.blade.php | 27 ++++ src/resources/views/subjects/edit.blade.php | 30 ++++ src/resources/views/subjects/index.blade.php | 39 +++++ src/resources/views/welcome.blade.php | 4 +- src/routes/web.php | 6 + 14 files changed, 536 insertions(+), 4 deletions(-) create mode 100644 src/app/Http/Controllers/CourseController.php create mode 100644 src/app/Http/Controllers/SubjectController.php create mode 100644 src/resources/views/courses/create.blade.php create mode 100644 src/resources/views/courses/edit.blade.php create mode 100644 src/resources/views/courses/index.blade.php create mode 100644 src/resources/views/subjects/create.blade.php create mode 100644 src/resources/views/subjects/edit.blade.php create mode 100644 src/resources/views/subjects/index.blade.php diff --git a/Contributing.MD b/Contributing.MD index 910a99b..556feec 100644 --- a/Contributing.MD +++ b/Contributing.MD @@ -3,6 +3,7 @@ ## Table of contents - [Standard of Code](#standard-of-code) +- [Laravel Best Practices ](https://github.com/alexeymezenin/laravel-best-practices) - [Initial Setup](#initial-setup-and-credentials) - [Running shell commands inside container](#running-shell-commands-inside-the-container) - [Installing PHP Packages](#installing-php-packages) diff --git a/src/app/Http/Controllers/AttendanceController.php b/src/app/Http/Controllers/AttendanceController.php index b10cc8e..97476be 100644 --- a/src/app/Http/Controllers/AttendanceController.php +++ b/src/app/Http/Controllers/AttendanceController.php @@ -31,9 +31,11 @@ public function index(AttendanceRequest $request) // HOD can view their dept // Staff advisor, Faculty can view their class $request->validated(); + print $request->ip(); $auth_user = Auth::user(); $faculty = $auth_user->faculty; + // print $auth_user; if ($auth_user->isAdmin() || $faculty?->isPrincipal()) { // OR Principal $query = Attendance::getBaseQuery($request->get("from"), $request->get("to")); @@ -258,7 +260,7 @@ public function update(AttendanceRequest $request, $attendance_id) } $absentee->leave_excuse = $leave_type; - // TODO Bulk update is possible? + // TODO Bulk update is ssible? $absentee->save(); } diff --git a/src/app/Http/Controllers/CourseController.php b/src/app/Http/Controllers/CourseController.php new file mode 100644 index 0000000..e5d166f --- /dev/null +++ b/src/app/Http/Controllers/CourseController.php @@ -0,0 +1,137 @@ +faculty; + $department_code = $faculty->department_code; + + if ($faculty && $faculty->isHOD()) { + $courses = Course::with(['Classroom','Subject','Faculty'])->get(); +// No idea to filter hod's department related stuff from database,so basically filtering in views + return view('courses.index',["courses" => $courses,"department_code" => $department_code]); + } + + } + + public function create(){ + // HOD create subjects here - get request do it returns + // that page to HOD + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + // print $faculty; + $department_code = $faculty->department_code; + + $classrooms = Classroom::all(); + $faculties = Faculty::where('department_code',$department_code)->get(); + $subjects = Subject::where('department_code',$department_code)->get(); + $types = CourseTypes::getKeys(); + + return view('courses.create',["classrooms"=>$classrooms,"faculties"=>$faculties,"types"=>$types,"subjects"=>$subjects]); + } + + public function store(Request $request){ + // create new subject - POST + + /* + * Needs to do request validation + * Move Course creation to model + * Javascipt function to check Course is already existing or not + * Optimise Course creation + */ + + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + + $data = $request->input(); + + $course = new Course(); + $course->type = CourseTypes::getValue($data["type"]); + $course->faculty_id=$data["faculty"]; + $course->classroom_id = $data["classroom"]; + $course->subject_code = $data["subject"]; +// Here is room for improvement instead of again querying in database table,we can infer it from above +// message/ do we need this in the first place <> + $course->semester = Classroom::where('id',$data["classroom"])->get('semester')->first()->semester; + $course->save(); + + + + return redirect()->route('courses.index'); + + + } + + + public function edit($id){ + //get page for updating specific subject + // check whether this hod has permission to update this course + + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + + $classrooms = Classroom::all(); + $faculties = Faculty::where('department_code',$department_code)->get(); + $subjects = Subject::where('department_code',$department_code)->get(); + $types = CourseTypes::getKeys(); + $course = Course::where('id',$id)->first(); + $courseType = CourseTypes::getKey($course->type); // we need this as as we are displaying value of enum but store key in db + return view('courses.edit',["classrooms"=>$classrooms,"faculties"=>$faculties,"types"=>$types,"subjects"=>$subjects,"course"=>$course,"courseType"=>$courseType]); + } + + public function update(Request $request ,$id){ + // modifying the existing course resource + + /* + * Needs to do request validation + * Move Course creation to model + * Javascipt function to check subject code is unique or not in client side + * Optimise Course creation + * Update method - PUT/PATCH ? + * Check whether this HOD has power to update this course + */ + + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + + $data = $request->input(); + $editCourse = Course::where('id',$id)->first(); // need to find better method than this +// this queries and retreives , but we dont' need retreival here ,only updation is needed + $editCourse->faculty_id=$data["faculty"]; + $editCourse->classroom_id = $data["classroom"]; + $editCourse->subject_code = $data["subject"]; + $editCourse->type = CourseTypes::getValue($data["type"]); + $editCourse->semester = Classroom::where('id',$data["classroom"])->get('semester')->first()->semester; + $editCourse->save(); + return redirect()->route('courses.index'); + + } + + public function destroy($id){ + // delete specific subjects - delete request + // check for permission to delete this stuff by current hod + $response=Course::where('id',$id)->delete(); + return redirect()->route('courses.index'); + } +} diff --git a/src/app/Http/Controllers/SubjectController.php b/src/app/Http/Controllers/SubjectController.php new file mode 100644 index 0000000..1193613 --- /dev/null +++ b/src/app/Http/Controllers/SubjectController.php @@ -0,0 +1,122 @@ +faculty; + // print $faculty; + $department_code = $faculty->department_code; + // print $department_code; + + if ($faculty && $faculty->isHOD()) { + $subjects = Subject::where('department_code',$department_code)->get(); + // $faculty = Faculty::where('department_code',$department_code)->get(); + return view('subjects.index',["subjects" => $subjects]); + } + + } + + public function create(){ + // HOD create subjects here - get request do it returns + // that page to HOD + return view('subjects.create'); + } + + public function store(Request $request){ + // create new subject - POST + + /* + * Needs to do request validation + * Move subject creation to model + * Javascipt function to check subject code is already existing or not + * Optimise Subject creation + */ + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + + $data = $request->input(); + + $subject = new Subject(); + $subject->name = $data["name"]; + $subject->credits = $data["credit"]; + $subject->code = $data["courseId"]; + //This is the primary key check for its uniqueness and return error + $subject->department_code = $department_code; + $subject->save(); + + + + return redirect()->route('subjects.index'); + + + } + + + + public function edit($subject_code){ + //get page for updating specific subject + // check whether this hod has permission to see this subject + $subject = Subject::where('code',$subject_code)->get()->first(); + return view('subjects.edit',["subject"=>$subject]); + } + + public function update(Request $request){ + // modifying the existing subject configuration + + /* + * Needs to do request validation + * Move subject creation to model + * Javascipt function to check subject code is unique or not in client side + * Optimise Subject creation + * Update method - PUT/PATCH ? + * Check whether this HOD has power to update this subject + */ + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + print $request; +// Since subject-code is unique check whether that is existing and return error,currently we dont do that + $data = $request->input(); + $code = $data["code"]; + $subject = Subject::where('code',$code)->first(); + $subject->name = $data["name"]; + $subject->credits = $data["credit"]; + $subject->code = $data["code"]; + $subject->save(); + return redirect()->route('subjects.index'); + + } + + public function destroy($subject_code){ + // delete specific subjects - delete request + // check for permission to delete this stuff by current hod + $auth_user = Auth::user(); + $faculty = $auth_user->faculty; + $department_code = $faculty->department_code; + + $response=Subject::where('code',$subject_code)->delete(); + // use this to send response to confirm deletion + return redirect()->route('subjects.index'); + + } +} diff --git a/src/app/Models/Subject.php b/src/app/Models/Subject.php index 73d0c87..99cde0e 100644 --- a/src/app/Models/Subject.php +++ b/src/app/Models/Subject.php @@ -17,7 +17,7 @@ class Subject extends Model protected $fillable = [ 'name', - 'credit' + 'credits' ]; protected function courses() @@ -29,4 +29,6 @@ protected function department() { return $this->hasOne(Department::class); } + + } diff --git a/src/resources/views/attendance/index.blade.php b/src/resources/views/attendance/index.blade.php index 2d522dd..1447c14 100644 --- a/src/resources/views/attendance/index.blade.php +++ b/src/resources/views/attendance/index.blade.php @@ -1,5 +1,4 @@ @extends("layouts.layout") - @section("head")