From c4895db19e57ce0ca21ab741166e0cda10dd69f1 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 14:36:07 -0400 Subject: [PATCH 1/7] Added submission page. Connected the submission button on the assignment page to the submission page. Created two redirect buttons on the submission page to direct user back to assignment page and course page. Calculated time difference of submission and due date. --- app/Http/Controllers/AssignmentController.php | 46 ++++++++++++++++++- resources/views/assignments/show.blade.php | 3 +- routes/web.php | 1 + 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index 062d72b..48c587a 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -6,6 +6,7 @@ use App\Course; use Illuminate\Http\Request; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\DB; use Carbon\Carbon; class AssignmentController extends Controller @@ -59,7 +60,7 @@ public function show(Course $course, Assignment $assignment) $remaining .= " Days: " . $interval->d; $remaining .= " - " . $interval->h . ":" . $interval->i . ":" . $interval->s; - return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining')); + return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining', 'course', 'assignment')); } public function register(Course $course) @@ -74,6 +75,49 @@ public function settings(Course $course) return view('assignments.settings', compact('cName', 'course')); } + public function submit(Course $course, Assignment $assignment, Request $request) + { + $courses = DB::table('courses')->select('slug')->get(); + + //Variables for general course and assignment information + $aName = $assignment->name; + $cName = $course->name; + + //Variables for submission + $sTime = Carbon::now(); + $sName = $request->sName; + $sComments = $request->sComments; + + //Submission difference calculation + $sRemaining = ""; + $sRemainingAttach = ""; + $sRemainingColor = ""; + + if ($sTime > $assignment->due){ + $interval = date_diff($sTime, new \DateTime($assignment->due)); + $sRemainingAttach = " late"; + $sRemainingColor = "red"; + }else{ + $interval = date_diff(new \DateTime($assignment->due), $sTime); + $sRemainingAttach = " early"; + $sRemainingColor = "green"; + } + + //This calculates the difference between the assignment due date + //and the current time in EST. Remaining is sent as a fromatted string into the view + if($interval->y != 0) + $sRemaining .= $interval->y . " year(s) "; + if($interval->m != 0) + $sRemaining .= $interval->m . " month(s) "; + if($interval->d != 0) + $sRemaining .= $interval->d . " days(s)"; + + $sRemaining .= " - " . $interval->h . " hour(s) " . $interval->i . " minute(s) " . $interval->s . " second(s) " . $sRemainingAttach; + + + return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'course', 'assignment')); + } + public function store(Course $course, Request $request) { $a = new Assignment; diff --git a/resources/views/assignments/show.blade.php b/resources/views/assignments/show.blade.php index dd712d0..a4c4d1a 100644 --- a/resources/views/assignments/show.blade.php +++ b/resources/views/assignments/show.blade.php @@ -40,7 +40,8 @@
-
+ + {{ csrf_field() }}
diff --git a/routes/web.php b/routes/web.php index a07b76b..f6b36c8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -24,6 +24,7 @@ /* AssignmentController Routes */ Route::get('course/{course}/assignment/register', 'AssignmentController@register'); +Route::post('course/{course}/assignment/{assignment}/submit', 'AssignmentController@submit'); Route::get('course/{course}/assignment/settings', 'AssignmentController@settings'); Route::post('course/{course}/assignment/register', 'AssignmentController@store'); Route::get('course/{course}/assignment/{assignment}','AssignmentController@show')->name('courseAssignment'); From 6881857997b51119d705cb2aa89ec243037400e9 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 14:38:49 -0400 Subject: [PATCH 2/7] Added submission page. Connected the submission button on the assignment page to the submission page. Created two redirect buttons on the submission page to direct user back to assignment page and course page. Calculated time difference of submission and due date. --- resources/views/assignments/submit.blade.php | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 resources/views/assignments/submit.blade.php diff --git a/resources/views/assignments/submit.blade.php b/resources/views/assignments/submit.blade.php new file mode 100644 index 0000000..be8af18 --- /dev/null +++ b/resources/views/assignments/submit.blade.php @@ -0,0 +1,39 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
{{$cName}}: Submission successful!
+
+
+
+
Submission for {{$aName}}
+
+ Submission Name:
+ {{$sName}}
+ Files:
+ TEST
+ Comments:
+ {{$sComments}}
+ Submitted at:
+ {{$sTime}}
+
Submitted {{$sRemaining}}


+
+ + +
+
+
+
+
+
+@endsection From ec3de89838492e115f38ac66a82bd10f6bbf3a12 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 14:44:01 -0400 Subject: [PATCH 3/7] Backup files --- app/Http/Controllers/AssignmentController.php | 52 +++++++++++++- app/Http/Controllers/CourseController.php | 71 ++++++++++++++++++- routes/web.php | 20 +++--- 3 files changed, 130 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index 8cb327a..48c587a 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -6,6 +6,7 @@ use App\Course; use Illuminate\Http\Request; use Illuminate\Support\Collection; +use Illuminate\Support\Facades\DB; use Carbon\Carbon; class AssignmentController extends Controller @@ -59,7 +60,7 @@ public function show(Course $course, Assignment $assignment) $remaining .= " Days: " . $interval->d; $remaining .= " - " . $interval->h . ":" . $interval->i . ":" . $interval->s; - return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining')); + return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining', 'course', 'assignment')); } public function register(Course $course) @@ -68,6 +69,55 @@ public function register(Course $course) return view('assignments.register', compact('cName', 'course')); } + public function settings(Course $course) + { + $cName = $course->name; + return view('assignments.settings', compact('cName', 'course')); + } + + public function submit(Course $course, Assignment $assignment, Request $request) + { + $courses = DB::table('courses')->select('slug')->get(); + + //Variables for general course and assignment information + $aName = $assignment->name; + $cName = $course->name; + + //Variables for submission + $sTime = Carbon::now(); + $sName = $request->sName; + $sComments = $request->sComments; + + //Submission difference calculation + $sRemaining = ""; + $sRemainingAttach = ""; + $sRemainingColor = ""; + + if ($sTime > $assignment->due){ + $interval = date_diff($sTime, new \DateTime($assignment->due)); + $sRemainingAttach = " late"; + $sRemainingColor = "red"; + }else{ + $interval = date_diff(new \DateTime($assignment->due), $sTime); + $sRemainingAttach = " early"; + $sRemainingColor = "green"; + } + + //This calculates the difference between the assignment due date + //and the current time in EST. Remaining is sent as a fromatted string into the view + if($interval->y != 0) + $sRemaining .= $interval->y . " year(s) "; + if($interval->m != 0) + $sRemaining .= $interval->m . " month(s) "; + if($interval->d != 0) + $sRemaining .= $interval->d . " days(s)"; + + $sRemaining .= " - " . $interval->h . " hour(s) " . $interval->i . " minute(s) " . $interval->s . " second(s) " . $sRemainingAttach; + + + return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'course', 'assignment')); + } + public function store(Course $course, Request $request) { $a = new Assignment; diff --git a/app/Http/Controllers/CourseController.php b/app/Http/Controllers/CourseController.php index aaaa014..b819d8e 100644 --- a/app/Http/Controllers/CourseController.php +++ b/app/Http/Controllers/CourseController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use App\Course; +use App\Assignment; +use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; class CourseController extends Controller @@ -24,8 +26,12 @@ public function __construct() */ public function show(Course $course) { + $assignments = DB::table('assignments')->select('id', 'name', 'due', 'similarity')->where('course_id', $course->id)->get(); + $courseID = $course->name; - return view('courses.show', compact('courseID')); + $slug = $course->slug; + + return view('courses.show', compact('courseID', 'slug'), ['assignments' => $assignments]); } /** @@ -35,19 +41,78 @@ public function show(Course $course) */ public function showRegistration() { - return view('courses.courseregistration'); + return view('courses.register'); + } + + /** + * Show the course settings page + * + * @return + */ + public function enroll(Course $course) + { + $users = DB::table('users')->select('id', 'name', 'email')->get(); + $courses = DB::table('courses')->select('slug')->get(); + + return view('courses.enroll', ['users' => $users], ['course' => $course]); + } + + /** + * Save data from settings page into database + * + * @return + */ + public function storeSettings() + { + } + /** + * Stores the course registration information into the database + * + * @return redirection to the new course page + */ public function store(Request $request) { // validate the input before storing it into the database + $this->validate($request,[ + 'courseName' => 'required', + 'courseSemester' => 'required', + 'courseSection' => 'required' + ]); + + // if any of the fields are null, bring them back to the registration page (did not select an option) + if($request->courseName == null || $request->courseSemester == null || $request->courseSection == null) { + return back()->withInput(); + } + + // create slug + $slug = $request->courseName . '_' . $request->courseSemester . '_' . $request->courseSection; // sanitize the slug //store data into the database $c = new Course; $c->name = $request->courseName; - $c->slug = $request->courseID; + $c->slug = $slug; $c->save(); + + return redirect()->action('CourseController@show', $c); + } + + /** + * Shows the assignments for a specified course on the course page + * + * + */ + public function displayAssignments() { + + $assignments = DB::table('assignments')->pluck('name'); + + foreach($assignments as $assignment) + echo $assignment; + + + return view('courses.show', ['assignments' => $assignments]); } } diff --git a/routes/web.php b/routes/web.php index ab2bf5a..f6b36c8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,20 +11,22 @@ | */ +/* HomeController Routes */ Route::get('/', 'HomeController@index'); - Route::get('/home', 'HomeController@index'); -Route::get('course/registration/','CourseController@showRegistration'); -Route::post('course/registration', 'CourseController@store'); +/* CourseController Routes */ +Route::get('course/register/','CourseController@showRegistration'); +Route::get('course/{course}/enroll', 'CourseController@enroll'); -Route::get('course/{course}','CourseController@show'); +Route::post('course/register/', 'CourseController@store'); +Route::get('course/{course}','CourseController@show')->name('coursePage'); +/* AssignmentController Routes */ Route::get('course/{course}/assignment/register', 'AssignmentController@register'); +Route::post('course/{course}/assignment/{assignment}/submit', 'AssignmentController@submit'); +Route::get('course/{course}/assignment/settings', 'AssignmentController@settings'); Route::post('course/{course}/assignment/register', 'AssignmentController@store'); +Route::get('course/{course}/assignment/{assignment}','AssignmentController@show')->name('courseAssignment'); -Route::get('course/{course}/assignment/{assignment}','AssignmentController@show'); - - - -Auth::routes(); \ No newline at end of file +Auth::routes(); From f9510c02b1d749845d0b998b8a7b51d7a70a50b3 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 15:31:45 -0400 Subject: [PATCH 4/7] Added user enrollment check when submitting an assignment as well as a 403 forbidden page --- app/Http/Controllers/AssignmentController.php | 22 ++++++++++++++----- resources/views/assignments/submit.blade.php | 1 + resources/views/errors/403.blade.php | 14 ++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 resources/views/errors/403.blade.php diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index 48c587a..ff769b0 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; use Carbon\Carbon; class AssignmentController extends Controller @@ -51,7 +52,7 @@ public function show(Course $course, Assignment $assignment) $interval = date_diff($currentTime, new \DateTime($aDue)); //This calculates the difference between the assignment due date - //and the current time in EST. Remaining is sent as a fromatted string into the view + //and the current time in EST. Remaining is sent as a formatted string into the view if($interval->y != 0) $remaining .= "Years: " . $interval->y; if($interval->m != 0) @@ -93,6 +94,18 @@ public function submit(Course $course, Assignment $assignment, Request $request) $sRemainingAttach = ""; $sRemainingColor = ""; + //Getting user ID + $userID = Auth::id(); + $test = DB::table('courses_users')->where('user_id', $userID)->value('course_id'); + + //Check if user is enrolled in the course + if($test != $course->id){ + abort('403'); + } + + //Checks the difference between due date and submission time + //Also sets the text color of the difference and determines whether + //the submission is early or late. if ($sTime > $assignment->due){ $interval = date_diff($sTime, new \DateTime($assignment->due)); $sRemainingAttach = " late"; @@ -102,9 +115,8 @@ public function submit(Course $course, Assignment $assignment, Request $request) $sRemainingAttach = " early"; $sRemainingColor = "green"; } - - //This calculates the difference between the assignment due date - //and the current time in EST. Remaining is sent as a fromatted string into the view + + //Format the remaining time calculated above if($interval->y != 0) $sRemaining .= $interval->y . " year(s) "; if($interval->m != 0) @@ -115,7 +127,7 @@ public function submit(Course $course, Assignment $assignment, Request $request) $sRemaining .= " - " . $interval->h . " hour(s) " . $interval->i . " minute(s) " . $interval->s . " second(s) " . $sRemainingAttach; - return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'course', 'assignment')); + return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'test', 'course', 'assignment')); } public function store(Course $course, Request $request) diff --git a/resources/views/assignments/submit.blade.php b/resources/views/assignments/submit.blade.php index be8af18..2896626 100644 --- a/resources/views/assignments/submit.blade.php +++ b/resources/views/assignments/submit.blade.php @@ -10,6 +10,7 @@
Submission for {{$aName}}
+ Your are {{$test}} Submission Name:
{{$sName}}
Files:
diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php new file mode 100644 index 0000000..b84938b --- /dev/null +++ b/resources/views/errors/403.blade.php @@ -0,0 +1,14 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+

403


+ Permission denied! You don't have access to this page :( +
+
+
+
+@endsection \ No newline at end of file From 32c13dc56b2a8b95b6cb86be85df4b3894033c54 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 15:38:58 -0400 Subject: [PATCH 5/7] Renamed variables and comments --- app/Http/Controllers/AssignmentController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index ff769b0..113f316 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -96,10 +96,10 @@ public function submit(Course $course, Assignment $assignment, Request $request) //Getting user ID $userID = Auth::id(); - $test = DB::table('courses_users')->where('user_id', $userID)->value('course_id'); + $userIDCheck = DB::table('courses_users')->where('user_id', $userID)->value('course_id'); //Check if user is enrolled in the course - if($test != $course->id){ + if($userIDCheck != $course->id){ abort('403'); } From 0f73383b213b17f5b9a3333f9a74e02040fae2f2 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 15:49:54 -0400 Subject: [PATCH 6/7] Fixed minor errors. Added name of submitter to the assignment submission page --- app/Http/Controllers/AssignmentController.php | 3 ++- resources/views/assignments/submit.blade.php | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index 113f316..92efe7a 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -97,6 +97,7 @@ public function submit(Course $course, Assignment $assignment, Request $request) //Getting user ID $userID = Auth::id(); $userIDCheck = DB::table('courses_users')->where('user_id', $userID)->value('course_id'); + $uName = DB::table('users')->where('id', $userID)->value('name'); //Check if user is enrolled in the course if($userIDCheck != $course->id){ @@ -127,7 +128,7 @@ public function submit(Course $course, Assignment $assignment, Request $request) $sRemaining .= " - " . $interval->h . " hour(s) " . $interval->i . " minute(s) " . $interval->s . " second(s) " . $sRemainingAttach; - return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'test', 'course', 'assignment')); + return view ('assignments.submit', compact('cName', 'aName', 'sTime', 'sName', 'sComments', 'sRemaining', 'sRemainingColor', 'uName', 'course', 'assignment')); } public function store(Course $course, Request $request) diff --git a/resources/views/assignments/submit.blade.php b/resources/views/assignments/submit.blade.php index 2896626..1e95d8a 100644 --- a/resources/views/assignments/submit.blade.php +++ b/resources/views/assignments/submit.blade.php @@ -10,15 +10,14 @@
Submission for {{$aName}}
- Your are {{$test}} Submission Name:
{{$sName}}
Files:
- TEST
+ test
Comments:
{{$sComments}}
Submitted at:
- {{$sTime}}
+ {{$sTime}}, by {{$uName}}

Submitted {{$sRemaining}}


From aa94175e139f7a7916979d3f0babea1f31af1610 Mon Sep 17 00:00:00 2001 From: Jacky Date: Thu, 13 Apr 2017 17:31:44 -0400 Subject: [PATCH 7/7] Added previous submissions for each user into the assignments.show view --- app/Http/Controllers/AssignmentController.php | 18 +++++++++++++++++- resources/views/assignments/show.blade.php | 8 +++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AssignmentController.php b/app/Http/Controllers/AssignmentController.php index 92efe7a..fe03a2d 100644 --- a/app/Http/Controllers/AssignmentController.php +++ b/app/Http/Controllers/AssignmentController.php @@ -51,6 +51,22 @@ public function show(Course $course, Assignment $assignment) $currentTime = Carbon::now(); $interval = date_diff($currentTime, new \DateTime($aDue)); + //Get user ID for previous assignments + $userID = Auth::id(); + $previousAssignments = DB::table('submissions')->where('user_id', $userID)->get(['assignment_id']); + $assignmentID = []; + $courseName = []; + + foreach($previousAssignments as $aTest){ + $assignmentID[] = $aTest->assignment_id; + } + + $courseAssignments = DB::table('assignments')->whereIn('id', $assignmentID)->get(); + + foreach($courseAssignments as $cTest){ + $courseName = $cTest->name; + } + //This calculates the difference between the assignment due date //and the current time in EST. Remaining is sent as a formatted string into the view if($interval->y != 0) @@ -61,7 +77,7 @@ public function show(Course $course, Assignment $assignment) $remaining .= " Days: " . $interval->d; $remaining .= " - " . $interval->h . ":" . $interval->i . ":" . $interval->s; - return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining', 'course', 'assignment')); + return view('assignments.show', compact('cName', 'aName', 'aDescription', 'aDue', 'aStart', 'aSimilarity', 'remaining', 'course', 'assignment', 'courseAssignments')); } public function register(Course $course) diff --git a/resources/views/assignments/show.blade.php b/resources/views/assignments/show.blade.php index a4c4d1a..c784584 100644 --- a/resources/views/assignments/show.blade.php +++ b/resources/views/assignments/show.blade.php @@ -37,9 +37,15 @@
Submissions
Previous submissions
+
- {{ csrf_field() }}