Publicidad

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

Publicado por thelabml, 04 Marzo de 2023, 13:09

Tema anterior - Siguiente tema

0 Usuarios y 1 Visitante están viendo este tema.

thelabml

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

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;
}

Rock Lee

Bueno recién pude ver el código un poco mas no se si es viable hacerlo cada hora, puede ser una sobre exigencia a largo plazo (tomando en cuenta cuantos participan). Igualmente tengo que revisar mejor el github por que tengo ver donde parte o como toma el valor, por que haciendo una división extra y agregándolo no debería dar problemas pero tiene ser en la base del código mismo. En el código que me mostrás esta la resolución final que debe agregarse una opción mas pero primero se debe poner la opción en la base ¿Me explico?


Saludos Familia!

Temas Similares (5)