diff --git a/assets/php/includes/session.php b/assets/php/includes/session.php index b5198ba..82a44b5 100644 --- a/assets/php/includes/session.php +++ b/assets/php/includes/session.php @@ -28,7 +28,16 @@ public static function getListSessions($hall,$cinema,$date){ $bd = new SessionDAO('complucine'); if($bd ) { - return $bd->getAllSessions($hall, $cinema, $date); + if($date) + return $bd->getAllSessions($hall, $cinema, $date, null); + else + return $bd->getAllSessions($hall, $cinema, null, null); + } + } + public static function getListSessionsBetween2Dates($hall,$cinema,$start,$end){ + $bd = new SessionDAO('complucine'); + if($bd ) { + return $bd->getAllSessions($hall, $cinema, $start, $end); } } diff --git a/assets/php/includes/session_dao.php b/assets/php/includes/session_dao.php index 1ce608f..f62b4ac 100644 --- a/assets/php/includes/session_dao.php +++ b/assets/php/includes/session_dao.php @@ -62,24 +62,43 @@ } //Returns a query to get all the session's data. - public function getAllSessions($hall, $cinema, $date){ - $date = date('Y-m-d', strtotime( $date ) ); + public function getAllSessions($hall, $cinema, $date, $end){ + if($end){ + + $date = $date->format("Y-m-d"); + $end = $end->format("Y-m-d"); + + // su output es date: 2021-05-30 end: 2021-07-11 + $sql = sprintf( "SELECT * FROM session WHERE + idcinema = '%s' AND idhall = '%s' AND date BETWEEN '%s' AND '%s' ORDER BY start_time ASC;", + $cinema, $hall, $date, $end); + } + + + if($date && !$end){ + $date = date('Y-m-d', strtotime( $date ) ); + + $sql = sprintf( "SELECT * FROM session WHERE + idcinema = '%s' AND idhall = '%s' AND date = '%s' ORDER BY start_time ASC;", + $cinema, $hall, $date); + }else{ + $sql = sprintf( "SELECT * FROM session WHERE + idcinema = '%s' AND idhall = '%s' ORDER BY start_time ASC;", + $cinema, $hall); + } - $sql = sprintf( "SELECT * FROM session WHERE - idcinema = '%s' AND idhall = '%s' AND date = '%s' ORDER BY start_time ASC;", - $cinema, $hall, $date); $resul = mysqli_query($this->mysqli, $sql) or die ('Error into query database'); $sessions = null; - while($fila=mysqli_fetch_array($resul)){ + while($fila=$resul->fetch_assoc()){ $sessions[] = $this->loadSession($fila["id"], $fila["idfilm"], $fila["idhall"], $fila["idcinema"], $fila["date"], $fila["start_time"], $fila["seat_price"], $fila["format"], $fila["seats_full"]); } mysqli_free_result($resul); return $sessions; } - + public function getSessions_Film_Cinema($idFiml, $idCinema){ $sql = sprintf( "SELECT * FROM session WHERE session.idfilm = '%d' AND session.idcinema = '%d' ", $idFiml, $idCinema); $resul = mysqli_query($this->mysqli, $sql) or die ('Error into query database'); diff --git a/panel_manager/eventos.php b/panel_manager/eventos.php index 74fcfaa..543d156 100644 --- a/panel_manager/eventos.php +++ b/panel_manager/eventos.php @@ -1,17 +1,12 @@ eventos.php?start=XXXXX&end=YYYYY $start = filter_input(INPUT_GET, 'start', FILTER_VALIDATE_REGEXP, array("options" => array("regexp"=>"/\d{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3[0-1]))/"))); $end = filter_input(INPUT_GET, 'end', FILTER_VALIDATE_REGEXP, array("options" => array("default" => null, "regexp"=>"/\d{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3[0-1]))/"))); - if ($start) { + if ($start) { + $startDateTime = $start . ' 00:00:00'; $endDateTime = $end; if ($end) { @@ -52,14 +48,14 @@ switch($_SERVER['REQUEST_METHOD']) { } $result = Evento::buscaEntreFechas(1, $startDateTime, $endDateTime); } else { + // Comprobamos si es una lista de eventos completa $result = Evento::buscaTodosEventos(1); // HACK: normalmente debería de ser App::getSingleton()->idUsuario(); } } - // 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)); @@ -70,18 +66,17 @@ switch($_SERVER['REQUEST_METHOD']) { case 'POST': // 1. Leemos el contenido que nos envían $entityBody = file_get_contents('php://input'); - // 2. Verificamos que nos envían un objeto $dictionary = json_decode($entityBody); if (!is_object($dictionary)) { - throw new ParametroNoValidoException('El cuerpo de la petición no es valido'); + //throw new ParametroNoValidoException('El cuerpo de la petición no es valido'); } // 3. Reprocesamos el cuerpo de la petición como un array PHP $dictionary = json_decode($entityBody, true); $dictionary['userId'] = 1;// HACK: normalmente debería de ser App::getSingleton()->idUsuario(); $e = Evento::creaDesdeDicionario($dictionary); - error_log("hmmm"); + // 4. Guardamos el evento en BD $result = Evento::guardaOActualiza($e); @@ -96,6 +91,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 @@ -103,9 +99,10 @@ switch($_SERVER['REQUEST_METHOD']) { // 3. Verificamos que nos envían un objeto $dictionary = json_decode($entityBody); if (!is_object($dictionary)) { - throw new ParametroNoValidoException('El cuerpo de la petición no es valido'); + //throw new ParametroNoValidoException('El cuerpo de la petición no es valido'); } - + + // 4. Reprocesamos el cuerpo de la petición como un array PHP $dictionary = json_decode($entityBody, true); $e = Evento::buscaPorId($idEvento); @@ -132,8 +129,6 @@ switch($_SERVER['REQUEST_METHOD']) { header('Content-Length: 0'); break; default: - throw new MetodoNoSoportadoException($_SERVER['REQUEST_METHOD']. ' no está soportado'); + //throw new MetodoNoSoportadoException($_SERVER['REQUEST_METHOD']. ' no está soportado'); break; - - -} +} \ No newline at end of file diff --git a/panel_manager/sessioncalendar.js b/panel_manager/sessioncalendar.js index 6b36044..998f0cb 100644 --- a/panel_manager/sessioncalendar.js +++ b/panel_manager/sessioncalendar.js @@ -1,107 +1,108 @@ $(document).ready(function() { - var calendar = $('#calendar').fullCalendar({ - editable:true, - header:{ - left:'prev,next today', - center:'title', - right:'' - }, - events: 'eventos.php', - selectable:true, - selectHelper:true, - select: function(start, end, allDay) - { - var title = confirm("¿Estas son las fechas correctas?"); - if(title) - { - - var e = { - "start" : $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss"), - "end" : $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss"), - }; - $.ajax({ - url:"eventos.php", - type:"POST", - contentType: 'application/json; charset=utf-8', - dataType: "json", - data:JSON.stringify(e), - success:function() - { - calendar.fullCalendar('refetchEvents'); - alert("Added Successfully"); - } - }) - } - }, - editable:true, - eventResize:function(event) + var calendar = $('#calendar').fullCalendar({ + editable:true, + header:{ + left:'prev,next today', + center:'title', + right:'month,agendaWeek,agendaDay' + }, + events: 'eventos.php', + selectable:true, + selectHelper:true, + timeFormat: 'H:mm', + select: function(start, end, allDay) + { + var title = prompt("Enter Event Title"); + if(title) { var e = { - "id" : event.id, - "userId": event.userId, - "start" : $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss"), - "end" : $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss"), - "title" : event.title - }; - - $.ajax({ - url:"eventos.php?idEvento="+event.id, - type:"PUT", - contentType: 'application/json; charset=utf-8', - dataType:"json", - data:JSON.stringify(e), - success:function(){ - calendar.fullCalendar('refetchEvents'); - alert('Event Update'); - } - }) - }, - - eventDrop:function(event) - { - var e = { - "id" : event.id, - "userId": event.userId, - "start" : $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss"), - "end" : $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss"), - "title" : event.title + "start" : $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss"), + "end" : $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss"), + "title" : title }; $.ajax({ - url:"eventos.php?idEvento="+event.id, + url:"eventos.php", + type:"POST", contentType: 'application/json; charset=utf-8', dataType: "json", - type:"PUT", data:JSON.stringify(e), success:function() { calendar.fullCalendar('refetchEvents'); - alert("Event Updated"); + alert("Added Successfully"); } - }); - }, - - eventClick:function(event) - { - if(confirm("Are you sure you want to remove it?")) - { - var id = event.id; - $.ajax({ - url:"eventos.php?idEvento="+id, - contentType: 'application/json; charset=utf-8', - dataType: "json", - type:"DELETE", - success:function() - { - calendar.fullCalendar('refetchEvents'); - alert("Event Removed"); - }, - error: function(XMLHttpRequest, textStatus, errorThrown) { - alert("Status: " + textStatus); alert("Error: " + errorThrown); - } - }) + }) + } + }, + editable:true, + eventResize:function(event) + { + var e = { + "id" : event.id, + "userId": event.userId, + "start" : $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss"), + "end" : $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss"), + "title" : event.title + }; + + $.ajax({ + url:"eventos.php?idEvento="+event.id, + type:"PUT", + contentType: 'application/json; charset=utf-8', + dataType:"json", + data:JSON.stringify(e), + success:function(){ + calendar.fullCalendar('refetchEvents'); + alert('Event Update'); } - }, - - }); - }); \ No newline at end of file + }) + }, + + eventDrop:function(event) + { + var e = { + "id" : event.id, + "userId": event.userId, + "start" : $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss"), + "end" : $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss"), + "title" : event.title + }; + $.ajax({ + url:"eventos.php?idEvento="+event.id, + contentType: 'application/json; charset=utf-8', + dataType: "json", + type:"PUT", + data:JSON.stringify(e), + success:function() + { + calendar.fullCalendar('refetchEvents'); + alert("Event Updated"); + } + }); + }, + + eventClick:function(event) + { + if(confirm("Are you sure you want to remove it?")) + { + var id = event.id; + $.ajax({ + url:"eventos.php?idEvento="+id, + contentType: 'application/json; charset=utf-8', + dataType: "json", + type:"DELETE", + success:function() + { + calendar.fullCalendar('refetchEvents'); + alert("Event Removed"); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + alert("Status: " + textStatus); alert("Error: " + errorThrown); + } + }) + } + }, + + }); + }); \ No newline at end of file