diff --git a/app/Http/Controllers/EventoController.php b/app/Http/Controllers/EventoController.php index ee919e9..59f88a3 100644 --- a/app/Http/Controllers/EventoController.php +++ b/app/Http/Controllers/EventoController.php @@ -2,8 +2,13 @@ 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 { @@ -73,9 +78,54 @@ class EventoController extends Controller * @param \App\Models\Evento $evento * @return \Illuminate\Http\Response */ - public function update(Request $request, Evento $evento) - { - dd($request); + 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 view("resultado"); } /** diff --git a/app/Models/Utils.php b/app/Models/Utils.php index 3e8dada..56681fa 100644 --- a/app/Models/Utils.php +++ b/app/Models/Utils.php @@ -4,12 +4,16 @@ namespace App\Models; class Utils { - - private function formatMinutos() { - + // El input es un string de forma 'hh:mm' con hh entre 00 y 23 y mm entre 00 y 59 + public static function formatMinutos($horaMinuto) { + $hora_minuto_array = explode(':', $horaMinuto); + $horas = (int) $hora_minuto_array[0]; + $minutos = (int) $hora_minuto_array[1]; + $cantMinutos = ($horas*60) + $minutos; + return $cantMinutos; } - private function parseHora() { + public static function parseHora() { } diff --git a/resources/views/edit.blade.php b/resources/views/edit.blade.php index 0dec3de..e89dca9 100644 --- a/resources/views/edit.blade.php +++ b/resources/views/edit.blade.php @@ -57,15 +57,26 @@
-
+ + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + + @csrf
- +
- - + +
diff --git a/resources/views/resultado.blade.php b/resources/views/resultado.blade.php new file mode 100644 index 0000000..1568d31 --- /dev/null +++ b/resources/views/resultado.blade.php @@ -0,0 +1,62 @@ + + + + + + + Planifibot + + + + + + + + + + + +
+ @if (Route::has('login')) + + @endif + +
+
+ +
+ +
+
+
+ +
+
+
+ +
+
+ Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }}) +
+
+
+
+ +