<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\models\seguridad\Cineasta;
use App\models\seguridad\Pelicula;
use Faker\Provider\Image;
use Intervention\Image\ImageManagerStatic;
use Illuminate\Support\Facades\DB;
class PeliculasController extends Controller
{
// ****************************************
// ****************************************
public function block($id, $value, Request $request) {
Pelicula::find(decrypt($id))->update(['visible' => $value]);
if ($value == 0) {
$message = "Película desactivada";
}
else {
$message = "Película activada";
}
return redirect()->back()->with('mensaje',$message);
}
// ****************************************
// ****************************************
public function create() {
$cineastas = Cineasta::orderBy('nombre')->get();
return view('admin.pelicula.create', compact('cineastas'));
}
// ****************************************
// ****************************************
public function delete($id) {
Pelicula::find(decrypt($id))->delete();
// No hay que retornar nada pq se llama desde el funciones.js
// return redirect()->back()->with('mensaje', "Borrado correctamente");
}
// ****************************************
// ****************************************
public function edit($id) {
$cineastas = Cineasta::orderBy('nombre')->get();
$pelicula = Pelicula::find(decrypt($id));
$dirActivo = Cineasta::find($pelicula->id_director);
$nomDirector = $dirActivo->nombre;
return view('admin.pelicula.edit', compact('cineastas', 'pelicula','nomDirector'));
}
// ********************************
// ********************************
public function generarSlug($titulo) {
$slug = str_slug($titulo);
$arrAux = Pelicula::select('slug')->where('slug', $slug)->get();
$cont = 1;
while (count($arrAux) == 1) {
$slug .= "-".$cont;
$arrAux = Pelicula::select('slug')->where('slug', $slug)->get();
$cont++;
}
return $slug;
}
// ****************************************
// ****************************************
public function index() {
$arrPel = DB::table('peliculas')
->join('cineastas', 'cineastas.id', '=', 'peliculas.id_director')
->select('peliculas.*', 'cineastas.nombre as nomCineasta')
->get();
return view('admin.pelicula.list', compact('arrPel'));
}
// ****************************************
// ****************************************
public function show($id) {
$pelicula = DB::table('peliculas')
->join('cineastas', 'cineastas.id', '=', 'peliculas.id_director')
->select('peliculas.*', 'cineastas.nombre as nomCineasta')
->where('peliculas.id', decrypt($id))
->get();
return view('admin.pelicula.show', compact('pelicula'));
}
// ***********************************
// **********************************
public function store(Request $request) {
$request->validate([
'titulo'=>'required|max:50',
'anno'=>'required|max:4',
'nota'=>'required|max:2',
'id_director'=>'required|integer',
'numNom'=>'required|integer',
'numOsc'=>'required|integer',
'foto_pelicula'=>'image|mimes:jpeg,png,jpg,gif|max:2048'
]);
$slug = $this->generarSlug($request->get("titulo")." ".$request->get("anno"));
$pelicula = new Pelicula([
'titulo' => $request->get("titulo"),
'slug' => $slug,
'anno' => $request->get("anno"),
'nota' => $request->get("nota"),
'id_director' => $request->get("id_director"),
'numNom' => $request->get("numNom"),
'numOsc' => $request->get("numOsc"),
'foto_pelicula' => 'default.jpg',
'visible' => 1
]);
if ($request->has('foto_pelicula')) {
$foto_pelicula = $request->file('foto_pelicula');
// $filename = time().'.'.request()->foto_pelicula->getClientOriginalExtension();
$filename = substr($slug,0,25).'.'.request()->foto_pelicula->getClientOriginalExtension();
$img = ImageManagerStatic::make($foto_pelicula)->resize(64, 64);
$img->save('assets/fotos_peliculas/'.$filename);
$pelicula->foto_pelicula = $filename;
}
$id = $pelicula->save();
return redirect()->route('peliculas_list')->with('success', 'Película guardado correctamente!');
}
// ****************************************
// ****************************************
public function update(Request $request, $id) {
$pelicula = Pelicula::find(decrypt($id));
$request->validate([
'titulo' => 'required',
'anno' => 'required',
'nota' => 'required',
'id_director' => 'required',
'numNom' => 'required',
'numOsc' => 'required',
'foto_pelicula'=>'image|mimes:jpeg,png,jpg|max:2048'
]);
// Lo primero ver si el título ha cambiado para generar un nuevo slug
$arr = Pelicula::select('titulo')->where('id', decrypt($id))->get();
$slug = "";
if ($arr[0]->titulo != request('titulo')) {
$slug = $this->generarSlug($request->get("titulo")." ".$request->get("anno"));
$pelicula->slug = $slug;
}
$pelicula->titulo = request('titulo');
$pelicula->anno = request('anno');
$pelicula->nota = request('nota');
$pelicula->id_director = request('id_director');
$pelicula->numNom = request('numNom');
$pelicula->numOsc = request('numOsc');
if ($request->has('foto_pelicula')) {
$foto_pelicula = $request->file('foto_pelicula');
$filename = substr($pelicula->slug,0,25).'.'.request()->foto_pelicula->getClientOriginalExtension();
$img = ImageManagerStatic::make($foto_pelicula)->resize(64, 64);
$img->save('assets/fotos_peliculas/'.$filename);
$pelicula->foto_pelicula = $filename;
}
$pelicula->save();
return redirect()->route('peliculas_list', ['id' => $id])->with('success','Registro actualizado correctamente.');
}
}
Una forma quizás más fácil de guardar las imágenes en store sería:
$user = $request->all();
if ($request->has('foto_id')) {
$nomFoto = time()."_".request()->foto_id->getClientOriginalName();
$request->file('foto_id')->move("images", $nomFoto);
$fotoAux = Foto::create(['ruta_foto'=>$nomFoto]);
$user["foto_id"] = $fotoAux->id;
}
$user["password"] = bcrypt(request()->password);
User::create($user);
El update tb se puede hacer más fácil:
$id = decrypt($id);
$user = User::find($id);
$arrAux = $request->all();
if ($request->has('foto_id')) {
$nomFoto = time()."_".request()->foto_id->getClientOriginalName();
$request->file('foto_id')->move("images", $nomFoto);
$fotoAux = Foto::create(['ruta_foto'=>$nomFoto]);
$arrAux["foto_id"] = $fotoAux->id;
}
$user->update($arrAux);
return redirect()->route('users.index');
No hay comentarios:
Publicar un comentario