Filtro de salas en sesiones

This commit is contained in:
Markines16 2021-06-03 12:53:53 +02:00 committed by GitHub
parent ade555d392
commit 0d084df6a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 183 additions and 130 deletions

View File

@ -15,14 +15,14 @@ class Evento implements \JsonSerializable
* *
* @return array[Evento] Lista de eventos del usuario con id $userId. * @return array[Evento] Lista de eventos del usuario con id $userId.
*/ */
public static function buscaTodosEventos(int $userId) public static function buscaTodosEventos(int $userId, $idhall)
{ {
if (!$userId) { if (!$userId) {
// throw new \BadMethodCallException('$userId no puede ser nulo.'); // throw new \BadMethodCallException('$userId no puede ser nulo.');
} }
$result = []; $result = [];
$sessions = Session::getListSessions("1","1",null); $sessions = Session::getListSessions($idhall,"1",null);
foreach($sessions as $s){ foreach($sessions as $s){
$e = new Evento(); $e = new Evento();
@ -41,7 +41,7 @@ class Evento implements \JsonSerializable
* *
* @return Evento Evento encontrado. * @return Evento Evento encontrado.
*/ */
public static function buscaPorId(int $idEvento) public static function buscaPorId(int $idEvento, $idhall)
{ {
if (!$idEvento) { if (!$idEvento) {
throw new \BadMethodCallException('$idEvento no puede ser nulo.'); throw new \BadMethodCallException('$idEvento no puede ser nulo.');
@ -76,7 +76,7 @@ class Evento implements \JsonSerializable
* *
* @return array[Evento] Lista de eventos encontrados. * @return array[Evento] Lista de eventos encontrados.
*/ */
public static function buscaEntreFechas(int $userId, string $start, string $end = null) public static function buscaEntreFechas(int $userId, string $start, string $end = null, $idhall)
{ {
if (!$userId) { if (!$userId) {
//throw new \BadMethodCallException('$userId no puede ser nulo.'); //throw new \BadMethodCallException('$userId no puede ser nulo.');
@ -101,7 +101,7 @@ class Evento implements \JsonSerializable
$result = []; $result = [];
$sessions = Session::getListSessionsBetween2Dates("1","1",$startDate,$endDate); $sessions = Session::getListSessionsBetween2Dates($idhall,"1",$startDate,$endDate);
foreach($sessions as $s){ foreach($sessions as $s){
$e = new Evento(); $e = new Evento();
@ -292,7 +292,10 @@ class Evento implements \JsonSerializable
private $end; private $end;
private $idfilm; private $idfilm;
/*private $idhall;
/*
private $idhall;
private $idcinema; private $idcinema;
private $date; private $date;
private $start_time; private $start_time;
@ -404,7 +407,7 @@ class Evento implements \JsonSerializable
$film = Session::getThisSessionFilm($session->getIdfilm()); $film = Session::getThisSessionFilm($session->getIdfilm());
$dur = $film["duration"]+$extraDurationBetweenFilms; $dur = $film["duration"]+$extraDurationBetweenFilms;
$tittle = "Sala: ".$session->getIdhall()." ".$film["tittle"]; $tittle = str_replace('_', ' ', $film["tittle"]) ;
$start = $session->getDate()." ".$session->getStartTime(); $start = $session->getDate()." ".$session->getStartTime();
$end = date('Y-m-d H:i:s', strtotime( $start . ' +'.$dur.' minute')); $end = date('Y-m-d H:i:s', strtotime( $start . ' +'.$dur.' minute'));
@ -541,6 +544,7 @@ class Evento implements \JsonSerializable
$this->idfilm = $idfilm; $this->idfilm = $idfilm;
} }
} }
/* /*
if (array_key_exists('idhall', $diccionario)) { if (array_key_exists('idhall', $diccionario)) {
$idhall = $diccionario['idhall'] ?? null; $idhall = $diccionario['idhall'] ?? null;

View File

@ -30,11 +30,13 @@ $result = null;
switch($_SERVER['REQUEST_METHOD']) { switch($_SERVER['REQUEST_METHOD']) {
// Consulta de datos // Consulta de datos
case 'GET': case 'GET':
$hall = $_GET["hall"];
// Comprobamos si es una consulta de un evento concreto -> eventos.php?idEvento=XXXXX // Comprobamos si es una consulta de un evento concreto -> eventos.php?idEvento=XXXXX
$idEvento = filter_input(INPUT_GET, 'idEvento', FILTER_VALIDATE_INT); $idEvento = filter_input(INPUT_GET, 'idEvento', FILTER_VALIDATE_INT);
if ($idEvento) { if ($idEvento) {
$result = []; $result = [];
$result[] = Evento::buscaPorId((int)$idEvento); $result[] = Evento::buscaPorId((int)$idEvento,$hall);
} else { } else {
// Comprobamos si es una lista de eventos entre dos fechas -> eventos.php?start=XXXXX&end=YYYYY // Comprobamos si es una lista de eventos entre dos fechas -> 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]))/"))); $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]))/")));
@ -46,11 +48,11 @@ switch($_SERVER['REQUEST_METHOD']) {
if ($end) { if ($end) {
$endDateTime = $end. ' 00:00:00'; $endDateTime = $end. ' 00:00:00';
} }
$result = Evento::buscaEntreFechas(1, $startDateTime, $endDateTime); $result = Evento::buscaEntreFechas(1, $startDateTime, $endDateTime, $hall);
} else { } else {
// Comprobamos si es una lista de eventos completa // Comprobamos si es una lista de eventos completa
$result = Evento::buscaTodosEventos(1); // HACK: normalmente debería de ser App::getSingleton()->idUsuario(); $result = Evento::buscaTodosEventos(1, $hall); // HACK: normalmente debería de ser App::getSingleton()->idUsuario();
} }
} }
// Generamos un array de eventos en formato JSON // Generamos un array de eventos en formato JSON
@ -75,6 +77,7 @@ switch($_SERVER['REQUEST_METHOD']) {
// 3. Reprocesamos el cuerpo de la petición como un array PHP // 3. Reprocesamos el cuerpo de la petición como un array PHP
$dictionary = json_decode($entityBody, true); $dictionary = json_decode($entityBody, true);
$dictionary['userId'] = 1;// HACK: normalmente debería de ser App::getSingleton()->idUsuario(); $dictionary['userId'] = 1;// HACK: normalmente debería de ser App::getSingleton()->idUsuario();
$e = Evento::creaDesdeDicionario($dictionary); $e = Evento::creaDesdeDicionario($dictionary);
// 4. Guardamos el evento en BD // 4. Guardamos el evento en BD

View File

@ -23,9 +23,12 @@
$userPic = USER_PICS.strtolower($name).".jpg"; $userPic = USER_PICS.strtolower($name).".jpg";
$cinema = strtoupper( $manager->getIdcinema()); $cinema = strtoupper( $manager->getIdcinema());
$panel = '<div class="code info"> $panel = '<div class="code">
<h1>Bienvenido '.$name.' a tu Panel de Manager.</h1> <h1>Bienvenido '.$name.' a tu Panel de Manager.</h1>
<hr /> <hr />
<div class="column side"></div>
<div class="column middle">
<img src='.$userPic.' alt="user_profile_picture"/> <img src='.$userPic.' alt="user_profile_picture"/>
<p>Usuario: '.$name.'</p> <br> <p>Usuario: '.$name.'</p> <br>
<p>Cine: '.$c_name.'</p> <p>Cine: '.$c_name.'</p>
@ -34,6 +37,8 @@
<p>Espero que estes pasando un buen dia</p> <p>Espero que estes pasando un buen dia</p>
<a href="?state=calendar"> calendario </a> <a href="?state=calendar"> calendario </a>
</div>
<div class="column side"></div>
</div>'; </div>';
return $panel; return $panel;
@ -73,11 +78,42 @@
return $panel; return $panel;
} }
static function calendar(){ static function calendar($manager){
$hall = $_POST['hall'] ?? $_GET['hall'] ?? "1";
$halls = Hall::getListHalls($manager->getIdcinema());
if($halls){
$panel =' $panel ='
<div class="code"> <div class="row">
<div class="column side"></div>
<div class="column middle">
<br>
<select id="hall_selector" class="button large">';
foreach(Hall::getListHalls($manager->getIdcinema()) as $hll){
if($hll->getNumber() == $hall){
$panel.= '
<option data-feed="./eventos.php?hall='.$hll->getNumber().'" value="'. $hll->getNumber() .'"selected> Sala '. $hll->getNumber() .'</option> ';
}else{
$panel.= '
<option data-feed="./eventos.php?hall='.$hll->getNumber().'" value="'. $hll->getNumber() .'"> Sala '. $hll->getNumber() .'</option>';
}
}
$panel.='
</select>
</div>
<div class="column side"></div>
</div>
<div class="row">
<div id="calendar"></div> <div id="calendar"></div>
</div>'; </div>';
}else{
$panel ='<div class="row">
<h3> No hay ninguna sala en este cine </h3>
<a href=."/?state=new_hall"> Añadir Sala </a>
</div>';
}
return $panel; return $panel;
} }

View File

@ -1,5 +1,8 @@
$(document).ready(function(){ $(document).ready(function(){
var selectedFeed = $('#hall_selector').find(':selected').data('feed');
var calendar = $('#calendar').fullCalendar({ var calendar = $('#calendar').fullCalendar({
editable:true, editable:true,
header:{ header:{
@ -7,19 +10,17 @@
center:'title', center:'title',
right:'month,agendaWeek,agendaDay' right:'month,agendaWeek,agendaDay'
}, },
events: 'eventos.php', eventSources: [ selectedFeed ],
selectable:true, selectable:true,
selectHelper:true, selectHelper:true,
timeFormat: 'H:mm', timeFormat: 'H:mm',
select: function(start, end, allDay) select: function(start, end, allDay)
{ {
var title = prompt("Enter Event Title");
if(title)
{
var e = { var e = {
"start" : $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss"), "date" : $.fullCalendar.formatDate(allDay,"Y-MM-DD"),
"end" : $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss"), "start" : $.fullCalendar.formatDate(start, "HH:mm"),
"title" : title "end" : $.fullCalendar.formatDate(end, "HH:mm")
}; };
$.ajax({ $.ajax({
url:"eventos.php", url:"eventos.php",
@ -33,7 +34,6 @@
alert("Added Successfully"); alert("Added Successfully");
} }
}) })
}
}, },
editable:true, editable:true,
eventResize:function(event) eventResize:function(event)
@ -105,4 +105,14 @@
}, },
}); });
$('#hall_selector').change(onSelectChangeFeed);
function onSelectChangeFeed() {
var feed = $(this).find(':selected').data('feed');
$('#calendar').fullCalendar('removeEventSource', selectedFeed);
$('#calendar').fullCalendar('addEventSource', feed);
selectedFeed = feed;
};
}); });