<?php
	include_once($prefix.'assets/php/includes/hall.php');
	include_once($prefix.'assets/php/includes/session.php');
	require_once($prefix.'assets/php/includes/manager.php');
	require_once($prefix.'assets/php/includes/cinema_dao.php');
	include_once('./includes/formHall.php');	
	include_once('./includes/formSession.php');	

	
    class Manager_panel {
		
        function __construct(){}

		static function welcome($manager){
			$bd = new Cinema_DAO('complucine');
			if($bd){
				$cinema = ($bd->cinemaData($manager->getIdcinema()))->fetch_assoc();
				$c_name = $cinema["name"];
				$c_dir = $cinema["direction"];
				$c_tel = $cinema["phone"];
			}
            $name = strtoupper($_SESSION["nombre"]);
			$cinema = strtoupper( $manager->getIdcinema());

            $panel = '<div class="code info">
						<h1>Bienvenido '.$name.' a tu Panel de Manager.</h1>
						<hr />
						<p>Usuario: '.$name.'</p> <br>
						<p>Cine: '.$c_name.'</p>
						<p>Dirección: '.$c_dir.'</p>
						<p>Telefono: '.$c_tel.'</p> <br>
						<p>Espero que estes pasando un buen dia</p>
					</div>';
				
			return $panel;
        }
		
		static function welcomeAdmin($manager) {
			$cinemaList = new Cinema_DAO('complucine');
			$cinemas = $cinemaList->allCinemaData();	
			$cinema = 1;

            $name = strtoupper($_SESSION["nombre"]);
			if(isset($_POST['change'])){
				$manager->setIdcinema($_POST['cinema']);
			}

			if($manager->getIdcinema() != null) $cinema = strtoupper( $manager->getIdcinema());

            $panel = '<div class="code info">
						<h1>Bienvenido '.$name.' a tu Panel de Manager.</h1>
						<hr />
						<p>Usuario: '.$name.'</p>
						<p>Cine: '.$cinema.'</p>
						<p>Espero que estes pasando un buen dia</p>
						<form method="post" id="changecinema" action="index.php">
							<select name="cinema" class="button">
							';
					foreach($cinemas as $c){ 
						if($c->getId() == $cinema){
							$panel .=  "<option value=\"". $c->getId() ." \"selected> " . $c->getId() ."</option>
							";
						}else{
							$panel .=  "<option value=\"". $c->getId() ." \"> " . $c->getId() . "</option>
							";
					}
				}
		$panel .= '				<input type="submit" name="change" value="Cambiar" /><br>
							</select>
						</form>
					</div>';

			return $panel;
		}
		
		static function success(){
            $panel = '<div class="code info">
                    <h1>Operacion completada.</h1>
                    <hr />
                    <p>'.$_SESSION['msg'].'</p>
                </div>'."\n";
			$_SESSION['msg'] = "";
			
			return $panel;
        }
		
		static function manage_halls($manager){	
			
			$panel = '<div class="column side"></div>
					<div class="column middle">';
			$listhall = Hall::getListHalls($manager->getIdcinema());
			if(!$listhall){
				$panel .= "<h2> No hay ninguna sala en este cine";
			}else{
			$panel .= '
					<h3 class="tablelike_title"> Salas </h3> <h3 class="tablelike_title"> Asientos </h3> <br>
						<ul class="tablelike">
							'; 

			foreach($listhall as $hall){ 
				$panel .='
							<li class="tablelike"> '. $hall->getNumber().'</li>
							<li class="tablelike"> '.$hall->getTotalSeats().' </li>
							<a class="tablelike_link" href="?state=edit_hall&number='. $hall->getNumber().'"> Editar  </a>
							<a class="tablelike_link" href="?state=manage_sessions&number='. $hall->getNumber().'"> Sessiones  </a>
						';
				}
			$panel.='
						</ul>';
			}
			$panel.='
						<form method="post" action="./?state=new_hall">
							<input type="submit" name="new_hall" value="Añadir Sala" class="button large" />
						</form>
				</div>
				<div class="column side"></div>';			
			return $panel;
        }
		
		static function new_hall($manager){		
		
			$formHall = new FormHall("new_hall",$manager->getIdcinema());
		
			$panel = '<h1>Crear una sala.</h1><hr/></br>
				'.$formHall->gestiona();
			return $panel;
		}
		
		static function edit_hall($manager){	
			$hall = Hall::search_hall($_GET["number"], $manager->getIdcinema());
			
			if($hall || isset($_POST["restart"]) || isset($_POST["filter"]) || isset($_POST["sumbit"]) ){
				
				$formHall = new FormHall("edit_hall",$manager->getIdcinema(), $hall);
				$panel = '<h1>Editar una sala.</h1><hr/></br>
					'.$formHall->gestiona();
				return $panel;
			} else{
				return Manager_panel::warning($manager);
			}
		}
		
		static function manage_sessions($manager){
			//Base filtering values
			$date = $_POST['date'] ?? $_GET['date'] ?? date("Y-m-d");
			$hall = $_POST['hall'] ?? $_GET['hall'] ?? "1";
			
			//Session filter
			$panel='<div class = "column left">
					<form method="post" id="filter" action="./?state=manage_sessions">
						<input type="date" name="date" value="'.$date.'" min="2021-01-01" max="2031-12-31">
							<select name="hall" class="button large">';
						
			foreach(Hall::getListHalls($manager->getIdcinema()) as $hll){
				if($hll->getNumber() == $hall){
					$panel.= '
								<option value="'. $hll->getNumber() .'"selected> Sala '. $hll->getNumber() .'</option> ';
				}else{ 
					$panel.= '
								<option value="'. $hll->getNumber() .'"> Sala '. $hll->getNumber() .'</option>';
				}
			}
			$panel.='
							</select>
						<input type="submit" name="filter" value="Filtrar" class="button large"/>
					</form>
				</div>
			';
			//Session list
			$panel .='	<div class = "column right">';
			$sessions = Session::getListSessions($hall,$manager->getIdcinema(),$date);
			
			if($sessions) {
				$panel .='
					<form method="post" action="./?state=edit_session">
						<table class="alt">
							<thead>
								<tr>
									<th>Hora</th>
									<th>Pelicula</th>
									<th>Formato</th>
									<th>Precio</th>
								</tr>
							</thead>
							<tbody>'; 
				
				
				foreach($sessions as $session){ 
					$film = Session::getThisSessionFilm($session->getIdfilm());
					$panel .='
								<tr>
									<td> '.date("H:i", strtotime( $session->getStartTime())).' </td>
									<td> '. str_replace('_', ' ', $film["tittle"]) .' </td>
									<td> '.$session->getFormat().' </td>
									<td> '.$session->getSeatPrice().' </td>
									<form method="post" action="./?state=edit_session">
										<input  name="film" type="hidden" value="'.$session->getIdfilm().'">
										<input  name="tittle" type="hidden" value="'.$film["tittle"].'">
										<input  name="duration" type="hidden" value="'.$film["duration"].'">
										<input  name="language" type="hidden" value="'.$film["language"].'">
										<input  name="description" type="hidden" value="'.$film["description"].'">
										<input  name="hall" type="hidden" value="'.$session->getIdhall().'">
										<input  name="date" type="hidden" value="'.$session->getDate().'">
										<input  name="start" type="hidden" value="'.$session->getStartTime().'">
										<input  name="price" type="hidden" value="'.$session->getSeatPrice().'">
										<input  name="format" type="hidden" value="'.$session->getFormat().'">	
									<td> <input type="submit" id="submit" name ="edit_session"  value="Editar" class="primary" /> </td>
									</form>
								</tr>';
					}
				$panel.='
							</tbody>
						</table>
					</form>';
			} else {
				$panel.=' <h3> No hay ninguna sesion </h3>';
			}
			$panel.='
					<input type="submit" name="new_session" form="filter"  value="Añadir" class="button large" formaction="./?state=new_session">
				</div>';
			
			return $panel;
        }
		
		static function new_session($manager){	
			$formSession = new FormSession("new_session", $manager->getIdcinema() );
			
			$panel = '<h1>Crear una sesion.</h1> <hr/> </br>
				'.$formSession->gestiona();
			return $panel;
		}
		
		static function edit_session($manager){	
			$formSession = new FormSession("edit_session", $manager->getIdcinema() );
		
			$panel = '<h1>Editar una sesion.</h1><hr/></br>
				'.$formSession->gestiona();
			return $panel;
		}
		
		//TODO: estado al modificar sesiones para la seleccion de peliculas usando el template->print films
		static function select_film($template,$manager){		
			if(isset($_POST["select_film"]) && isset($_POST["option"])){
				$_SESSION["option"] = $_POST["option"];
				$panel = '<h1>Seleccionar Pelicula.</h1><hr /></br>';
				$panel .= $template->print_fimls();
				$_SESSION["option"] = "";
			} else $panel = self::warning($manager);
			
			return $panel;
		}
		
		//Funcion que se envia cuando hay inconsistencia en el panel manager, principalmente por tocar cosas con la ulr
		static function warning($manager){
			$panel = '<div class="code info">
                    <h1>Ha habido un error.</h1>
                    <hr />
                    <p> >.< </p>
                </div>'."\n";
				
			return $panel;
		}
		
	
    }
?>