diff --git a/app/Exports/AttendanceExportView.php b/app/Exports/AttendanceExportView.php index 6cbe18f..8ef4c67 100644 --- a/app/Exports/AttendanceExportView.php +++ b/app/Exports/AttendanceExportView.php @@ -21,7 +21,7 @@ class AttendanceExportView implements FromView public function view(): View { $attendances = Attendance::where('classes_id', $this->classes_id)->get(); - return view('user.attendances_table_preview', ['attendances' => $attendances]); + return view('user.attendances_table_preview', ['attendances' => $attendances, 'export' => 1]); } } diff --git a/app/Http/Controllers/User/UserAttendancesController.php b/app/Http/Controllers/User/UserAttendancesController.php index 20fa946..9ad92bc 100644 --- a/app/Http/Controllers/User/UserAttendancesController.php +++ b/app/Http/Controllers/User/UserAttendancesController.php @@ -34,26 +34,28 @@ class UserAttendancesController extends Controller $student_name = $request->input('student_name'); $student_surname = $request->input('student_surname'); $seat_number = $request->input('seat_number'); + $note = $request->input('note'); Attendance::create([ 'classes_id' => $classes_id, 'student_id_number' => $student_id_number, 'student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $seat_number, + 'notes' => $note ]); - return redirect(route('user_attendances')); + return redirect()->back(); } public function delete_attendance($attendance_id) { Attendance::find($attendance_id)->delete(); - return redirect(route('user_attendances')); + return redirect()->back(); } public function edit_attendance($attendance_id) { Attendance::find($attendance_id); - return redirect(route('user_attendances')); + return redirect()->back(); } public function export($classes_id) @@ -72,4 +74,15 @@ class UserAttendancesController extends Controller return Excel::download(new AttendanceGroupedExportView($groupBy), "all-attendance-grouped-by-{$groupByLabel}-{$today_date}.xlsx"); } + public function add_attendance_note(Request $request) + { + $attendance_id = $request->input('attendance_id'); + $note = $request->input('note_content'); + $attendance = Attendance::find($attendance_id); + $attendance->notes = $note; + $attendance->save(); + $attendance->refresh(); + return redirect()->back(); + } + } diff --git a/app/Http/Controllers/User/UserClassesController.php b/app/Http/Controllers/User/UserClassesController.php index 78f98da..b038492 100644 --- a/app/Http/Controllers/User/UserClassesController.php +++ b/app/Http/Controllers/User/UserClassesController.php @@ -51,13 +51,13 @@ class UserClassesController extends Controller public function delete_classes($classes_id) { Classes::find($classes_id)->delete(); - return redirect(route('user_classes')); + return redirect()->back(); } public function edit_classes($classes_id) { Classes::find($classes_id); - return redirect(route('user_classes')); + return redirect()->back(); } public function start_classes($classes_id) @@ -120,16 +120,16 @@ class UserClassesController extends Controller 'student_id_number' => $student_id_number, 'student_name' => $student_name, 'student_surname' => $student_surname, - 'seat_number' => $seat_number, + 'seat_number' => $seat_number ]); return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $seat_number, 'student_id_number' => $student_id_number, 'classes_id' => $classes_id]); } - public function preview_classes($classes_id) + public function preview_classes($classes_id, $orderBy='student_surname', $orderDirection='ASC') { if(!$classes_id == 0) { $classes = Classes::find($classes_id); - $attendances = Attendance::where('classes_id', $classes->id)->get(); + $attendances = Attendance::where('classes_id', $classes->id)->orderBy($orderBy,$orderDirection)->get(); $seat_numbers = $attendances->pluck('seat_number')->toArray(); $subject = Subject::find($classes->subject_id); $room_arrangement = Room::find($subject->room_id)->arrangement; @@ -137,6 +137,6 @@ class UserClassesController extends Controller $room_arrangement = Room::where('name', 'Inna sala')->first()->arrangement; } } - return view('user.user_preview_classes', ['classes_id' => $classes_id, 'room_arrangement' => $room_arrangement, 'attendances' => $attendances, 'seat_numbers' => $seat_numbers]); + return view('user.user_preview_classes', ['classes_id' => $classes_id, 'room_arrangement' => $room_arrangement, 'attendances' => $attendances, 'seat_numbers' => $seat_numbers, 'orderBy' => $orderBy, 'orderDirection' => $orderDirection]); } } diff --git a/app/Http/Controllers/User/UserSubjectsController.php b/app/Http/Controllers/User/UserSubjectsController.php index 94b046a..f7aedd3 100644 --- a/app/Http/Controllers/User/UserSubjectsController.php +++ b/app/Http/Controllers/User/UserSubjectsController.php @@ -14,7 +14,7 @@ class UserSubjectsController extends Controller public function index($groupBy = 'weekday') { setlocale(LC_ALL, 'pl', 'pl_PL', 'pl_PL.ISO8859-2', 'plk', 'polish', 'Polish'); $user_id = Auth::id(); - $subjects = Subject::where('user_id', $user_id)->get(); + $subjects = Subject::where('user_id', $user_id)->orderBy('name','ASC')->get(); $subjects_grouped = $subjects->groupBy($groupBy); $rooms = Room::all(); $weekdays = ['Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota', 'Niedziela']; @@ -43,18 +43,18 @@ class UserSubjectsController extends Controller 'room_id' => $room_id, 'user_id' => $user_id_n ]); - return redirect(route('user_subjects')); + return redirect()->back(); } public function delete_subject($subject_id) { Subject::find($subject_id)->delete(); - return redirect(route('user_subjects')); + return redirect()->back(); } public function edit_subject($subject_id) { Subject::find($subject_id); - return redirect(route('user_subjects')); + return redirect()->back(); } } diff --git a/public/css/app.css b/public/css/app.css index 0bda1a3..52a91bc 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -11199,3 +11199,14 @@ a.text-dark:focus { .card-header { background-color: #ececec; } +.card-custom { + display: flex; + justify-content: flex-start; + align-items: center; +} +.sort-span { + margin-right: 20px; +} +.form-custom { + width: auto; +} diff --git a/public/js/custom.js b/public/js/custom.js index d18547b..d636f41 100644 --- a/public/js/custom.js +++ b/public/js/custom.js @@ -1,6 +1,5 @@ $(document).ready(function(){ $('.add-mn-btn').on('click', function () { - console.log($('.add-mn-btn')); $('.czytnik').toggleClass('open'); }); @@ -22,4 +21,43 @@ $(document).ready(function(){ $(this).text('Dodaj nowy wpis') } }); + + $(".modal").on("hidden.bs.modal", function(){ + const originalText = $(this).find("#note_content_hidden").first().val(); + $(this).find("#note_content").first().val(originalText); + }); + + $('#sort-select').on('change', function() { + $(location).attr('href', $(this).val()) + }); + + $('#group-select').on('change', function() { + $(location).attr('href', $(this).val()) + }); + + function setSelectedOptionSortAttendances() { + const orderBy = $('#orderBy-hidden').first().val(); + const orderDirection = $('#orderDirection-hidden').first().val(); + const pattern = `/${orderBy}/${orderDirection}`; + const options = $('#sort-select').find('option'); + options.each(function() { + if($(this).val().search(pattern) !== -1) { + $('#sort-select').val($(this).val()); + } + }); + } + setSelectedOptionSortAttendances(); + + function setSelectedOptionGroup() { + const groupBy = $('#groupBy-hidden').first().val(); + const pattern = `/${groupBy}`; + const options = $('#group-select').find('option'); + options.each(function() { + if($(this).val().search(pattern) !== -1) { + $('#group-select').val($(this).val()); + } + }); + } + setSelectedOptionGroup(); + }); diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index d421692..df2322c 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -30,6 +30,7 @@

Dane dotyczące obecności znajdziesz także w zakładce Obecności. +
Do każdej obecności możesz dodać notatkę.
Rekordy dotyczące wszystkich obecności możesz grupować i wyeksportować. Przy eksporcie każda tabela-grupa trafi do pliku xlsx jako osobny arkusz.

@endsection diff --git a/resources/views/user/attendance_note.blade.php b/resources/views/user/attendance_note.blade.php new file mode 100644 index 0000000..46fb2b2 --- /dev/null +++ b/resources/views/user/attendance_note.blade.php @@ -0,0 +1,29 @@ + diff --git a/resources/views/user/attendances_table.blade.php b/resources/views/user/attendances_table.blade.php index 914ace4..a00c083 100644 --- a/resources/views/user/attendances_table.blade.php +++ b/resources/views/user/attendances_table.blade.php @@ -2,11 +2,14 @@ Nazwa zajęć Nr indeksu - Imię Nazwisko + Imię Nr miejsca @if(!$export == 1) + + @else + Notatka @endif @foreach ($attendances_list as $attendance) @@ -14,13 +17,27 @@ {{ App\Subject::find(App\Classes::find($attendance->classes_id)->subject_id)->name }}, {{ App\Classes::find($attendance->classes_id)-> date }} {{ App\Subject::find(App\Classes::find($attendance->classes_id)->subject_id)->time }}, sala {{ App\Room::find(App\Subject::find(App\Classes::find($attendance->classes_id)->subject_id)->room_id)->name }} {{ $attendance->student_id_number }} - {{ $attendance->student_name}} {{ $attendance->student_surname}} + {{ $attendance->student_name}} {{ $attendance->seat_number }} @if(!$export == 1) Usuń + @if(!$attendance->notes) + + + + @else + + + + @endif + @include('user.attendance_note', [$attendance]) + @else + + {{ $attendance->notes }} + @endif @endforeach diff --git a/resources/views/user/attendances_table_preview.blade.php b/resources/views/user/attendances_table_preview.blade.php index babbc27..fa10a8b 100644 --- a/resources/views/user/attendances_table_preview.blade.php +++ b/resources/views/user/attendances_table_preview.blade.php @@ -1,16 +1,41 @@ - + + @if(!$export == 1) + + + @else + + @endif @foreach ($attendances as $attendance) - + + @if(!$export == 1) + + @if(!$attendance->notes) + + @else + + @endif + @include('user.attendance_note', [$attendance]) + @else + + @endif @endforeach
Nr indeksu Imię Nazwisko Imię Nr miejsca Notatka
{{ $attendance->student_id_number }} {{ $attendance->student_name}} {{ $attendance->student_surname}} {{ $attendance->student_name}} {{ $attendance->seat_number }} + Usuń + + + + + + {{ $attendance->notes }} +
diff --git a/resources/views/user/user_attendances.blade.php b/resources/views/user/user_attendances.blade.php index 6ea2044..210ea45 100644 --- a/resources/views/user/user_attendances.blade.php +++ b/resources/views/user/user_attendances.blade.php @@ -103,16 +103,17 @@ @if ($attendances->count() > 0) -
- Grupuj: - po nazwie zajęć - po numerze indeksu - po numerze miejsca - Wyeksportuj do xlsx +
+ Grupuj: + +
+
- - @foreach ($attendances_grouped as $attendances_group_name => $attendances_list) @if($attendances_group_name) @if($grouped_by == 'classes_id') @@ -136,4 +137,5 @@
+ @endsection diff --git a/resources/views/user/user_classes.blade.php b/resources/views/user/user_classes.blade.php index 569c287..7e6b5fd 100644 --- a/resources/views/user/user_classes.blade.php +++ b/resources/views/user/user_classes.blade.php @@ -58,10 +58,13 @@

Moje zajęcia: ({{ $classes->count() }})

-
- Grupuj: - po nazwie przedmiotu - po dacie +
+ Grupuj: + +
diff --git a/resources/views/user/user_preview_classes.blade.php b/resources/views/user/user_preview_classes.blade.php index 5040b5c..c99f31a 100644 --- a/resources/views/user/user_preview_classes.blade.php +++ b/resources/views/user/user_preview_classes.blade.php @@ -29,10 +29,22 @@
- - @include('user.attendances_table_preview', $attendances) +
+ Sortuj: + + + +
+ @include('user.attendances_table_preview', ['attendances' => $attendances, 'export' => 0])
diff --git a/resources/views/user/user_subjects.blade.php b/resources/views/user/user_subjects.blade.php index c9df7ab..bd1569d 100644 --- a/resources/views/user/user_subjects.blade.php +++ b/resources/views/user/user_subjects.blade.php @@ -34,7 +34,7 @@
+
+
@foreach ($subjects_grouped as $subject_group_name => $subjects_list) @if($subject_group_name) diff --git a/routes/web.php b/routes/web.php index b7365f5..2da9b17 100644 --- a/routes/web.php +++ b/routes/web.php @@ -61,12 +61,13 @@ Route::group(array('prefix' => 'user', 'namespace' => 'User'), function() { //TO Route::get('/classes/start/{classes_id}', 'UserClassesController@start_classes')->name('user_start_classes'); Route::post('/classes/start', 'UserClassesController@start_classes_verified')->name('user_start_classes_verified')->middleware('classesCode'); Route::post('/classes/save', 'UserClassesController@save_classes_data')->name('user_save_classes_data'); - Route::get('/classes/preview/{classes_id?}', 'UserClassesController@preview_classes')->name('user_preview_classes'); + Route::get('/classes/preview/{classes_id}/{orderBy?}/{orderDirection?}', 'UserClassesController@preview_classes')->name('user_preview_classes'); Route::group(array('prefix' => 'add'), function() { Route::post('/subject', 'UserSubjectsController@add_subject')->name('user_add_subject'); Route::post('/classes', 'UserClassesController@add_classes')->name('user_add_classes'); Route::post('/attendance', 'UserAttendancesController@add_attendance')->name('user_add_attendance'); + Route::post('/attendance/note', 'UserAttendancesController@add_attendance_note')->name('user_add_attendance_note'); }); Route::group(array('prefix' => 'delete'), function() { @@ -83,5 +84,3 @@ Route::group(array('prefix' => 'user', 'namespace' => 'User'), function() { //TO Route::get('/export/attendances/{classes_id}', 'UserAttendancesController@export')->name('user_export'); Route::get('/export/attendances/grouped/{groupBy}', 'UserAttendancesController@export_grouped')->name('user_export_grouped'); }); - -