Files
MyDiary/clases/claseUsuarioxPelicula.php

512 lines
22 KiB
PHP

<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/clases/claseApiPelicula.php';
class UsuarioxPelicula{
public $idUsuarioPelicula;
public $idUsuario;
public $idPelicula;
public $ratingPelicula;
public $favPelicula;
public $pendientePelicula;
public $fechaPelicula;
public $notasPelicula;
function __construct($idUsuarioPelicula=null, $idUsuario=null, $idPelicula=null, $ratingPelicula=null, $favPelicula=null, $pendientePelicula=null, $fechaPelicula=null, $notasPelicula=null){
$this->idUsuarioPelicula = $idUsuarioPelicula;
$this->idUsuario = $idUsuario;
$this->idPelicula = $idPelicula;
$this->ratingPelicula = $ratingPelicula;
$this->favPelicula = $favPelicula;
$this->pendientePelicula = $pendientePelicula;
$this->fechaPelicula = $fechaPelicula;
$this->notasPelicula = $notasPelicula;
} // Fin __construct
public function agregar(){
$conexion=conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta=$conexion->prepare("INSERT INTO usuariosxpeliculas (idUsuario, idPelicula, ratingPelicula, favPelicula, pendientePelicula, fechaPelicula, notasPelicula) VALUES (:idUsuario,:idPelicula, :rating, :fav, :pend, :fecha, :notas)");
$consulta->bindParam(':idUsuario',$this->idUsuario);
$consulta->bindParam(':idPelicula',$this->idPelicula);
$consulta->bindParam(':rating',$this->ratingPelicula);
$consulta->bindParam(':fav',$this->favPelicula);
$pend=0;
$consulta->bindParam(':pend',$pend);
$consulta->bindParam(':fecha',$this->fechaPelicula);
$consulta->bindParam(':notas',$this->notasPelicula);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregar()
public function existe(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT idUsuarioPelicula FROM usuariosxpeliculas WHERE idPelicula=:idPelicula AND idUsuario=:idUsuario");
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetch(PDO::FETCH_ASSOC);
if($resultado){
$respuesta = [
'error' => 'Ya has registrado esta película',
'error_tecnico' => $this->idPelicula
];
$conexion = null;
return $respuesta;
}else{
return false;
}
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al comprobar si existe la película en la Base de Datos.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin existe()
public function listarTodo(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.idUsuario = :idUsuario AND up.pendientePelicula = :pend ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarTodo()
public function listarEstrellas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.ratingPelicula = :rating AND up.idUsuario = :idUsuario AND up.pendientePelicula = :pend ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas con valoracion '.$this->ratingPelicula,
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarEstrellas()
public function listarFav(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.favPelicula = :fav AND up.pendientePelicula= :pend AND up.idUsuario= :idUsuario ORDER BY up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$fav = 1;
$consulta->bindParam(':fav', $fav);
$pend=0;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas favoritas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarFav()
public function listarPendientes(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.pendientePelicula = :pend AND up.idUsuario=:idUsuario");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas pendientes.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin listarPendientes()
public function agregarPend(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("INSERT INTO usuariosxpeliculas (idUsuario, idPelicula, pendientePelicula) VALUES (:idUsuario, :idPelicula, :pend)");
$pend = 1;
$consulta->bindParam(':pend', $pend);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':idPelicula', $this->idPelicula);
$consulta->execute();
return $conexion->lastInsertId();
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película como pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPend()
public function buscar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$busqueda = $_POST['busqueda'];
if(is_numeric($busqueda)){
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE p.anoPelicula=:ano AND up.idUsuario=:idUsuario ORDER BY up.ratingPelicula DESC, up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$consulta->bindParam(':ano', $busqueda);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}else{
$busquedaParcial = "%" . $_POST['busqueda'] . "%";
$consulta = $conexion->prepare("SELECT p.idPelicula, p.idApi, p.nombrePelicula, p.directorPelicula, p.actorPelicula, p.guionistaPelicula, p.generoPelicula, p.anoPelicula, p.companiaPelicula, p.duracionPelicula, p.posterPelicula, p.ratingAvgPelicula, p.paisPelicula, p.idiomaPelicula, p.sinopsisPelicula, up.idUsuarioPelicula, up.idUsuario, up.idPelicula, up.ratingPelicula, up.favPelicula, up.pendientePelicula, up.fechaPelicula, up.notasPelicula FROM usuariosxpeliculas up INNER JOIN peliculas p ON up.idPelicula = p.idPelicula WHERE up.idUsuario=:idUsuario AND (p.nombrePelicula LIKE :nombre OR p.directorPelicula LIKE :director) ORDER BY up.ratingPelicula DESC, up.fechaPelicula DESC, up.idUsuarioPelicula DESC");
$consulta->bindParam(':nombre', $busquedaParcial);
$consulta->bindParam(':director', $busquedaParcial);
$consulta->bindParam(':idUsuario', $this->idUsuario);
}
$consulta->execute();
$resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
return $resultado;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al obtener el listado de peliculas buscadas.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin buscar()
public function favorita(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET favPelicula= :favPelicula WHERE idUsuarioPelicula = :idUsuarioPelicula AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':idUsuarioPelicula', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':favPelicula', $this->favPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return [
'exito' => true,
'idUsuarioPelicula' => $this->idUsuarioPelicula,
'favPelicula' => $this->favPelicula
];
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al cambiar el estado favorita de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin favorita()
public function comprobar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("SELECT * FROM usuariosxpeliculas WHERE idUsuarioPelicula= :idUsuarioPelicula AND idUsuario=:idUsuario");
$consulta->bindParam(':idUsuarioPelicula', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
return $consulta->fetchAll(PDO::FETCH_ASSOC);
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al recoger los datos de la película seleccionada.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin comprobar()
function editarVal(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET ratingPelicula=:rating WHERE idUsuarioPelicula=:id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la valoración de la película.',
'exito_tecnico' => $this->ratingPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la valoración de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarVal()
function editarFecha(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET fechaPelicula=:fecha WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente la fecha de visualización de la película.',
'exito_tecnico' => $this->fechaPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar la fecha de visualización de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarFecha()
function editarNotas(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET notasPelicula=:notas WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario AND pendientePelicula=:pend");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':notas', $this->notasPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
$respuesta = [
'exito' => 'Se editó correctamente las notas de la película.',
'exito_tecnico' => $this->fechaPelicula
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al editar las notas de la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin editarNotas()
function agregarPendTabla(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("UPDATE usuariosxpeliculas SET pendientePelicula=:pend, fechaPelicula=:fecha, ratingPelicula=:rating, favPelicula=:fav, notasPelicula=:notas WHERE idUsuarioPelicula= :id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->bindParam(':fecha', $this->fechaPelicula);
$consulta->bindParam(':rating', $this->ratingPelicula);
$consulta->bindParam(':fav', $this->favPelicula);
$consulta->bindParam(':notas', $this->notasPelicula);
$pend = 0;
$consulta->bindParam(':pend', $pend);
$consulta->execute();
return $this->idUsuarioPelicula;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al agregar la película pendiente.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin agregarPendTabla
function eliminar(){
$conexion = conexionBD();
if(is_array($conexion)){
return $conexion;
}else{
try{
$consulta = $conexion->prepare("DELETE FROM usuariosxpeliculas WHERE idUsuarioPelicula=:id AND idUsuario=:idUsuario");
$consulta->bindParam(':id', $this->idUsuarioPelicula);
$consulta->bindParam(':idUsuario', $this->idUsuario);
$consulta->execute();
$respuesta = [
'exito' => 'Se eliminó correctamente la película.',
'exito_tecnico' => $this->idUsuarioPelicula,
];
return $respuesta;
}catch(PDOException $error){
$respuesta = [
'error' => 'Ocurrió un error al eliminar la película.',
'error_tecnico' => $error
];
$conexion = null;
return $respuesta;
}
} // Fin else
} // Fin eliminar()
} // Fin clase UsuarioxPelicula
?>