File: /home/cursos.ril.es/app/Http/Controllers/CursosController.php
<?php
namespace App\Http\Controllers;
use App\Categorias;
use App\Cursos;
use App\Profesores;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class CursosController extends Controller
{
public function all() {
return Cursos::orderBy('fechaInicio', 'DESC')->get();
}
public function last() {
return Cursos::orderBy('fechaInicio', 'DESC')->take(3)->get();
}
/**
* Genera una respuesta con la ruta de la imagen
*
* @param $filename nombre de la imagen
* @return Response
*/
public function getPlazas($id) {
$curso = Cursos::find($id);
return $curso->numMax - $curso->userscursos()->count();
}
public function withPlazas($cursos) {
$cursos = $cursos->get();
$ids = [];
foreach ($cursos as $curso) {
if ($this->getPlazas($curso->id)) {
$ids[] = $curso->id;
}
}
return Cursos::whereIn('id',$ids);
}
public function getImagenCurso($filename){
$file = Storage::disk('local')->get($filename);
return new Response($file, 200);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$cursos = $this->orderCursos();
if (isset($_GET['plazas'])) {
$cursos = $this->withPlazas($cursos);
$cursos = $this->orderCursosWithPlazas($cursos);
}
if (isset($_GET['finalizados'])) {
$cursos = $cursos->activos();
}
$categorias = Categorias::all();
return view('inicio')->with(['cursos' => $cursos->paginate(9), 'categorias' => $categorias]);
}
public function orderCursosWithPlazas($cursos) {
$orderBy = 'fechaInicio';
$direction = 'DESC';
if(isset($_GET['direction'])) {
$direction = $_GET['direction'];
};
if(isset($_GET['orderBy'])) {
$orderBy = $_GET['orderBy'];
};
return $cursos->orderBy($orderBy, $direction);
}
public function orderCursos() {
$orderBy = 'fechaInicio';
$direction = 'DESC';
if(isset($_GET['direction'])) {
$direction = $_GET['direction'];
};
if(isset($_GET['orderBy'])) {
$orderBy = $_GET['orderBy'];
};
if(isset($_GET['orderBy']) && Auth::check() && $_GET['orderBy'] == 'interes') {
return Auth::user()->intereses();
};
return Cursos::orderBy($orderBy, $direction);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
public function getCurso($slug){
$curso = Cursos::where('slug', $slug)->firstOrFail();
return view('cursos')->with(['curso' => $curso, 'categoria' => $curso->categoria()->first(),'profesor' => $curso->profesor()->first()]);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}