258 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
require_once('../assets/php/config.php');
 | 
						|
include_once($prefix.'assets/php/includes/event.php');
 | 
						|
include_once($prefix.'assets/php/includes/session.php');
 | 
						|
 | 
						|
$contentType= $_SERVER['CONTENT_TYPE'] ?? 'application/json';
 | 
						|
$contentType = strtolower(str_replace(' ', '', $contentType));
 | 
						|
 | 
						|
// Verify the content type is supported
 | 
						|
$acceptedContentTypes = array('application/json;charset=utf-8', 'application/json');
 | 
						|
$found = false;
 | 
						|
foreach ($acceptedContentTypes as $acceptedContentType) {
 | 
						|
    if (substr($contentType, 0, strlen($acceptedContentType)) === $acceptedContentType) {
 | 
						|
        $found=true;
 | 
						|
        break;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
switch($_SERVER['REQUEST_METHOD']) {
 | 
						|
    // Get Events
 | 
						|
    case 'GET':
 | 
						|
		
 | 
						|
		$hall =  $_GET["hall"];
 | 
						|
		$cinema =  $_SESSION["cinema"];
 | 
						|
		
 | 
						|
		$start = $_GET["start"];
 | 
						|
		$end = $_GET["end"];
 | 
						|
 | 
						|
		if ($start) {     
 | 
						|
			$result = Event::searchEventsBetween2dates($start, $end, $hall,$cinema);
 | 
						|
		} else {
 | 
						|
			// Comprobamos si es una lista de eventos completa
 | 
						|
			$result = Event::searchAllEvents($hall,$cinema); 	
 | 
						|
		}
 | 
						|
        
 | 
						|
        // 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));;
 | 
						|
		
 | 
						|
		echo $json;    
 | 
						|
    break;
 | 
						|
    // Add Session  
 | 
						|
    case 'POST':
 | 
						|
 | 
						|
		$errors = [];
 | 
						|
		$data = [];
 | 
						|
		
 | 
						|
		//Correct reply to verify the session has been correctly added
 | 
						|
		$correct_response = 'Operación completada';
 | 
						|
		
 | 
						|
		//Check if the body is ok
 | 
						|
		$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"} ?? "";	
 | 
						|
		
 | 
						|
		//Check errors in inputs
 | 
						|
		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.';
 | 
						|
		
 | 
						|
		//Create as many sessions as the diference between start and end date tell us. 1 session per day
 | 
						|
		while($startDate < $endDate && empty($errors)){
 | 
						|
				$msg = Session::create_session($_SESSION["cinema"], $hall, $startHour, $startDate, $idfilm, $price, $format);
 | 
						|
				
 | 
						|
				if(strcmp($msg,$correct_response)!== 0)
 | 
						|
					$errors['global'] = $msg;
 | 
						|
				else
 | 
						|
					$data['message'] = $msg;
 | 
						|
				
 | 
						|
				$startDate = date('Y-m-d H:i:s', strtotime( $startDate . ' +1 day'));
 | 
						|
		}
 | 
						|
		
 | 
						|
		if (!empty($errors)) {
 | 
						|
			$data['success'] = false;
 | 
						|
			$data['errors'] = $errors;
 | 
						|
		} else {
 | 
						|
			$data['success'] = true;
 | 
						|
		}
 | 
						|
		
 | 
						|
		echo json_encode($data);
 | 
						|
 | 
						|
    break;
 | 
						|
	//Edit session
 | 
						|
    case 'PUT':
 | 
						|
		//Correct reply to verify the session has been correctly edited
 | 
						|
		$correct_response = 'Se ha editado la session con exito';
 | 
						|
		
 | 
						|
		$errors = [];
 | 
						|
		$data = [];
 | 
						|
		
 | 
						|
		//Check if the body is ok
 | 
						|
		$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';
 | 
						|
		
 | 
						|
		//Check if the user is droping an event in a new date
 | 
						|
		if(isset($_GET["drop"]) && $_GET["drop"]){
 | 
						|
 | 
						|
			$or_hall = $dictionary->{"idhall"} ?? "";		
 | 
						|
			$or_date = $dictionary->{"startDate"} ?? "";		
 | 
						|
			$or_start = $dictionary->{"startHour"} ?? "";	
 | 
						|
			$price = $dictionary->{"price"} ?? "";		
 | 
						|
			$idfilm = $dictionary->{"idfilm"} ?? "";	
 | 
						|
			$format = $dictionary->{"format"} ?? "";	
 | 
						|
			
 | 
						|
			$new_date = $dictionary->{"newDate"} ?? "";	
 | 
						|
		
 | 
						|
			$msg = Session::edit_session($_SESSION["cinema"], $or_hall, $or_date, $or_start, $or_hall, $new_date, $new_date, $idfilm, $price, $format);
 | 
						|
			
 | 
						|
			if(strcmp($msg,$correct_response)!== 0)
 | 
						|
				http_response_code(400);
 | 
						|
			 else
 | 
						|
				http_response_code(200);
 | 
						|
		}else{	
 | 
						|
			//Edit session from a form
 | 
						|
			$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"} ?? "";	
 | 
						|
			
 | 
						|
			//Check errors in inputs
 | 
						|
			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;
 | 
						|
	//Delete a session
 | 
						|
    case 'DELETE':
 | 
						|
		$errors = [];
 | 
						|
		$data = [];
 | 
						|
		
 | 
						|
		//Correct reply to verify the session has been correctly edited
 | 
						|
		$correct_response = 'Se ha eliminado la session con exito';
 | 
						|
			
 | 
						|
       	//Check if the body is ok
 | 
						|
		$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';
 | 
						|
		
 | 
						|
		$or_hall = $dictionary->{"og_hall"} ?? "";		
 | 
						|
		$or_date = $dictionary->{"og_date"} ?? "";		
 | 
						|
		$or_start = $dictionary->{"og_start"} ?? "";
 | 
						|
		
 | 
						|
		//Check errors in inputs
 | 
						|
		if(empty($or_hall))
 | 
						|
				$errors['global'] = 'El nº de sala a borrar no existe';
 | 
						|
		if(empty($or_date))
 | 
						|
				$errors['global'] = 'La fecha de donde borrar no existe';
 | 
						|
		if(empty($or_start))
 | 
						|
				$errors['global'] = 'La hora de donde borrar no existe';
 | 
						|
			
 | 
						|
		if(empty($errors)){	
 | 
						|
			$msg = Session::delete_session($_SESSION["cinema"], $or_hall, $or_start, $or_date);
 | 
						|
 | 
						|
			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;
 | 
						|
    default:
 | 
						|
    break;
 | 
						|
} |