HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/qas.sports-crowd.com/app/Http/Controllers/PublicController.php
<?php

namespace App\Http\Controllers;

use App\DataPolicy;
use DB;

class PublicController extends Controller
{

    public function effectiveTransactions($year = null, $month = null)
    {
        $report = '<style>
            #customers {
                font-family: Arial, Helvetica, sans-serif;
                border-collapse: collapse;
                width: 100%;
                cursor: pointer;
            }
            
            #customers td, #customers th {
                border: 1px solid #ddd;
                padding: 8px;
            }
            
            #customers tr:nth-child(even){background-color: #f2f2f2;}
            
            #customers tr:hover {background-color: #ddd;}
            
            #customers th {
                padding-top: 12px;
                padding-bottom: 12px;
                text-align: left;
                background-color: black;
                color: white;
            }
            </style>';
        $report .= '<h1 style="text-align: center; background-color: black; color: white; margin: 0px;">Reporte de transacciones efectivas</h1>';
        $query = 'SELECT week,
                    SUM(newUsers) AS newUsers,
                    SUM(userTicketPurchases) AS userTicketPurchases,
                    SUM(soldTickets) AS soldTickets,
                    SUM(userOrders) AS userOrders,
                    SUM(orders) AS orders,
                    SUM(userAcademyPayments) AS userAcademyPayments,
                    SUM(academyPayments) AS academyPayments,
                    SUM(userTournamentPayments) AS userTournamentPayments,
                    SUM(tournamentPayments) AS tournamentPayments
                FROM (
                    SELECT DATE_FORMAT(DATE_ADD((SELECT u.created_at - INTERVAL (WEEKDAY(u.created_at) + 1) DAY), INTERVAL 1 DAY),"%Y-%m-%d") AS weekFilter,
    	                DATE_ADD(DATE(u.created_at), INTERVAL (7 - DAYOFWEEK(u.created_at)) + 2 DAY) AS week,
                        COUNT(u.id) AS newUsers,
                        0 AS userTicketPurchases,
                        0 AS soldTickets,
                        0 AS userOrders,
                        0 AS orders,
                        0 AS userAcademyPayments,
                        0 AS academyPayments,
                        0 AS userTournamentPayments,
                        0 AS tournamentPayments
                    FROM users u
                    WHERE u.deleted_at IS NULL AND u.rol_id = 4' . ($year ? ' AND YEAR(u.created_at) = ' . $year : '') . ($month ? ' AND MONTH(u.created_at) = ' . $month : '') . '
                    GROUP BY weekFilter, week
                    UNION
                    SELECT DATE_FORMAT(DATE_ADD((SELECT t.created_at - INTERVAL (WEEKDAY(t.created_at) + 1) DAY), INTERVAL 1 DAY),"%Y-%m-%d") AS weekFilter,
                        DATE_ADD(DATE(t.created_at), INTERVAL (7 - DAYOFWEEK(t.created_at)) + 2 DAY) AS week,
                        0 AS newUsers,
                        COUNT(DISTINCT(t.user_id)) AS userTicketPurchases,
                        COUNT(t.id) AS soldTickets,
                        0 AS userOrders,
                        0 AS orders,
                        0 AS userAcademyPayments,
                        0 AS academyPayments,
                        0 AS userTournamentPayments,
                        0 AS tournamentPayments
                    FROM tickets t
                    WHERE t.ticket_status_id = 1' . ($year ? ' AND YEAR(t.created_at) = ' . $year : '') . ($month ? ' AND MONTH(t.created_at) = ' . $month : '') . '
                    GROUP BY weekFilter, week
                    UNION
                    SELECT DATE_FORMAT(DATE_ADD((SELECT o.creation_date - INTERVAL (WEEKDAY(o.creation_date) + 1) DAY), INTERVAL 1 DAY),"%Y-%m-%d") AS weekFilter,
                        DATE_ADD(DATE(o.creation_date), INTERVAL (7 - DAYOFWEEK(o.creation_date)) + 2 DAY) AS week,
                        0 AS newUsers,
                        0 AS userTicketPurchases,
                        0 AS soldTickets,
                        COUNT(DISTINCT(o.client_id)) AS userOrders,
                        COUNT(o.id) AS orders,
                        0 AS userAcademyPayments,
                        0 AS academyPayments,
                        0 AS userTournamentPayments,
                        0 AS tournamentPayments
                    FROM users u
                    JOIN orders o ON o.client_id = u.id
                    WHERE o.gw_state = "CONFIRMED"' . ($year ? ' AND YEAR(o.creation_date) = ' . $year : '') . ($month ? ' AND MONTH(o.creation_date) = ' . $month : '') . '
                    GROUP BY weekFilter, week
                    UNION
                    SELECT DATE_FORMAT(DATE_ADD((SELECT pt.payment_date - INTERVAL (WEEKDAY(pt.payment_date) + 1) DAY), INTERVAL 1 DAY),"%Y-%m-%d") AS weekFilter,
                        DATE_ADD(DATE(pt.payment_date), INTERVAL (7 - DAYOFWEEK(pt.payment_date)) + 2 DAY) AS week,
                        0 AS newUsers,
                        0 AS userTicketPurchases,
                        0 AS soldTickets,
                        0 AS userOrders,
                        0 AS orders,
                        COUNT(DISTINCT(ap.user_id)) AS userAcademyPayments,
                        COUNT(ap.id) AS academyPayments,
                        0 AS userTournamentPayments,
                        0 AS tournamentPayments
                    FROM academy_purchases ap
                    JOIN payment_transactions pt ON ap.payment_transaction_id = pt.id
                    WHERE pt.state = "CONFIRMED"' . ($year ? ' AND YEAR(pt.payment_date) = ' . $year : '') . ($month ? ' AND MONTH(pt.payment_date) = ' . $month : '') . '
                    GROUP BY weekFilter, week
                    UNION
                    SELECT DATE_FORMAT(DATE_ADD((SELECT pt.payment_date - INTERVAL (WEEKDAY(pt.payment_date) + 1) DAY), INTERVAL 1 DAY),"%Y-%m-%d") AS weekFilter,
                        DATE_ADD(DATE(pt.payment_date), INTERVAL (7 - DAYOFWEEK(pt.payment_date)) + 2 DAY) AS week,
                        0 AS newUsers,
                        0 AS userTicketPurchases,
                        0 AS soldTickets,
                        0 AS userOrders,
                        0 AS orders,
                        0 AS userAcademyPayments,
                        0 AS academyPayments,
                        COUNT(DISTINCT(au.user_id)) AS userTournamentPayments,
                        COUNT(ap.id) AS tournamentPayments
                    FROM academy_users au
                    JOIN academy_tournament_payments ap ON ap.academy_user_id = au.id
                    JOIN payment_transactions pt ON ap.payment_transaction_id = pt.id
                    WHERE pt.state = "CONFIRMED"' . ($year ? ' AND YEAR(pt.payment_date) = ' . $year : '') . ($month ? ' AND MONTH(pt.payment_date) = ' . $month : '') . '
                    GROUP BY weekFilter, week) a
                GROUP BY weekFilter, week
                ORDER BY weekFilter DESC';

        DB::statement("SET sql_mode = ''");
        $data = DB::select($query);
        DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
        $table = '<table id="customers">
        <tr>
            <th>Semana</th>
            <th>Transacciones Semana</th>
            <th>Boletas Vendidas</th>
            <th>Pedidos</th>
            <th>Pagos Academias</th>
            <th>Pagos Torneos</th>
            <th>&nbsp;&nbsp;</th>
            <th>Nuevos Usuarios</th>
            <th>Compras BoleterĂ­a Usuarios</th>
            <th>Pedidos Usuarios</th>
            <th>Pagos Academias Usuarios</th>
            <th>Pagos Torneos Usuarios</th>
        </tr>';
        $totalNewUsers = 0;
        $totalWeekTransactions = 0;
        $totalUserTicketPurchases = 0;
        $totalSoldTickets = 0;
        $totalUserOrders = 0;
        $totalOrders = 0;
        $totalUserAcademyPayment = 0;
        $totalAcademyPayments = 0;
        $totalUserTournamentPayments = 0;
        $totalTournamentPayments = 0;
        foreach ($data as $item) {
            $totalNewUsers                  += $item->newUsers;
            $totalUserTicketPurchases       += $item->userTicketPurchases;
            $totalSoldTickets               += $item->soldTickets;
            $totalUserOrders                += $item->userOrders;
            $totalOrders                    += $item->orders;
            $totalUserAcademyPayment        += $item->userAcademyPayments;
            $totalAcademyPayments           += $item->academyPayments;
            $totalUserTournamentPayments    += $item->userTournamentPayments;
            $totalTournamentPayments        += $item->tournamentPayments;
            $weekTransactions               = $item->soldTickets + $item->orders + $item->academyPayments + $item->tournamentPayments;
            $totalWeekTransactions          += $weekTransactions;

            $table .= '<tr style="border-bottom: 1px solid grey;">' .
                '<td style="font-weight: bold">' . $item->week . '</td>' .
                '<td>' . $weekTransactions . '</td>' .
                '<td>' . $item->soldTickets . '</td>' .
                '<td>' . $item->orders . '</td>' .
                '<td>' . $item->academyPayments . '</td>' .
                '<td>' . $item->tournamentPayments . '</td>' .
                '<td></td>' .
                '<td>' . $item->newUsers . '</td>' .
                '<td>' . $item->userTicketPurchases . '</td>' .
                '<td>' . $item->userOrders . '</td>' .
                '<td>' . $item->userAcademyPayments . '</td>' .
                '<td>' . $item->userTournamentPayments . '</td>' .
                '</tr>';
        }
        $table .= '<tr>
                        <th>Total</th>
                        <th>' . $totalWeekTransactions . '</th>
                        <th>' . $totalSoldTickets . '</th>
                        <th>' . $totalOrders . '</th>
                        <th>' . $totalAcademyPayments . '</th>
                        <th>' . $totalTournamentPayments . '</th>
                        <th></th>
                        <th>' . $totalNewUsers . '</th>
                        <th>' . $totalUserTicketPurchases . '</th>
                        <th>' . $totalUserOrders . '</th>
                        <th>' . $totalUserAcademyPayment . '</th>
                        <th>' . $totalUserTournamentPayments . '</th>
                    </tr>';
        $table .= '</table>';
        $report .= $table;

        return $report;
    }

    public function privacity()
    {
        $dataPolicyUrl = DataPolicy::where('active', 1)->orderByDesc('id')->value('url');
        return view('publics.privacity')->with('url', $dataPolicyUrl);
    }

    public function faq()
    {
        return view('publics.faq');
    }
}