sistema web venta de loteria php 5 laravel alguna solucion para limites por cada hora de sorteo

(1/1)

thelabml:
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

Código
/**
 * 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;
}

Navegación

[0] Índice de Mensajes