option = $option; $this->cinema = $cinema; $options = array("action" => "./?state=".$option); parent::__construct('formHall',$options); } protected function generaCamposFormulario($data, $errores = array()){ //Prepare the data if($this->option == "new_hall"){ $number = $data['number'] ?? ""; $rows = $data['rows'] ?? '12'; $cols = $data['cols'] ?? '8'; }else { $number = $data['number'] ?? $_POST["number"]; $rows = $data['rows'] ?? $_POST["rows"]; $cols = $data['cols'] ?? $_POST["cols"]; } $og_number = $data['og_number'] ?? $number; //Seats_map $seats = 0; $seats_map = array(); for($i = 1;$i <= $rows; $i++){ for($j = 1; $j <= $cols; $j++){ $seats_map[$i][$j] = "-1"; } } //Show the original seats_map once u click restart or the first time u enter this form from manage_halls's form if(isset($data["restart"]) || isset($_POST["edit_hall"]) ){ $seat_list = Seat::getSeatsMap($og_number, $this->cinema); if($seat_list){ foreach($seat_list as $seat){ $seats_map[$seat->getNumRows()][$seat->getNumCol()] = $seat->getState(); if($seat->getState()>=0){ $seats++; } } } }//Show the checkbox seats_map updated and everything to selected if alltoone was pressed else{ $alltoone = $_POST["alltoone"] ?? 0; for($i = 1;$i <= $rows; $i++){ for($j = 1; $j <= $cols; $j++){ if($alltoone || isset($data["checkbox".$i.$j])) { $seats_map[$i][$j] = $data["checkbox".$i.$j] ?? "0"; $seats++; if($seats_map[$i][$j] == "-1"){ $seats_map[$i][$j] = "0"; } }else $seats_map[$i][$j] = "-1"; } } } $htmlErroresGlobales = self::generaListaErroresGlobales($errores); $errorNumber = self::createMensajeError($errores, 'number', 'span', array('class' => 'error')); $errorSeats = self::createMensajeError($errores, 'seats', 'span', array('class' => 'error')); $html = '
'.$htmlErroresGlobales.' '.$errorSeats.'
Mapa de Asientos


'; if($this->option == "edit_hall") $html .= ' '; $html .='
'.$errorNumber.'


'; if($this->option == "new_hall") $html .=' '; if($this->option == "edit_hall"){ $html .=' '; } $html .='

Pantalla

'; for($j = 1; $j<=$cols; $j++){ $html .= ' '; } $html .= ''; for($i = 1;$i<=$rows;$i++){ $html .= ' '; for($j=1; $j<=$cols; $j++){ if($seats_map[$i][$j]>=0){ $html .= ' ';} else { $html .= ' ';} } $html .=''; } $html .= '
'.$j.'
'.$i.'
'; return $html; } //Methods: //Process form: protected function procesaFormulario($datos){ $result = array(); $rows = $datos['rows']; $cols = $datos['cols']; $og_number = $datos["og_number"]; //Prepare the seat_map $seats_map = array(); $seats = 0; for($i = 1;$i <= $rows; $i++){ for($j = 1; $j <= $cols; $j++){ if(isset($datos["checkbox".$i.$j])){ $seats_map[$i][$j] = $datos["checkbox".$i.$j]; $seats++; if($seats_map[$i][$j] == "-1"){ $seats_map[$i][$j] = "0"; } }else{ $seats_map[$i][$j] = "-1"; } } } if ($seats == 0 && isset($datos["sumbit"]) ) { $result['seats'] = "
  • No puede haber 0 asientos disponibles.

  • "; } $number = $datos['number'] ?? null; if (empty($number) && isset($datos["sumbit"])) { $result['number'] = "
  • El numero de sala tiene que ser mayor que 0.

  • "; } if (count($result) === 0 && isset($datos["sumbit"]) ) { if($this->option == "new_hall"){ $_SESSION['msg'] = Hall::create_hall($number, $this->cinema, $rows, $cols, $seats, $seats_map); $result = './?state=success'; } if($this->option == "edit_hall"){ $_SESSION['msg'] = Hall::edit_hall($number,$this->cinema, $rows, $cols, $seats, $seats_map, $og_number); $result = './?state=success'; } } if (!isset($result['number']) && isset($datos["delete"]) ) { if($this->option == "edit_hall"){ $_SESSION['msg'] = Hall::delete_hall($number, $this->cinema, $rows, $cols, $seats, $seats_map, $og_number); $result = './?state=success'; } } return $result; } } ?>