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/demo.sports-crowd.com/resources/views/academy/schedules/list.blade.php
@extends('modules.head') @section('contenido')
<style>
    /* Ensure that the demo table scrolls */
    /* th, */
    td {
        white-space: nowrap;
    }

    div.dataTables_wrapper {
        height: fit-content;
        margin: 0px 10px 0px 10px;
    }

    .dataTables_scrollBody {
        max-height: none !important;
    }

    .redBackground {
        background-color: #FB5656 !important;
    }

    .yellowBackground {
        background-color: #fbdd56 !important;
    }
</style>
@php
$page_prefix = 'academy_schedule';
@endphp

<div class="box-header">
    <a class="btn btn-app btnReportProducts" onclick="clickExportAll()">
        <i class="fa fa-file-excel-o"></i> {{ Lang::get('messages.academy_schedules.export') }}
    </a>
</div>

<div class="box-header">
    <a class="auxiliar-black" href="{{ url('/academy_schedules/add') }}">
        <button class="btn btnAdd pull-right">
            <i style="margin-right:5px;" class="fa fa-plus"></i>
            {{ Lang::get('messages.academy_schedules.title_create') }}
        </button></a>
</div>

<!-- List Data -->
<div class="box">
    <div class="box-header">
        <h3 class="box-title"><b>{{ Lang::get('messages.academy_users.filters') }}</b></h3>
        <div class="row">
            <div class="col-4 col-md-4">
                <label for="locations">{{ Lang::get('messages.academy_schedules.tag8') }}</label>
                <select class="form-control select2" multiple="multiple"
                    data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}" name="locations" required>
                </select>
            </div>
            <div class="col-4 col-md-4">
                <label for="categories">{{ Lang::get('messages.screen_banners_tag6') }}</label>
                <select class="form-control select2" multiple="multiple"
                    data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}" name="categories" required>
                </select>
            </div>
            <div class="col-4 col-md-4">
                <label for="coaches">{{ Lang::get('messages.academy_schedules.tag7') }}</label>
                <select class="form-control select2" multiple="multiple"
                    data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}" name="coaches" required>
                </select>
            </div>
        </div>
        <p style="margin-top: 10px; border-bottom: 1px solid #D3D3D3;"></p>
        <h3 class="box-title"><b>{{ Lang::get('messages.academy_schedules.title_list') }}</b></h3>
    </div>
    <!-- /.box-header -->
    <div class="box-body table-responsive ">
        <table id="academy_schedules" class="stripe row-border order-column" style="width:100%" role="grid"
            aria-describedby="academy_schedules_info">
            <thead>
                <tr role="row">
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag1') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag4') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag8') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag2') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag3') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag5') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag9') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Browser: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag0') }}
                    </th>
                    <th class="sorting" tabindex="0" aria-controls="academy_schedules" rowspan="1" colspan="1"
                        aria-label="Engine version: activate to sort column ascending">
                        {{ Lang::get('messages.academy_schedules.tag00') }}
                    </th>
                </tr>
            </thead>
        </table>
    </div>
    <!-- /.box-body -->
</div>

