diff --git a/app/Http/Controllers/User/UserClassesController.php b/app/Http/Controllers/User/UserClassesController.php
index 6e83abc..f20e4f4 100644
--- a/app/Http/Controllers/User/UserClassesController.php
+++ b/app/Http/Controllers/User/UserClassesController.php
@@ -123,43 +123,63 @@ class UserClassesController extends Controller
$student_name = $request->input('student_name');
$student_surname = $request->input('student_surname');
$classes = Classes::find($request->get('classes_id'));
+ $subject = Subject::find($classes->subject_id);
+ $room_capacity = Room::find($subject->room_id)->capacity;
+ $attendances = Attendance::where('classes_id', $classes->id)->get();
+ $student_ids = $attendances->pluck('student_id_number')->toArray();
+ $seat_numbers = $attendances->pluck('seat_number')->toArray();
- if($classes->mode == 'quick') {
- Attendance::create([
- 'classes_id' => $classes->id,
- 'student_id_number' => $student_id_number,
- 'student_name' => $student_name,
- 'student_surname' => $student_surname,
- 'seat_number' => null
- ]);
- return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => null, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'mode' => $classes->mode]);
-
+ if(in_array($student_id_number, $student_ids)) { // if student attendance record already exists
+ $student_seat_number = Attendance::where('student_id_number', $student_id_number)->first()->seat_number;
+ $warning = 'Ten numer indeksu został już wcześniej zapisany na te zajęcia.';
+ return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $student_seat_number, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'mode' => $classes->mode, 'warning' => $warning]);
} else {
- $attendances = Attendance::where('classes_id', $classes->id)->get();
- $seat_numbers = $attendances->pluck('seat_number')->toArray();
- $subject = Subject::find($classes->subject_id);
- $room_arrangement = Room::find($subject->room_id)->arrangement;
- if(!$room_arrangement) {
- $room_arrangement = Room::where('name', 'Inna sala')->first()->arrangement;
- }
- $room_rows = count(explode("++", $room_arrangement));
- if($room_rows > 4) { //max 4 rows on one page
- $multi_parts = true;
- $parts_number = ceil($room_rows/4);
+ if (count($seat_numbers) >= $room_capacity) { // if there are no more free seats in room, add student without assigning seat number (regardless of the classes mode)
+ Attendance::create([
+ 'classes_id' => $classes->id,
+ 'student_id_number' => $student_id_number,
+ 'student_name' => $student_name,
+ 'student_surname' => $student_surname,
+ 'seat_number' => null
+ ]);
+ $warning = "Zostałeś zapisany na listę obecności, ale bez przyznanego miejsca.";
+ return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => null, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'mode' => $classes->mode, 'warning' => $warning]);
} else {
- $multi_parts = false;
- $parts_number = 1;
- }
+ if ($classes->mode == 'quick') {
+ Attendance::create([
+ 'classes_id' => $classes->id,
+ 'student_id_number' => $student_id_number,
+ 'student_name' => $student_name,
+ 'student_surname' => $student_surname,
+ 'seat_number' => null
+ ]);
+ return view('map.summary_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => null, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'mode' => $classes->mode, 'warning' => null]);
+ } else {
+ // prepare seat map
+ $room_arrangement = Room::find($subject->room_id)->arrangement;
+ if (!$room_arrangement) {
+ $room_arrangement = Room::where('name', 'Inna sala')->first()->arrangement;
+ }
+ $room_rows = count(explode("++", $room_arrangement));
+ if ($room_rows > 4) { //max 4 rows on one page
+ $multi_parts = true;
+ $parts_number = ceil($room_rows / 4);
+ } else {
+ $multi_parts = false;
+ $parts_number = 1;
+ }
- if($classes->mode == 'test') {
- $room_capacity = Room::find($subject->room_id)->capacity;
- $random_seat = rand(1, $room_capacity);
- while(in_array($random_seat, $seat_numbers)) {
- $random_seat = rand(1, $room_capacity);
+ if ($classes->mode == 'test') {
+ $random_seat = rand(1, $room_capacity);
+ while (in_array($random_seat, $seat_numbers)) {
+ $random_seat = rand(1, $room_capacity);
+ }
+ return view('map.seat_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $random_seat, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'seat_numbers' => $seat_numbers, 'room_arrangement' => $room_arrangement, 'multi_parts' => $multi_parts, 'parts_number' => $parts_number, 'mode' => 'test', 'random_seat' => $random_seat]);
+ } else {
+ return view('map.seat_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'seat_numbers' => $seat_numbers, 'room_arrangement' => $room_arrangement, 'multi_parts' => $multi_parts, 'parts_number' => $parts_number, 'mode' => null]);
+ }
}
- return view('map.seat_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'seat_number' => $random_seat, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'seat_numbers' => $seat_numbers, 'room_arrangement' => $room_arrangement, 'multi_parts' => $multi_parts, 'parts_number' =>$parts_number, 'mode' => 'test', 'random_seat' => $random_seat]);
}
- return view('map.seat_map', ['student_name' => $student_name, 'student_surname' => $student_surname, 'student_id_number' => $student_id_number, 'classes_id' => $classes->id, 'seat_numbers' => $seat_numbers, 'room_arrangement' => $room_arrangement, 'multi_parts' => $multi_parts, 'parts_number' =>$parts_number, 'mode' => null]);
}
}
@@ -177,7 +197,7 @@ class UserClassesController extends Controller
'student_surname' => $student_surname,
'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, 'mode' => null]);
+ 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, 'mode' => null, 'warning' => null]);
}
public function preview_classes($classes_id, $orderBy='student_surname', $orderDirection='ASC')
diff --git a/public/js/map/seatchart-preview.js b/public/js/map/seatchart-preview.js
index 1ab22cb..2274265 100644
--- a/public/js/map/seatchart-preview.js
+++ b/public/js/map/seatchart-preview.js
@@ -5,34 +5,37 @@ function assignPlaces() {
const seat_number = $(this).attr('id').split('++')[0];
const name = $(this).attr('id').split('++')[1];
const surname = $(this).attr('id').split('++')[2];
- let map_seat = '';
- if(!multi_parts) {
- map_seat = $('#seat-map').find(`#${seat_number}`);
- } else {
- const parts_number = $('#multi_parts_number').val();
- let index = 0;
- map_seat = $('#seat-map-0').find(`#${seat_number}`);
- while (!map_seat.length && index < parts_number) {
- index++;
- map_seat = $(`#seat-map-${index}`).find(`#${seat_number}`);
+ if(seat_number) {
+ let map_seat = '';
+ if(!multi_parts) {
+ map_seat = $('#seat-map').find(`#${seat_number}`);
+ } else {
+ const parts_number = $('#multi_parts_number').val();
+ let index = 0;
+ map_seat = $('#seat-map-0').find(`#${seat_number}`);
+ while (!map_seat.length && index < parts_number) {
+ index++;
+ map_seat = $(`#seat-map-${index}`).find(`#${seat_number}`);
+ }
+ }
+ if(map_seat.length) {
+ map_seat.html(`${seat_number}
${name} ${surname}`);
+ map_seat.on('mouseover', () => {
+ map_seat.css('backgroundColor', 'lightgrey');
+ $(this).css('backgroundColor', 'lightgrey');
+ }).on('mouseleave', () => {
+ map_seat.css('backgroundColor', '#649a24');
+ $(this).css('backgroundColor', 'unset');
+ });
+ $(this).on('mouseover', () => {
+ map_seat.css('backgroundColor', 'lightgrey');
+ $(this).css('backgroundColor', 'lightgrey');
+ }).on('mouseleave', () => {
+ map_seat.css('backgroundColor', '#649a24');
+ $(this).css('backgroundColor', 'unset');
+ })
}
}
- console.log(map_seat);
- map_seat.html(`${seat_number}
${name} ${surname}`);
- map_seat.on('mouseover', () => {
- map_seat.css('backgroundColor', 'lightgrey');
- $(this).css('backgroundColor', 'lightgrey');
- }).on('mouseleave', () => {
- map_seat.css('backgroundColor', '#649a24');
- $(this).css('backgroundColor', 'unset');
- });
- $(this).on('mouseover', () => {
- map_seat.css('backgroundColor', 'lightgrey');
- $(this).css('backgroundColor', 'lightgrey');
- }).on('mouseleave', () => {
- map_seat.css('backgroundColor', '#649a24');
- $(this).css('backgroundColor', 'unset');
- })
})
}
diff --git a/resources/views/map/start_map.blade.php b/resources/views/map/start_map.blade.php
index 3041638..4a9f8e2 100644
--- a/resources/views/map/start_map.blade.php
+++ b/resources/views/map/start_map.blade.php
@@ -34,6 +34,27 @@
+
+