Autor Tema: sistema web venta de loteria php 5 solucion para limites cada hora de sorteo?  (Leído 1290 veces)

thelabml

  • Visitante
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: (php) [Seleccionar]
/**
 * 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;
}




 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".