<script src="{{ asset('js/jQuery/jquery-2.2.3.min.js') }}"></script>
<script src="{{ asset('js/crud.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/academy_schedules.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/bootstrap/js/bootstrap.min.js') }}"></script>
<script type="text/javascript">
    const SELECTOR_PREFIX = "{{ $page_prefix }}";

    $(document).ready(function() {
        getAcademyLocations();
        getAcademyCategories();
        getAcademyCoaches();

        validateLocalStoreInformation();
        $('.select2').select2();
        getData();

        $("select[name='categories']").on('change', function() {
            getAcademyCoaches();
            cleanPagination();
            getData();
        });

        $("select[name='locations']").on('change', function() {
            getAcademyCategories();
            getAcademyCoaches();
            cleanPagination();
            getData();
        });

        $("select[name='coaches']").on('change', function() {
            cleanPagination();
            getData();
        });
    });

    let cleanPagination = function() {
        localRemove(`DataTables_${SELECTOR_PREFIX}`);
    }

    function getData() {
        let categories = $("select[name='categories']").val();
        let locations = $("select[name='locations']").val();
        let coaches = $("select[name='coaches']").val();

        localStore(`${SELECTOR_PREFIX}_filterCategories`, categories);
        localStore(`${SELECTOR_PREFIX}_filterLocatios`, locations);
        localStore(`${SELECTOR_PREFIX}_filterCoaches`, coaches);

        let fixedColumns = false;
        let isMobileDevice = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
        if (!isMobileDevice) {
            fixedColumns = {
                left: 1,
                right: 2
            };
        }

        $("#academy_schedules").dataTable().fnDestroy();
        var sort_col = $('#academy_schedules').find("th:contains(" + Lang.get('messages.academy_schedules.tag9') + ")")[0].cellIndex;
        _table = $('#academy_schedules').DataTable({
            stateSave: true,
            stateSaveCallback: function(settings, data) {
                localStorage.setItem('DataTables_' + settings.sInstance, JSON.stringify(data))
            },
            stateLoadCallback: function(settings) {
                return JSON.parse(localStorage.getItem('DataTables_' + settings.sInstance))
            },
            responsive: true,
            processing: true,
            serverSide: true,
            order: [
                [sort_col, 'desc']
            ],
            language: {
                url: window.DATATABLES_LANGUAGE_URL,
            },
            scrollX: true,
            scrollCollapse: true,
            paging: true,
            fixedColumns: fixedColumns,
            ajax: {
                url: "{{ route('academy_schedules.table') }}",
                headers: {
                    "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
                },
                type: "POST",
                data: {
                    categories: categories,
                    locations: locations,
                    coaches: coaches
                }
            },
            columns: [{
                    data: 'name',
                    name: 'name'
                },
                {
                    data: 'academy_categories_schedules',
                    render: function(data, type, row) {
                        let categories = '';
                        if (row.academy_categories_schedules) {
                            let data = row.academy_categories_schedules.map(function(d) {
                                return '<li>' + (d.academy_category?.name || '') +
                                    '</li>';
                            });
                            categories = data.join('');
                        }
                        return categories;
                    },
                    name: 'academy_categories_schedules.academy_category.name'
                },
                {
                    data: 'academy_categories_schedules',
                    render: function(data, type, row) {
                        let response = '';
                        if (row.academy_categories_schedules) {
                            let data = row.academy_categories_schedules.map(function(d) {
                                if (d.academy_category) {
                                    return '<li>' + (d.academy_category?.academy_location?.name || '') +
                                        '</li>';
                                }
                            });
                            response = data.join('');
                        }
                        return response;
                    },
                    name: 'academy_categories_schedules.academy_category.academy_location.name'
                },
                {
                    data: 'total_capacity',
                    name: 'total_capacity'
                },
                {
                    data: 'current_capacity',
                    name: 'current_capacity'
                },
                {
                    data: 'id', // ENTRENADOR(ES)
                    render: function(data, type, row) {
                        let coaches = '';
                        if (row.academy_schedules_coaches) {
                            let academySchedules = row.academy_schedules_coaches.map(function(
                                d) {
                                if (d.user) {
                                    return '<li>' + (d.user?.first_name + ' ' + d.user
                                        ?.last_name) + ' (' + d.user?.email + ')</li>';
                                }
                            });
                            coaches = academySchedules.join('');
                        }
                        return coaches;
                    },
                    name: 'academy_schedules_coaches.user.first_name'
                },
                {
                    data: 'created_at',
                    name: 'created_at'
                },
                {
                    data: 'active',
                    name: 'active'
                },
                {
                    data: 'actions',
                    name: 'actions'
                }
            ],
            "createdRow": function(row, data, dataIndex) {
                if (data['current_capacity'] <= 5) {
                    $(row).addClass('redBackground');
                } else if (data['current_capacity'] <= data['total_capacity'] / 2) {
                    $(row).addClass('yellowBackground');
                }
            }
        });

        var info =
            '<i class="fa  fa-info-circle"  id="btn-info-busqueda"></i><div class="dropdown-menu" id="menuBusqueda" style="left: 50%; padding: 5px; background-color: #f9fb8f;"><p data-toggle="modal">Busqueda por Nombre, Orden y Link</p></div>';
        $('#academy_schedules_filter').append(info);
        $('#btn-info-busqueda').on('click', function() {
            $('#menuBusqueda').toggle();
        });
    }

    function validateLocalStoreInformation() {
        $("select[name='categories']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCategories`));
        $("select[name='locations']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterLocatios`));
        $("select[name='coaches']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCoaches`));
    }
</script>
@endsection