diff --git a/panel_manager/Evento.php b/panel_manager/Evento.php index e6e444e..37c84c1 100644 --- a/panel_manager/Evento.php +++ b/panel_manager/Evento.php @@ -56,6 +56,7 @@ class Evento implements \JsonSerializable while($fila = $rs->fetch_assoc()) { $result = new Evento(); $result->asignaDesdeDiccionario($fila); + } $rs->free(); } else { @@ -282,7 +283,7 @@ class Evento implements \JsonSerializable /** * @param array[string] Nombre de las propiedades de la clase. */ - const PROPERTIES = ['id', 'userId', 'title', 'start', 'end', 'idfilm']; + const PROPERTIES = ['id', 'userId', 'title', 'start', 'end', 'idfilm', 'start_time', 'seat_price', 'format', 'seats_full']; //'idfilm','idhall','idcinema','date', 'start_time', 'seat_price', 'format', 'seats_full']; private $id; @@ -292,16 +293,10 @@ class Evento implements \JsonSerializable private $end; private $idfilm; - - - /* - private $idhall; - private $idcinema; - private $date; private $start_time; private $seat_price; private $format; - private $seats_full;*/ + private $seats_full; private function __construct() @@ -313,6 +308,11 @@ class Evento implements \JsonSerializable return $this->id; } + public function getIdfilm() + { + return $this->idfilm; + } + public function getUserId() { return $this->userId; @@ -391,13 +391,19 @@ class Evento implements \JsonSerializable * @return Devuelve un objeto con propiedades públicas y que represente el estado de este evento. */ public function jsonSerialize() - { + { $o = new \stdClass(); $o->id = $this->id; $o->userId = $this->userId; $o->title = $this->title; $o->start = $this->start->format(self::MYSQL_DATE_TIME_FORMAT); $o->end = $this->end->format(self::MYSQL_DATE_TIME_FORMAT); + $o->start_time = $this->start_time; + $o->seat_price = $this->seat_price; + $o->format = $this->format; + $o->film = Session::getThisSessionFilm($this->idfilm); + + return $o; } @@ -419,13 +425,10 @@ class Evento implements \JsonSerializable "start" => $start, "end" => $end, "idfilm" => $session->getIdfilm(), - /*"idcinema" => $session->getIdcinema(), - "idhall" => $session->getIdhall(), - "date" => $session->getDate(), "start_time" => $session->getStartTime(), "seat_price" => $session->getSeatPrice(), "format" => $session->getFormat(), - "seats_full" => $session->getSeatsFull(),*/ + "seats_full" => $session->getSeatsFull(), ); return $dictionary; @@ -545,34 +548,6 @@ class Evento implements \JsonSerializable } } - /* - if (array_key_exists('idhall', $diccionario)) { - $idhall = $diccionario['idhall'] ?? null; - if (empty($idhall)) { - // throw new \BadMethodCallException('$diccionario[\'end\'] no puede ser una cadena vacía o nulo'); - } else { - $this->idhall = $idhall; - } - } - - if (array_key_exists('idcinema', $diccionario)) { - $idcinema = $diccionario['idcinema'] ?? null; - if (empty($idcinema)) { - // throw new \BadMethodCallException('$diccionario[\'end\'] no puede ser una cadena vacía o nulo'); - } else { - $this->idcinema = $idcinema; - } - } - - if (array_key_exists('date', $diccionario)) { - $date = $diccionario['date'] ?? null; - if (empty($date)) { - // throw new \BadMethodCallException('$diccionario[\'end\'] no puede ser una cadena vacía o nulo'); - } else { - $this->date = $date; - } - } - if (array_key_exists('start_time', $diccionario)) { $start_time = $diccionario['start_time'] ?? null; if (empty($start_time)) { @@ -607,7 +582,7 @@ class Evento implements \JsonSerializable } else { $this->seats_full = $seats_full; } - }*/ + } self::compruebaConsistenciaFechas($this->start, $this->end); diff --git a/panel_manager/eventos.php b/panel_manager/eventos.php index b7f7600..1c724e4 100644 --- a/panel_manager/eventos.php +++ b/panel_manager/eventos.php @@ -59,18 +59,17 @@ switch($_SERVER['REQUEST_METHOD']) { } // Generamos un array de eventos en formato JSON $json = json_encode($result, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK); - http_response_code(200); // 200 OK header('Content-Type: application/json; charset=utf-8'); - header('Content-Length: ' . mb_strlen($json)); - + header('Content-Length: ' . mb_strlen($json));; + echo $json; break; // Añadir un nuevo evento case 'POST': $errors = []; $data = []; - //Testing hacks + $correct_response = 'Operación completada'; $entityBody = file_get_contents('php://input'); @@ -103,14 +102,12 @@ switch($_SERVER['REQUEST_METHOD']) { $start = date('Y-m-d', $start); $end = date('Y-m-d', $end); - if($start >= $end) + if($start > $end) $errors['date'] = 'La fecha inicial no puede ser antes o el mismo dia que la final.'; } if (empty($startHour)) $errors['startHour'] = 'Es necesario escoger el horario de la sesion.'; - error_log("El valor de idfilm: ".$idfilm); - if (!is_numeric($idfilm) && $idfilm <= 0 ) $errors['idfilm'] = 'No se ha seleccionado una pelicula.'; @@ -118,7 +115,7 @@ switch($_SERVER['REQUEST_METHOD']) { $msg = Session::create_session($_SESSION["cinema"], $hall, $startHour, $startDate, $idfilm, $price, $format); if(strcmp($msg,$correct_response)!== 0) - $errors['price'] = $msg; + $errors['global'] = $msg; else $data['message'] = $msg; @@ -136,7 +133,7 @@ switch($_SERVER['REQUEST_METHOD']) { break; case 'PUT': - error_log("PUT"); + /* // 1. Comprobamos si es una consulta de un evento concreto -> eventos.php?idEvento=XXXXX $idEvento = filter_input(INPUT_GET, 'idEvento', FILTER_VALIDATE_INT); // 2. Leemos el contenido que nos envían @@ -162,8 +159,83 @@ switch($_SERVER['REQUEST_METHOD']) { header('Content-Length: ' . mb_strlen($json)); echo $json; + */ + //If the user want to move a session + if(isset($_GET["resize"]) && $_GET["resize"]){ + + + }else{ + + $errors = []; + $data = []; + + $correct_response = 'Se ha editado la session con exito'; + + $entityBody = file_get_contents('php://input'); + $dictionary = json_decode($entityBody); + + if (!is_object($dictionary)) + $errors['global'] = 'El cuerpo de la petición no es valido'; + + $price = $dictionary->{"price"} ?? ""; + $format = $dictionary->{"format"} ?? ""; + $hall = $dictionary->{"hall"} ?? ""; + $startDate = $dictionary->{"startDate"} ?? ""; + + + + $endDate = $dictionary->{"endDate"} ?? ""; + $startHour = $dictionary->{"startHour"} ?? ""; + $idfilm = $dictionary->{"idFilm"} ?? ""; + + $or_hall = $dictionary->{"og_hall"} ?? ""; + $or_date = $dictionary->{"og_date"} ?? ""; + $or_start = $dictionary->{"og_start"} ?? ""; + + if (empty($price) || $price <= 0 ) + $errors['price'] = 'El precio no puede ser 0.'; + if (empty($format)) + $errors['format'] = 'El formato no puede estar vacio. Ej: 3D, 2D, voz original'; + if (empty($hall) || $hall<=0 ) + $errors['hall'] = 'La sala no puede ser 0 o menor'; + if (empty($startDate)) + $errors['startDate'] = 'Las sesiones tienen que empezar algun dia.'; + else if (empty($endDate)) + $errors['endDate'] = 'Las sesiones tienen que teminar algun dia.'; + else { + $start = strtotime($startDate); + $end = strtotime($endDate); + $start = date('Y-m-d', $start); + $end = date('Y-m-d', $end); + if($start > $end) + $errors['date'] = 'La fecha inicial no puede ser antes o el mismo dia que la final.'; + } + if (empty($startHour)) + $errors['startHour'] = 'Es necesario escoger el horario de la sesion.'; + + if (!is_numeric($idfilm) && $idfilm <= 0 ) + $errors['idfilm'] = 'No se ha seleccionado una pelicula.'; + if(empty($errors)){ + $msg = Session::edit_session($_SESSION["cinema"], $or_hall, $or_date, $or_start, $hall, $startHour, $startDate, $idfilm, $price, $format); + + if(strcmp($msg,$correct_response)!== 0) + $errors['global'] = $msg; + else + $data['message'] = $msg; + } + + if (!empty($errors)) { + $data['success'] = false; + $data['errors'] = $errors; + } else { + $data['success'] = true; + } + } + + echo json_encode($data); break; case 'DELETE': + // 1. Comprobamos si es una consulta de un evento concreto -> eventos.php?idEvento=XXXXX $idEvento = filter_input(INPUT_GET, 'idEvento', FILTER_VALIDATE_INT); // 2. Borramos el evento diff --git a/panel_manager/includes/EditSessionForm.php b/panel_manager/includes/EditSessionForm.php new file mode 100644 index 0000000..53518db --- /dev/null +++ b/panel_manager/includes/EditSessionForm.php @@ -0,0 +1,99 @@ +allFilmData(); + + $form=' +