Sistema web venta de loteria php 5 laravel

Cerrado
usuario anónimo - 4 mar 2023 a las 16:36

Sistema web venta de loteria php 5 laravel:
Tienen alguna solución para poner límite de venta por cada hora de sorteo, para que se le reinicie el límite de venta en cada hora de sorteo, que se refleje donde dice limite en la imagen.
Solo tiene para limites diarios y semanales, necesito que por cada hora del sorteo el límite se restablezca automáticamente al que yo lo establezca en la base de datos, y así sucesivamente con cada sorteo.
Aquí le adjunto foto del sistema y de la base de datos y el código del archivo IndexController php, si necesitan verificar algún otro código me avisan, por favor gracias espero alguna respuesta.

Aquí la estructura completa del repositorio donde pueden ver todas la líneas completas del código en github

https://github.com/emilioaor/loteria-de-animalitos

codigo del archivo IndexController php

/**
 * Obtiene el limite disponible para cada animalito
 *
 * @param $animals
 * @return array
 */
private function getDailyLimit($animals)
{
    // Obtengo todos los tickets de hoy
    $start = (new \DateTime())->setTime(0, 0, 0);
    $end = (new \DateTime())->setTime(23, 59, 59);
    $tickets = Ticket::where('created_at', '>=', $start)->where('created_at', '<=', $end)->get();

    // Obtengo los resultados de la ultima semana
    $startResult = clone $start;
    $startResult->modify('-7 days');
    $endResult = clone $end;

    $results = Result::where('created_at', '>=', $startResult)->where('created_at', '<=', $endResult)->get();

    // Recorro todos los animalitos
    foreach ($animals as $animal) {
        $resultFlag = false;

        // Recorro todos los resultados para saber si ya ha salido este animal
        foreach ($results as $result) {
            if ($result->animal->number === $animal->number) {
                $resultFlag = true;
            }
        }

        // Verifico que no este definido el limite para inicializarlo
        if (! isset($animal->limit)) {
            if ($resultFlag) {
                // Si el animalito ya salio esta semana, le inicializo el limite del sorteo
                $animal->limit = floatval($animal->sort->daily_limit);
            } else {
                // Si no ha salido esta semana, se asigna el limite configurado para estos casos
                $animal->limit = ($weekLimit = floatval($animal->sort->week_limit)) ?
                    $weekLimit :
                    0;
            }
        }

        // Al limite inicializado le descuento todas las ventas de hoy
        foreach ($tickets as $ticket) {
            foreach ($ticket->animals as $ticketAnimal) {
                if ($ticketAnimal->number === $animal->number) {
                    $animal->limit -= $ticketAnimal->pivot->amount * count($ticket->dailySorts);
                }
            }
        }

    }

    return $animals;
}
Consulta también: