Ahora si hay dos horaFlags con mismo minuto las de flag negativa van primero

This commit is contained in:
Alejandro Tasistro 2021-12-18 10:33:28 -03:00
parent c5c57ee7a1
commit b2de025915
2 changed files with 22 additions and 19 deletions

View File

@ -6,16 +6,19 @@ use App\Models\Dia;
use App\Models\Evento; use App\Models\Evento;
use App\Models\HoraFlag; use App\Models\HoraFlag;
use App\Models\Utils; use App\Models\Utils;
use Dotenv\Validator; use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use mysql_xdevapi\Exception; use Illuminate\Http\Response;
class EventoController extends Controller class EventoController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function index() public function index()
{ {
@ -25,7 +28,7 @@ class EventoController extends Controller
/** /**
* Show the form for creating a new resource. * Show the form for creating a new resource.
* *
* @return \Illuminate\Http\Response * @return Response
*/ */
public function create() public function create()
{ {
@ -35,13 +38,13 @@ class EventoController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @return \Illuminate\Http\RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request) public function store(Request $request)
{ {
$request->validate([ $request->validate([
'nombre' => 'required', 'nombre' => 'required'
]); ]);
$evento = new Evento(); $evento = new Evento();
$evento->nombre = $request->input("nombre"); $evento->nombre = $request->input("nombre");
@ -52,8 +55,8 @@ class EventoController extends Controller
/** /**
* Display the specified resource. * Display the specified resource.
* *
* @param \App\Models\Evento $evento * @param Evento $evento
* @return \Illuminate\Http\Response * @return Application|Factory|View|Response
*/ */
public function show(Evento $evento) public function show(Evento $evento)
{ {
@ -68,8 +71,8 @@ class EventoController extends Controller
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param \App\Models\Evento $evento * @param Evento $evento
* @return \Illuminate\Http\Response * @return Application|Factory|View|Response
*/ */
public function edit(Evento $evento) { public function edit(Evento $evento) {
return view("edit", ['evento' => $evento]); return view("edit", ['evento' => $evento]);
@ -78,9 +81,9 @@ class EventoController extends Controller
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
* *
* @param \Illuminate\Http\Request $request * @param Request $request
* @param \App\Models\Evento $evento * @param Evento $evento
* @return \Illuminate\Http\RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, Evento $evento) { public function update(Request $request, Evento $evento) {
@ -135,8 +138,8 @@ class EventoController extends Controller
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param \App\Models\Evento $evento * @param Evento $evento
* @return \Illuminate\Http\Response * @return Response
*/ */
public function destroy(Evento $evento) public function destroy(Evento $evento)
{ {

View File

@ -31,19 +31,19 @@ class Dia extends Model
// y en best["fin"] el minutoDelDía de la hora siguiente (esta hora existe porque si cant_actual // y en best["fin"] el minutoDelDía de la hora siguiente (esta hora existe porque si cant_actual
// crece es porque llega a alguien, y por lo tanto hay una hora posterior en la que se va). // crece es porque llega a alguien, y por lo tanto hay una hora posterior en la que se va).
// finalmente se devuelve best, con la duración del horario devuelto. // finalmente se devuelve best, con la duración del horario devuelto.
public function marzullo() { public function marzullo(): array {
// INICIO // INICIO
$cant_actual = 0; $cant_actual = 0;
$best = ["cantidad" => 0, "inicio" => 0, "fin" => 0]; $best = ["cantidad" => 0, "inicio" => 0, "fin" => 0];
// Ordenar horaFlags por minutoDelDia // Ordenar horaFlags por minutoDelDia
$horas = $this->horaFlags()->orderBy('minutoDelDia')->get(); $horas = $this->horaFlags()->orderBy('minutoDelDia')->orderBy('flag')->get();
// var_dump($horas); // var_dump($horas);
// ALGORITMO // ALGORITMO
foreach ($horas as $i => $hora) { foreach ($horas as $i => $hora) {
$cant_actual += $hora->flag; $cant_actual += $hora->flag;
if ($cant_actual > $best["cantidad"] && if ($cant_actual > $best["cantidad"] &&
($horas[$i+1]->flag > 0 || $horas[$i+1]->minutoDelDia - $hora->minutoDelDia > 15)) { ($horas[$i+1]->flag > 0 || $horas[$i+1]->minutoDelDia - $hora->minutoDelDia > 15)) {
$best["cantidad"] = $cant_actual; $best["cantidad"] = $cant_actual;
$best["inicio"] = $hora->minutoDelDia; $best["inicio"] = $hora->minutoDelDia;
$best["fin"] = $horas[$i+1]->minutoDelDia; $best["fin"] = $horas[$i+1]->minutoDelDia;