Desde la ruta resultado usort putea por la clase Evento

This commit is contained in:
Alejandro Tasistro 2021-09-29 19:10:41 -03:00
parent 8f16b70b17
commit f2a4dfc2f9
7 changed files with 79 additions and 16 deletions

View File

@ -57,7 +57,12 @@ class EventoController extends Controller
*/
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]);
}
/**
@ -76,7 +81,7 @@ class EventoController extends Controller
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Evento $evento
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\RedirectResponse
*/
public function update(Request $request, Evento $evento) {
@ -125,7 +130,7 @@ class EventoController extends Controller
$salidaDia->save();
}
return view("resultado");
return redirect()->route("show", ['evento' => $evento]);
}
/**

View File

@ -17,10 +17,14 @@ class Evento extends Model
public function coordinar(): array {
$marzullos = [];
//devuelve array de
// [nombre::string, cantidad::integer, inicio::integer, fin::integer, duracion::integer]
// [dia::string, cantidad::integer, inicio::integer, fin::integer, duracion::integer
// inicioLindo::string, finLindo::string, duracionLinda::string]
foreach ($this->dias as $dia) {
[$a, $b, $c, $d] = $dia->marzullo();
$marzullos[] = ["dia" => $dia->nombre, "cantidad" => $a, "inicio" => $b, "fin" => $c, "duracion" => $d];
$marzullos[] = ["dia" => $dia->nombre, "cantidad" => $a,
"inicio" => $b, "fin" => $c, "duracion" => $d,
"inicioLindo" => Utils::parseHora($b), "finLindo" => Utils::parseHora($c),
"duracionLinda" => Utils::parseHora($d)];
}
usort($marzullos, array("Evento", "cmp_cant_marzullo"));
return array_slice($marzullos, 0, 3);
@ -32,7 +36,7 @@ class Evento extends Model
// $a,$b::[nombre::string, cantidad::integer, horario::string, duracion::integer]
// por cantidad
function cmp_cant_marzullo($a, $b) {
function cmp_cant_marzullo($a, $b): int {
$cant_a = $a["cantidad"];
$cant_b = $b["cantidad"];
if ($cant_a == $cant_b) {

View File

@ -4,7 +4,8 @@ namespace App\Models;
class Utils {
// El input es un string de forma 'hh:mm' con hh entre 00 y 23 y mm entre 00 y 59
// El INPUT es un string de forma 'hh:mm' con hh entre 00 y 23 y mm entre 00 y 59
// El OUTPUT es un int
public static function formatMinutos($horaMinuto) {
$hora_minuto_array = explode(':', $horaMinuto);
$horas = (int) $hora_minuto_array[0];
@ -13,8 +14,14 @@ class Utils {
return $cantMinutos;
}
public static function parseHora() {
// El INPUT es un int > 0.
// El OUTPUT es un string de forma 'hh:mm' con hh entre 00 y 23 y mm entre 00 y 59
public static function parseHora($cantMinutos) {
$horas = floor($cantMinutos / 60);
if ($horas < 10) $horas = '0' . $horas;
$minutos = $cantMinutos % 60;
if ($minutos < 10) $minutos = '0' . $minutos;
return $horas . ':' . $minutos;
}
}

23
public/css/resultado.css vendored Normal file
View File

@ -0,0 +1,23 @@
#logo {
width:80%;
margin: auto;
}
div.p-6 {
text-align: center;
}
button, input[type="submit"] {
background: darkred;
border-radius: 5px;
padding: 5px;
color:white;
margin: 15px;
}
input.formulario {
background-color: white;
border-radius: 5px;
padding: 5px;
}

View File

@ -0,0 +1,11 @@
<!-- [dia::string, cantidad::integer, inicio::integer, fin::integer, duracion::integer
inicioLindo::string, finLindo::string, duracionLinda::string] -->
<div class="marzullo">
<h3>
{{ $marzullo["dia"] }}
</h3>
<p>
Desde {{ $marzullo["inicioLindo"] }} hasta {{ $marzullo["finLindo"] }}
pueden {{ $marzullo["cantidad"] }} personas (duración: {{ $marzullo["duracionLinda"] }}).
</p>
</div>

View File

@ -4,11 +4,11 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Planifibot</title>
<title>Planifibot - {{ $evento->nombre }}</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<link href='css/welcome.css' rel="stylesheet">
<link href='/css/resultado.css' rel="stylesheet">
<!-- Styles -->
<style>
@ -40,13 +40,24 @@
<div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
<img id= "logo" src="assets/logoMPS.png" alt="Mercado Popular de Subsitencia">
<img id= "logo" src="/assets/logoMPS.png" alt="Mercado Popular de Subsitencia">
</div>
<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
<h1>
{{ $evento->nombre }}
</h1>
</div>
<div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
<div class="grid grid-cols-1 md:grid-cols-2">
<div class="p-6">
<p>
Hasta ahora estos son los mejores horarios para "{{ $evento->nombre }}":
</p>
@each('view.marzullo', $marzullos, 'marzullo')
</div>
</div>
</div>

View File

@ -18,8 +18,10 @@ Route::get('/', function () {
return view('welcome');
});
Route::post('/eventos',[EventoController::class, 'store'])->name('store');
Route::get('/eventos/{evento}',[EventoController::class, 'edit'])->name('edit');
Route::post('/eventos', [EventoController::class, 'store'])->name('store');
Route::post('/eventos/{evento}', [EventoController::class, 'update'])->name('update');
Route::get('/eventos/{evento}', [EventoController::class, 'edit'])->name('edit');
Route::get('/eventos/{evento}/resultado', [EventoController::class, 'show'])->name('show');