Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers\API;
- use App\Models\Listing;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- use App\Models\User;
- use getLists;
- /*----------------------------------*/
- use Intervention\Image\ImageManagerStatic as Image;
- use Illuminate\Support\Facades\Storage;
- class recursosController extends Controller
- {
- const PRIVADO = 1;
- protected $category_id;
- private $idEncontrado = -99;
- private $nameList = -99;
- private $header = 'https://www.abundantum.com';
- private $recursosXlista = 15;
- /*
- * ####################################
- * #######FUNCIONES DEPENDENCIA########
- * ####################################
- */
- private function modPropiedades($propiedad, $valor)
- {
- switch ($propiedad) {
- case "id":
- $this->idEncontrado = $valor;
- break;
- case "name" :
- $this->nameList = $valor;
- break;
- default:
- break;
- }
- }
- private function getKeysLista($userId)
- {
- //Obtenemos el array de listas serializad según el usuario con el que estamos.
- $arrListas = DB::select('SELECT arrayListas FROM resource_list WHERE user_id = :id', ['id' => $userId]);
- //Si ha encontrado algo entro en la condición
- if (!empty($arrListas)) {
- //Asigno lo que he encontrado en dicha variable.
- $contenido = $arrListas[0]->arrayListas;
- if ($contenido != null) {
- //Como esta "protegido" es decir serializado, lo deserializo para poder administrar su contenido.
- $contenido = unserialize($contenido);
- //Obtengo el nombre de las listas
- $contenido = array_keys($contenido);
- return $contenido;
- }
- }
- return false;
- }
- /*
- * #######################################################################
- * #######FUNCION PARA BORRAR EL RECURSO DE MIS RECURSOS ASIGNADOS########
- * #######################################################################
- */
- public function deleteResource(Request $request)
- {
- try {
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- $idRecurso = (int)$request->get('listing_id');
- if ($idRecurso == null) {
- return response()->json(["message" => "No se encontró ningún identificado del recurso", "state" => "RESOURCE_ID_IS_EMPTY"], 401);
- }
- $existe = DB::select('SELECT * FROM listing_assign WHERE user_id = :id AND listing_id = :list', ['id' => $idUsuario, 'list' => $idRecurso]);
- if (!empty($existe)) {
- //Si existe ese recursos en tus asignados por lo tanto lo borro.
- $arrListas = DB::select('SELECT arrayListas FROM resource_list WHERE user_id = :id', ['id' => $idUsuario]);
- if (!empty($arrListas)) {
- $contenido = $arrListas[0]->arrayListas;
- if ($contenido != null) {
- $arrKeys = $this->getKeysLista($idUsuario);
- if ($arrKeys != false) {
- $idListAssigns = $existe[0]->id;
- $contenido = unserialize($contenido);
- for ($i = 0; $i < count($arrKeys); $i++) {
- foreach ($contenido[$arrKeys[$i]] as $fila) {
- if ($fila == $idListAssigns) {
- $this->modPropiedades("name", $arrKeys[$i]);
- $this->modPropiedades("id", $fila);
- }
- }
- } //END FOR
- //Elimino dicho valor del array.
- unset($contenido[$this->nameList][$this->idEncontrado]);
- $contenido = serialize($contenido);
- //Actualizo los datos en la base de datos
- DB::update('UPDATE resource_list SET arrayListas = :array WHERE user_id = :id', ['id' => $idUsuario, 'array' => $contenido]);
- //Elimino el recurso de la lista de asignados.
- DB::delete('DELETE FROM listing_assign WHERE user_id = ? AND listing_id = ?;', [$idUsuario, $idRecurso]);
- return response()->json(["message" => "Recurso eliminado de tu biblioteca de recursos.", "state" => "OK"], 201);
- }
- }
- }
- return response()->json(["message" => "Hubo un error inesperado, el recurso no se ha eliminado correctamente..", "state" => "ERROR"], 401);
- }
- return response()->json(["message" => "No se ha encontrado ningún recurso con ese identificador.", "state" => "ERROR"], 401);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un error inesperado.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- /*
- * ###################################################
- * #######FUNCION CREAR NUEVO RECURSOS PRIVADO########
- * ###################################################
- */
- public function createResourcePrivate(Request $request)
- {
- $kCARACTERES_MIN = 6;
- $kCARACTERES_MAX = 150;
- try {
- $arrCamposValidos = [];
- $descripcion = $request->get('description');
- $numPhotos = (int)$request->get('num_photos');
- $video_Code = $request->get('video_code');
- //Validamos tanto el id del usario como el email.
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Comprobamos que el titulo sea diferente a null y que posea mas de 5 caracteres.
- $titulo = $request->get('title');
- if ($titulo != null) {
- if (strlen($titulo) < $kCARACTERES_MIN) {
- return response()->json(["message" => "El titulo debe ser mayor a $kCARACTERES_MIN caracteres.", "state" => "ERROR"], 401);
- } elseif (strlen($titulo) > $kCARACTERES_MAX) {
- return response()->json(["message" => "El titulo debe ser menor de $kCARACTERES_MAX caracteres.", "state" => "ERROR"], 401);
- }
- } else {
- return response()->json(["message" => "El titulo no puede quedar vacio.", "state" => "ERROR"], 401);
- }
- //$recienCreado = DB::table('listings')->where('user_id', $idUsuario)->where('slug', str_replace(" ", "-", $titulo))->first();
- $recienCreado = Listing::where('user_id', $idUsuario)->where('slug', str_replace(" ", "-", $titulo))->first();
- if ($recienCreado != null) {
- //El recurso con estos datos ya fue creado
- return response()->json(["message" => "El recurso con estos datos ya fue creado.", "state" => "ERROR"], 401);
- }
- //Comprobamos si existen los valores.
- if ($video_Code != null) {
- $video = $this->addVideo($video_Code);
- if (gettype($video) == 'array') {
- array_merge($arrCamposValidos, $video);
- }
- }
- if ($descripcion != null) {
- $arrCamposValidos['description'] = $descripcion;
- }
- if ($numPhotos != null && $numPhotos != 0) {
- if ($numPhotos > 0 && $numPhotos < 11) {
- $arrURLS = $this->loadIMG($request);
- $arrCamposValidos["photos"] = $arrURLS;
- } else {
- return response()->json(["message" => "El numero de imagenes tiene que estar comprendido entre 1 y 10.", "state" => "ERROR"], 401);
- }
- }
- //Solo queda la imagen si hay la subimos, y obtenemos su enlace.
- $arrCamposValidos = array_merge($arrCamposValidos,
- [
- 'user_id' => $idUsuario,
- 'user_create_id' => $idUsuario,
- 'title' => $titulo,
- 'slug' => str_replace(" ", "-", $titulo),
- 'is_private' => true,
- 'created_at' => Carbon::now(),
- 'updated_at' => Carbon::now()
- ]);
- //Creamos un objeto con todos los valores que nos han pasado
- Listing::create($arrCamposValidos);
- //$recienCreado = DB::table('listings')->where('user_id', $idUsuario)->where('slug', str_replace(" ", "-", $titulo))->first();
- $recienCreado = Listing::where('user_id', $idUsuario)->where('slug', str_replace(" ", "-", $titulo))->first();
- return response()->json(["message" => "Recurso privado creado correctamente", "state" => "OK", "data" => $this->getDatos($recienCreado->id, $idUsuario)], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un error inesperado.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- private function loadIMG(Request $imagen)
- {
- $imagenes = $imagen->allFiles();
- $arrURLS = [];
- foreach ($imagenes as $item) {
- //Obtenemos el nombre del archivo mas su extension
- $fileName = explode('.', $item->getClientOriginalName());
- if (!is_array($fileName) || (is_array($fileName) && count($fileName) > 2)) { //En el supuesto caso de que el nombre del archivo no contenga puntos, 2 es el numero de posiciones que deberia tener el array.
- return response()->json(["message" => "El nombre de la imagen no puede contener caracteres como: puntos, comas etc. ", "state" => "ERROR"], 401);
- }
- $path = 'images/' . date('Y/m/d') . '/' . Carbon::now()->timestamp . '-' . mt_rand(0, 99999) . '-' . md5($fileName[0]) . "." . $fileName[1];
- //dd($path);
- $img = Image::make($item)->resize(748, 506, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- })->resizeCanvas(748, 506);
- //canvas(null, 506, '#ffffff');
- $img = (string)$img->encode('jpg', 90);
- Storage::cloud()->put($path, $img, 'public');
- array_push($arrURLS, Storage::cloud()->url($path));
- }
- return $arrURLS;
- }
- public function addVideo($video_Code)
- {
- if ($video_Code != null) {
- $urlYT = $video_Code;
- $urlYT = str_replace('=', '/', $urlYT);
- //Si la longitud es > a 35 es una URL larga.
- if (strlen($urlYT) > 35) {
- $videoProvider = explode('.', $urlYT)[1];
- } else {
- $videoProvider = explode('.', $urlYT)[0];
- if ($videoProvider == 'https://youtu') {
- $videoProvider = 'youtube';
- }
- //Si no pues no cojo el video de youtube
- }
- //Si no es YouTube de momento no hace nada.
- if ($videoProvider == 'youtube') {
- //Si es > que 28 es una URL Larga tipo /watch?v=UpSslxCGJI4
- if (strlen($urlYT) > 35) {
- //Explode convierte una string en un array según el delimitador por ende corresponde a la pos 4
- $videoCode = explode('/', $urlYT)[4];
- } else { //Opcion corta tipo https://www.youtube.com/UpSslxCGJI4
- $videoCode = explode('/', $urlYT)[3];
- }
- $arrCamposValidos['video_code'] = $videoCode;
- $arrCamposValidos['video_provider'] = $videoProvider;
- return $arrCamposValidos;
- }
- }
- return false;
- }
- /*
- * ###############################################
- * #######FUNCION OBTENER RECURSOS PRIVADO########
- * ###############################################
- */
- public function getRecursosUser(Request $request)
- {
- try {
- //Validamos tanto el id del usario como el email.
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //$tusRecursos = DB::table('listings')->select('id','user_id')->where('user_id', $idUsuario)->get();
- $tusRecursos = Listing::select('id', 'user_id')->where('user_id', $idUsuario)->where('deleted_at', null)->get();
- if ($tusRecursos == null) {
- return response()->json(["message" => "El usuario $existsUser->name no tiene recursos creados.", "state" => "ERROR"], 201);
- }
- $arrRecursos = [];
- foreach ($tusRecursos as $item) {
- array_push($arrRecursos, $this->getDatos($item->id, $item->user_id));
- }
- $arrRecursos = array_filter($arrRecursos);
- return response()->json(["message" => "Recursos de $existsUser->name listados correctamente.", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema al encontrar los recursos en la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function getDatos($listing_id, $user_id, User $ownUser = null)
- {
- try {
- //$lbd = DB::table('listings')->where('id', $listing_id)->first();
- $lbd = Listing::where('id', $listing_id)->first();
- //DB::select('SELECT * FROM users WHERE id = :id ', ['id' => $lbd[0]->user_id]);
- if ($lbd != null) {
- $autor = User::where('id', $user_id)->first();
- //$lThanks = DB::table('listing_thanks')->where('id_listing', $listing_id)->where('id_user', $user_id)->first();
- //$notes = DB::table('notes')->where('listing_id', $listing_id)->where('user_id',$user_id )->get();
- //Obtenemos el objeto del recurso Listing::where('id', $listing_id)->first();
- $listingRecurso = $lbd;
- if ($listingRecurso != null) {
- $listingURL = $listingRecurso->getUrlAttribute();
- $listingIMG = $listingRecurso->getImagesAttribute(true);
- $listingDaysAgo = $listingRecurso->getDaysAgoAttribute();
- $listingShortDesc = $listingRecurso->getShortDescriptionAttribute();
- $obj = new \stdClass();
- if ($listingRecurso->is_private == 0) {
- $obj->is_private = false;
- } else if ($listingRecurso->is_private == 1) {
- $obj->is_private = true;
- }
- if ($listingRecurso->is_published == 0) {
- $obj->is_published = false;
- } else if ($listingRecurso->is_published == 1) {
- $obj->is_published = true;
- }
- $obj->id = $listing_id;
- $obj->url = $listingURL;
- $obj->title = $lbd->title;
- $obj->shortDesc = $listingShortDesc;
- $obj->longDesc = $lbd->description;
- $obj->slug = $lbd->slug;
- $obj->img = $listingIMG;
- $obj->daysAgo = $listingDaysAgo;
- $obj->numThanks = $lbd->thanks;
- //Obtener el video sea cual sea su proveedor.
- $urlYT = $listingRecurso->getVideoURL();
- if ($urlYT == false) {
- $obj->urlVideo = null;
- } else {
- $obj->urlVideo = $urlYT;
- }
- //Depende de si le pasamos o no nuestro usuario, hara una cosa u otra.
- if ($ownUser != null) {
- //Si le introducimos nuestro propio usuario, se nos proporciona la info de nuestro usuario.
- $obj->notas = $this->getNotes($ownUser->id, $listing_id);
- $obj->thanks = $this->getThanks($listing_id, $ownUser->id);
- $obj->lassignId = $this->getLassignId($listing_id, $ownUser->id);
- $obj->moveList = $this->getMoveList($ownUser->id);
- } else {
- $obj->notas = $this->getNotes($user_id, $listing_id);;
- $obj->thanks = $obj->thanks = $this->getThanks($listing_id, $user_id);
- }
- if ($autor != null) {
- $obj->username = $autor->username;
- $obj->username_slug = $autor->slug;
- //Cuando la fase de desarrollo de movil este mergeada a mastes estas dos propiedades serán eliminadas.
- $obj->autor = $this->getAutor($autor);
- } else {
- $obj->username = null;
- $obj->username_slug = null;
- }
- $obj->numVisitas = $lbd->views_count;
- $obj->contFavoritos = $this->contFavoritos($lbd);
- $obj->formato = $this->getFormato($lbd->pricing_model_id);
- //Fuentes
- $obj->fonts = $this->getFonts($listingRecurso->getFonts());
- $categories = $this->getCategoriesFromResource($listingRecurso);
- if ($categories == false) {
- $obj->categories = null;
- } else {
- $obj->categories = $categories;
- }
- return $obj;
- }
- }
- } catch (\Exception $exception) {
- //dd($exception);
- return response()->json(["message" => "Hubo un problema al encontrar los recursos en la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- private function getAutor(User $autor)
- {
- $obj = new \stdClass();
- $obj->autor_id = $autor->id;
- $obj->avatar = $autor->getAvatarAttribute();
- $obj->username = $autor->username;
- $obj->username_slug = $autor->slug;
- $obj->firstName = $autor->first_name();
- $obj->poblacion = $autor->getPoblacion();
- $creado = $autor->created_at;
- $obj->created_at = (string) $creado;
- return $obj;
- }
- private function contFavoritos(Listing $recurso)
- {
- if ($recurso->favourite_count <= 0 || $recurso == null) {
- return null;
- } else {
- return $recurso->favourite_count;
- }
- }
- private function getLassignId($recurso_id, $user_id)
- {
- $estoyEnUnaLista = DB::table('listing_assign')->where([
- "user_id" => $user_id,
- "listing_id" => $recurso_id
- ])->first();
- if ($estoyEnUnaLista == null) {
- return null;
- } else {
- return $estoyEnUnaLista->id;
- }
- }
- private function getThanks($listing_id, $user_id)
- {
- $lThanks = DB::table('listing_thanks')->where('id_listing', $listing_id)->where('id_user', $user_id)->first();
- if ($lThanks != null) {
- return true;
- } else {
- return false;
- }
- }
- public static function getMoveList($user_id)
- {
- //Obtenemos todas las listas que tienes creadas
- $arrListas = DB::table('resource_list')->where('user_id', $user_id)->first();
- //Si ha encontrado algo entro en la condición
- if (!empty($arrListas)) {
- //Asigno lo que he encontrado en dicha variable.
- $contenido = $arrListas->arrayListas;
- if ($contenido != null) {
- //Como esta "protegido" es decir serializado, lo deserializo para poder administrar su contenido.
- $contenido = unserialize($contenido);
- //Obtengo el nombre de las listas
- $contenido = array_keys($contenido);
- return $contenido;
- }
- }
- return false;
- }
- private function getFormato($id)
- {
- //Es el id de pricing_model_id
- $formato = DB::table('pricing_models')->select('name')->where('id', $id)->first();
- if ($formato != null) {
- return $formato->name;
- } else {
- return null;
- }
- }
- private function getNotes($idUsuario, $listing_id)
- {
- $notes = DB::table('notes')->where('user_id', $idUsuario)->where('listing_id', $listing_id)->first();
- if ($notes != null) {
- if ($notes->text != '<p><br></p>') {
- return $notes;
- }
- } else {
- return null;
- }
- }
- /*
- * Método que crea un array de todas las fuentes que posee la base de datos.
- */
- public function getFonts($font)
- {
- if ($font != null) {
- $arrFonts = [];
- foreach ($font as $item) {
- $fuente = DB::table('listing_font')->where('id', $item)->first();
- $obj = new \stdClass();
- $obj->name = $fuente->name;
- $obj->slug = $fuente->slug;
- $obj->link = $fuente->link;
- $obj->bio = $fuente->bio;
- $obj->avatar = $fuente->photo;
- $obj->gender = $fuente->gender;
- array_push($arrFonts, $obj);
- }
- if (!empty($arrFonts)) {
- return $arrFonts;
- }
- }
- return null;
- }
- //Obtener las categorias a las que pertenece el recurso
- public function getCategoriesFromResource(Listing $recurso)
- {
- try {
- //Obtenemos todas las categorias a las que esta asociado ese recurso.
- $categorias = $recurso->getCategories();
- $arrCategorias = [];
- if (empty($categorias) != true) {
- foreach ($categorias as $item) {
- $objCategories = DB::table('categories')->select('id', 'name', 'slug', 'order')->where('id', $item)->first();
- if ($objCategories != null) {
- array_push($arrCategorias, $objCategories);
- }
- }
- return $arrCategorias;
- }
- return false;
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema al encontrar las categorias en la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- /*
- * #####################################################
- * #######FUNCION PARA EDITAR UN RECURSO PRIVADO########
- * #####################################################
- */
- public function editRecursoPrivado(Request $request)
- {
- $kCARACTERES_MIN = 6;
- $kCARACTERES_MAX = 150;
- try {
- $descripcion = $request->get('description');
- $numPhotos = (int)$request->get('num_photos');
- $video_Code = $request->get('video_code');
- $titulo = $request->get('title');
- $idRecurso = $request->get('listing_id');
- $urlBorradas = $request->get('urlBorradas');
- //Validamos tanto el id del usario como el email.
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Comprobamos que nos pasan el titulo.
- //Comprobamos que el titulo sea diferente a null y que posea mas de 5 caracteres.
- if ($titulo != null) {
- if (strlen($titulo) < $kCARACTERES_MIN) {
- return response()->json(["message" => "El titulo debe ser mayor a $kCARACTERES_MIN caracteres.", "state" => "ERROR"], 401);
- } elseif (strlen($titulo) > $kCARACTERES_MAX) {
- return response()->json(["message" => "El titulo debe ser menor de $kCARACTERES_MAX caracteres.", "state" => "ERROR"], 401);
- }
- }
- if ($idRecurso == null) {
- return response()->json(["message" => "El id del recurso no puede quedar vacio.", "state" => "ERROR"], 401);
- }
- //Obtenemos nuestro recurso.
- //Listing::where('user_id', $idUsuario)->where('title', $titulo)->first();
- $recurso = Listing::where([
- ['user_id', '=', $idUsuario],
- ['id', '=', $idRecurso]
- ])->first();
- if ($recurso == null) {
- return response()->json(["message" => "No se encontro ningun recurso con estos datos.", "state" => "ERROR"], 401);
- }
- if ($recurso->is_private != self::PRIVADO) {
- return response()->json(["message" => "El elemento que deseas editar no es un recurso privado.", "state" => "ERROR"], 401);
- }
- //Comprobamos si son diferentes y si lo son asignamos los valores.
- //Si nos pasan video de YouTube
- if ($video_Code != null) {
- $video = $this->addVideo($video_Code);
- if (gettype($video) == 'array') {
- $recurso->video_provider = $video['video_provider'];
- $recurso->video_code = $video['video_code'];
- }
- } else if ($video_Code == null) {
- //Si no pasan video lo estan borrando
- $recurso->video_provider = null;
- $recurso->video_code = null;
- }
- //Si nos pasan un nuevo titulo
- if ($titulo != null) {
- $recurso->title = $titulo;
- }
- //Si nos pasan una nueva descripción, si no esta vacio y no es null lo actualizamos.
- //En cambio si esta " ", la cadena será vaciada.
- $recurso->description = $descripcion;
- //Si nos pasan un array para borrar fotos
- if ($urlBorradas != null || !empty($urlBorradas)) {
- $arrURLFotos = []; //Se lo asigno a una var auxiliar para no trbajar sobre los valores de la bbdd directamente.
- $arrFormateada = [];
- if ($recurso->photos != null) {
- foreach ($recurso->photos as $item) {
- if (stripos($item, '/s3.') == false) {
- //Generamos una URL correcta
- array_push($arrURLFotos, substr($item, stripos($item, '/storage')));
- } else {
- //Le pasamos al array la misma URL de la imagen sin modificar.
- array_push($arrURLFotos, $item);
- }
- }
- }
- //Una vez quitado el dominio de los enlaces de la base de datos
- foreach ($urlBorradas as $item) {
- if ($item != null) {
- //Solo accedemos si la URL no es S3 Amazon.
- if (stripos($item, '/s3.') == false) {
- // Solo se accede a esta condición, si la imagen no es de los servidores de AMAZON.
- $urlCorrecta = substr($item, 9);
- $urlCorrecta = 'public/' . $urlCorrecta;
- $exists = Storage::disk()->exists($urlCorrecta);
- //EXISTE?
- if ($exists == true) {
- $isEliminado = Storage::disk()->delete($urlCorrecta); //Si existe lo elimino del disco y del array de imagenes.
- if ($isEliminado) { //Si esta bien eliminado lo quitamos del array photos
- $nArray = array_search($item, $arrURLFotos);
- //Si array_search encuentra el valor devuelve su posicion por lo tanto si es diferente de false
- //eliminamos del array dicha URL
- if ($nArray !== false) {
- //unset($arrFotos[$nArray]);
- $arrURLFotos[$nArray] = null;
- }
- }
- //FIN SI EXISTE
- } else { //Si no existe
- //Comprobamos en la base de datos si existe ese campo, si existe
- //Como en el sistema no se ha encontrado ese archivo lo eliminamos del array.
- $nArray = array_search($item, $arrURLFotos);
- //hay que validad el tipo por que 0 me lo estab cogiendo como un false booleano.
- if ($nArray !== false) {
- $arrURLFotos[$nArray] = null;
- }
- }
- } //FIN - 1st IF - Solo se accede a esta condición, si la imagen no es de los servidores de AMAZON.
- else {
- //Si la IMAGEN es de AMAZON?
- $exists = Storage::disk()->exists($item);
- //EXISTE?
- if ($exists == true) {
- $isEliminado = Storage::disk()->delete($item); //Si existe lo elimino del disco y del array de imagenes.
- if ($isEliminado) { //Si esta bien eliminado lo quitamos del array photos
- $nArray = array_search($item, $arrURLFotos);
- //Si array_search encuentra el valor devuelve su posicion por lo tanto si es diferente de false
- //eliminamos del array dicha URL
- if ($nArray !== false) {
- //unset($arrFotos[$nArray]);
- $arrURLFotos[$nArray] = null;
- }
- }
- //FIN SI EXISTE
- } else { //Si no existe
- //Comprobamos en la base de datos si existe ese campo, si existe
- //Como en el sistema no se ha encontrado ese archivo lo eliminamos del array.
- $nArray = array_search($item, $arrURLFotos);
- //hay que validad el tipo por que 0 me lo estab cogiendo como un false booleano.
- if ($nArray !== false) {
- $arrURLFotos[$nArray] = null;
- }
- }
- }
- } //FIN ITEM DIFERENTE A NULL
- } //FIN FOREACH
- //Quitamos todos los null de la array
- foreach ($arrURLFotos as $item) {
- if ($item != null) {
- if (stripos($item, '/s3.') == false) {
- $url = $this->header . $item;
- } else {
- $url = $item;
- }
- array_push($arrFormateada, $url);
- }
- }
- $recurso->photos = $arrFormateada;
- //Guardamos para que surja efecto.
- $recurso->save();
- }
- //Si nos pasan nuevas fotografias.
- if ($numPhotos != null) {
- if ($numPhotos > 0 && $numPhotos < 11) {
- //Contamos todas las imagenes que tiene hay en la base de datos si el numero que quiere subir mas las que ya hay super el maximo error.
- //Si es diferente a null, contamos las imagenes si no es tonteria por que significa que no hay.
- if ($recurso->photos != null) {
- $contImages = count($recurso->photos) + $numPhotos;
- } else {
- $contImages = 0;
- }
- if ($contImages < 0 || $contImages > 10) {
- return response()->json(["message" => "El numero de imagenes que deseas subir, supera el maximo establecido de 10 imagenes por recurso.", "state" => "ERROR"], 401);
- }
- $arrURLS = $this->loadIMG($request);
- if (is_array($recurso->photos)) { //Es una array
- $recurso->photos = array_merge($recurso->photos, $arrURLS);
- } else { //No es una array?
- $recurso->photos = $arrURLS;
- }
- } else {
- return response()->json(["message" => "El numero de imagenes tiene que estar comprendido entre 1 y 10.", "state" => "ERROR"], 401);
- }
- }
- $recurso->save();
- $recurso = $this->getDatos($recurso->id, $recurso->user_id);
- return response()->json(["message" => "Recurso editado correctamente!", "state" => "OK", "data" => $recurso], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema al editar el recurso en la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function ResourceWithMoreThanks()
- {
- try {
- //Los 3 recursos con maas me gustas
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('thanks')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos con mas gracias listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function ResourceWithMoreViews()
- {
- try {
- //Los 3 recursos con maas me gustas
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('views_count')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos mas vistos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function ResourceWithFauvorites()
- {
- try {
- //Los 3 recursos con maas me gustas
- //$recursos = DB::select('SELECT listing_id, user_id, COUNT(listing_id) AS Recursos FROM listing_assign GROUP BY listing_id ORDER BY Recursos DESC LIMIT ?;', [$this->recursosXlista]);
- $recursos = DB::table('listings')->select('id', 'user_id', 'favourite_count')->groupBy('id')->orderByDesc('favourite_count')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos mas vistos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function ResourceMoreNews()
- {
- try {
- //Los recursos con maas me nuevos
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('created_at')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Los recursos mas nuevos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- public function removeResources(Request $request)
- {
- try {
- $idRecurso = $request->get('listing_id');
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- if ($idRecurso == null) {
- return response()->json(["message" => "El id del recurso no puede quedar vacio.", "state" => "ERROR"], 401);
- }
- //Obtenemos nuestro recurso.
- //Listing::where('user_id', $idUsuario)->where('title', $titulo)->first();
- $recurso = Listing::where([
- ['user_id', '=', $idUsuario],
- ['id', '=', $idRecurso]
- ])->first();
- if ($recurso == null) {
- return response()->json(["message" => "No se encontro ningun recurso con estos datos.", "state" => "ERROR"], 401);
- }
- //Al ponerle una fecha en el eliminado el, automaticamente aparecera como oculto.
- $recurso->deleted_at = Carbon::now();
- $recurso->save();
- return response()->json(["message" => "Recurso borrado correctamente.", "state" => "OK"], 201);
- } catch (\Exception $exception) {
- //dd($exception);
- return response()->json(["message" => "Hubo un problema y no se pudo eliminar el recurso.", "state" => "ERROR", "Exception" => htmlentities($exception)], 401);
- }
- }
- //##########################################
- //##METODOS#PARA#IR#PROBANDO#EN#DESARROLLO##
- //##########################################
- public function ResourceWithMoreThanks_dev(Request $request)
- {
- try {
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Los 3 recursos con maas me gustas
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('thanks')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id, $existsUser);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos con mas gracias listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => $exception], 401);
- }
- }
- public function ResourceWithMoreViews_dev(Request $request)
- {
- try {
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Los 3 recursos con maas me gustas
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('views_count')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id, $existsUser);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos mas vistos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => $exception], 401);
- }
- }
- public function ResourceWithFauvorites_dev(Request $request)
- {
- try {
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Los 3 recursos con maas me gustas
- //$recursos = DB::select('SELECT listing_id, user_id, COUNT(listing_id) AS Recursos FROM listing_assign GROUP BY listing_id ORDER BY Recursos DESC LIMIT ?;', [$this->recursosXlista]);
- $recursos = DB::table('listings')->select('id', 'user_id', 'favourite_count')->groupBy('id')->orderByDesc('favourite_count')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id, $existsUser);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Recursos mas vistos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => $exception], 401);
- }
- }
- public function ResourceMoreNews_dev(Request $request)
- {
- try {
- $idUsuario = $request->get('user_id');
- $email = $request->get('email');
- $existsUser = User::where('id', $idUsuario)->where('email', $email)->first();
- if ($existsUser == null) {
- return response()->json(["message" => "No se encontró ningún usuario", "state" => "USER_NOT_FOUND"], 401);
- }
- //Los recursos con maas me nuevos
- $recursos = DB::table('listings')->select('id', 'user_id', 'is_published')->where('is_published', true)->orderByDesc('created_at')->limit($this->recursosXlista)->get();
- $arrRecursos = [];
- foreach ($recursos as $item) {
- $arrRes = $this->getDatos($item->id, $item->user_id, $existsUser);
- if ($arrRes != null) {
- array_push($arrRecursos, $arrRes);
- }
- }
- return response()->json(["message" => "Los recursos mas nuevos listados correctamente", "state" => "OK", "data" => $arrRecursos], 201);
- } catch (\Exception $exception) {
- return response()->json(["message" => "Hubo un problema y no se pudieron obtener los recursos con mas gracias de la base de datos.", "state" => "ERROR", "Exception" => $exception], 401);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement