planifibo7/app/Http/Controllers/EventoController.php

152 lines
4.3 KiB
PHP
Raw Normal View History

2021-11-25 16:19:13 -03:00
<?php
namespace App\Http\Controllers;
use App\Models\Dia;
use App\Models\Evento;
use App\Models\HoraFlag;
use App\Models\Utils;
use Dotenv\Validator;
use Illuminate\Http\Request;
use mysql_xdevapi\Exception;
class EventoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* 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\RedirectResponse
*/
public function store(Request $request)
{
$request->validate([
'nombre' => 'required',
]);
$evento = new Evento();
$evento->nombre = $request->input("nombre");
$evento->save();
return redirect()->route("edit", ['evento' => $evento]);
}
/**
* Display the specified resource.
*
* @param \App\Models\Evento $evento
* @return \Illuminate\Http\Response
*/
public function show(Evento $evento)
{
// evento->coordinar devuelve los tres mejores marzullos de los días que tiene asociados
// dia->marzullo devuelve array de
// [dia::string, cantidad::integer, inicio::integer, fin::integer, duracion::integer
// inicioLindo::string, finLindo::string, duracionLinda::string]
$marzullos = $evento->coordinar();
return view("resultado", ['marzullos' => $marzullos, 'evento' => $evento]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Evento $evento
* @return \Illuminate\Http\Response
*/
public function edit(Evento $evento)
{
return view("edit", ['evento' => $evento]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Evento $evento
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, Evento $evento) {
// Validación.
request()->validate([
'dia' => 'array',
'dia.*' => 'required|string|max:100',
'salida' => 'array',
'llegada.*' => 'required|date_format:H:i',
'llegada' => 'array',
'salida.*' => 'required|date_format:H:i|after:llegada.*'
],[
'salida.*.after' => 'La hora de llegada debe ser anterior a la de salida.'
]);
// Adición de días y horas.
foreach ($request->input('dia') as $i => $dia) {
// Busqueda en la lista de días del evento, y adición en su defecto.
$diaNombre = strtolower(trim($dia)); // ¿HACER FUNCIÓN PARA NORMALIZAR NOMBRES?
$arrayAux = $evento->dias()->where('nombre',$diaNombre)->get();
$diaID = null;
if ($arrayAux->count() == 0) {
$nuevo = new Dia(['nombre' => $diaNombre]);
$nuevo->evento_id = $evento->id;
$nuevo->save();
$diaID = $nuevo->id;
} else {
$diaID = $arrayAux[0]->id;
}
// Creación de hora_flags ingresados para cada día.
$llegadaDia = new HoraFlag([
'dia_id' => $diaID,
'minutoDelDia' => Utils::formatMinutos($request->input('llegada')[$i]),
'flag' => 1
]);
$salidaDia = new HoraFlag([
'dia_id' => $diaID,
'minutoDelDia' => Utils::formatMinutos($request->input('salida')[$i]),
'flag' => -1
]);
// Adición de hora_flags ingresados para cada día.
$llegadaDia->save();
$salidaDia->save();
}
return redirect()->route("show", ['evento' => $evento]);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Evento $evento
* @return \Illuminate\Http\Response
*/
public function destroy(Evento $evento)
{
//
}
public function prueba()
{
return view("prueba");
}
}