57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\View\Components;
 | |
| 
 | |
| use App\Models\Room;
 | |
| use Illuminate\View\Component;
 | |
| 
 | |
| class SeatChooser extends Component
 | |
| {
 | |
| 
 | |
|     public int $room_id;
 | |
|     public int $showing_id;
 | |
|     public Room $room;
 | |
| 
 | |
|     /**
 | |
|      * Create a new component instance.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct(int $room_id, int $showing_id)
 | |
|     {
 | |
|         $this->room_id = $room_id;
 | |
|         $this->room = Room::find($room_id);
 | |
|         $this->showing_id = $showing_id;
 | |
|     }
 | |
| 
 | |
|     public function matrixGenerate() {
 | |
|         // returns a matrix of seats
 | |
|         $m = [];
 | |
|         // first make empty matrix
 | |
|         for ($i = 0; $i < $this->room->room_rows-1; $i++) {
 | |
|             $m[$i] = [];
 | |
|             for ($j = 0; $j < $this->room->room_columns-1; $j++) {
 | |
|                 $m[$i][$j] = null;
 | |
|             }
 | |
|         }
 | |
|         $seats = $this->room->seats;
 | |
|         foreach ($seats as $seat) {
 | |
|             $m[$seat->seat_row][$seat->seat_column] = $seat;
 | |
|         }
 | |
|         return $m;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Get the view / contents that represent the component.
 | |
|      *
 | |
|      * @return \Illuminate\Contracts\View\View|\Closure|string
 | |
|      */
 | |
|     public function render()
 | |
|     {
 | |
|         return view('components.seat-chooser', [
 | |
|             'room' => $this->room,
 | |
|             'seatmatrix' => $this->matrixGenerate(),
 | |
|             'showing_id' => $this->showing_id,
 | |
|         ]);
 | |
|     }
 | |
| }
 |