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/teamdemo.sports-crowd.com/resources/views/academy/academy_users.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;
    }

    .canvas-container {
        display: flex;
        align-items: center;
        justify-content: center;
    }

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


    /* toasts */
    * {
        box-sizing: border-box;
    }

    .btn:active {
        transform: scale(0.98);
    }

    #toasts {
        position: fixed;
        bottom: 100px;
        right: 10px;
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        z-index: 1051;
    }

    .toast {
        width: 300px;
        height: 70px;
        border-radius: 5px;
        margin: 0.5rem;
        color: #ffffff;
        font-weight: 900;
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: row-reverse;
    }

    .success {
        background-color: #4caf50;
    }

    .hidden {
        display: none;
    }
</style>
@php
$page_prefix = "academy_user_" . $type_academy;
@endphp

<div class="box-header">
    <a class="btn btn-app btnReportProducts" onclick="clickExportAll('{{ $type_academy }}')">
        <i class="fa fa-file-excel-o"></i> {{ Lang::get('messages.academy_users.title_export_all') }}
    </a>
    <a class="btn btn-app btnReportProducts" data-toggle="modal" data-target="#modal_import_reports_academy">
        <i class="fa fa-file-pdf-o"></i> {{ Lang::get('messages.academy_users.tag74') }}
    </a>
    @if (!in_array(Auth::user()->rol->id, [14]))
    <a class="btn btn-app btnReportProducts" data-toggle="modal" data-target="#modal_import_students">
        <i class="fa fa-cloud-upload"></i> {{ Lang::get('messages.academy_users.title_import_all') }}
    </a>
    <a class="btn btn-app btnReportProducts" data-toggle="modal" data-target="#modal_schedule_payments">
        <i class="fa fa-cloud-upload"></i> {{ Lang::get('messages.academy_users.title_schedule_payments') }}
    </a>
    <a class="auxiliar-black" href="{{ url('/academy/add_academy_users') }}{{ '/' . $type_academy }}">
        <button class="btn btnAdd pull-right">
            <i style="margin-right:5px;" class="fa fa-plus"></i>{{ Lang::get('messages.academy_users.titleAdd') }}
        </button>
    </a>
    <a class="btn btn-app btnReportProducts" data-toggle="modal" data-target="#modal_import_schedules">
        <i class="fa fa-cloud-upload"></i> {{ Lang::get('messages.academy_users.import_all_schedules') }}
    </a>
    <a class="btn btn-app btnReportProducts" data-toggle="modal" data-target="#modal_import_tags">
        <i class="fa fa-cloud-upload"></i> {{ Lang::get('messages.academy_users.import_all_tags') }}
    </a>
    @endif
</div>

<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-3 col-md-3">
                <label for="states">{{ Lang::get('messages.academy_users.tag43') }}</label>
                <select class="form-control select2" multiple="multiple" data-placeholder="{{ Lang::get('messages.academy_users.placeholder_select') }}" name="states" value="" required>
                    @foreach ($states as $state)
                    <option value="{{ $state->id }}">{{ $state->name }}</option>
                    @endforeach
                </select>
            </div>
            <div class="col-3 col-md-3">
                <label for="status">{{ Lang::get('messages.academy_users.tag27-1') }}</label>
                <select class="form-control select2" multiple="multiple" data-placeholder="{{ Lang::get('messages.academy_users.placeholder_select') }}" name="status" value="" required>
                    @foreach ($status as $statu)
                    <option value="{{ $statu }}">{{ $statu }}</option>
                    @endforeach
                </select>
            </div>
            <div class="col-3 col-md-3">
                <label for="from_date">{{ Lang::get('messages.academy_users.tag8-1') }}</label>
                <div class="input-group date">
                    <div class="input-group-addon">
                        <i class="fa fa-calendar"></i>
                    </div>
                    <input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_users.placeholder_date') }}" name="from_date" value="" autocomplete="off">
                </div>
            </div>
            <div class="col-3 col-md-3">
                <label for="to_date">{{ Lang::get('messages.academy_users.tag8-2') }}</label>
                <div class="input-group date">
                    <div class="input-group-addon">
                        <i class="fa fa-calendar"></i>
                    </div>
                    <input type="text" class="form-control pull-right" placeholder="{{ Lang::get('messages.academy_users.placeholder_date') }}" name="to_date" value="" autocomplete="off">
                </div>
            </div>
        </div>
        {{-- new filters --}}
        <div class="row">
            <div class="col-3 col-md-3">
                <label for="locations">{{ config('app.location') . Lang::get('messages.academy_users.tag2') }}</label>
                <select class="form-control select2" multiple="multiple"
                    data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
                    name="locations" id="locations" required>
                </select>
            </div>
            <div class="col-3 col-md-3">
                <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" id ="categories" required>
                </select>
            </div>
            <div class="col-3 col-md-3">
                <label for="schedules">Horarios</label>
                <select class="form-control select2" multiple="multiple"
                    data-placeholder="{{ Lang::get('messages.academy_schedules.select') }}"
                    name="schedules" id="schedules" required>
                </select>
            </div>
            <div class="col-3 col-md-3">
                <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" id="coaches" required>
                </select>
            </div>
        </div>
        {{-- end new filters --}}

        <p style="margin-top: 10px; border-bottom: 1px solid #D3D3D3;"></p>
        <h3 class="box-title"><b>{{ Lang::get('messages.academy_users.title') }}</b></h3>
    </div>

    <!-- /.box-header -->
    <table id="{{$page_prefix}}" class="stripe row-border order-column" style="width:100%" role="grid" aria-describedby="academy_user_info">
        <thead>
            <tr role="row">
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag43') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-12') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-3') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-4') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    Código estudiante
                </th>
                @if ($type_academy == 'children')
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-5') }}
                </th>
                @endif
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-6') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-7') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-8') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-9') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag2-10') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.student_address') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag1-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag1-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag1-3') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag1-4') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag1-5') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-3') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-4') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-5') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag15-6') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.observations') }}
                </th>

                {{--Campos persona jurídica --}}
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.type_person') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_nit') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_business_name') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_property_name') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_isic_code') }}
                </th>
                {{-- <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1"
                aria-label="Browser: activate to sort column ascending">
                {{ Lang::get('messages.academy_users.advisor_name_of_contact_person_nit') }}</th> --}}

                {{-- <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1"
                aria-label="Browser: activate to sort column ascending">
                {{ Lang::get('messages.academy_users.advisor_city') }}</th> --}}

                {{-- <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1"
                aria-label="Browser: activate to sort column ascending">
                {{ Lang::get('messages.academy_users.advisor_address') }}</th> --}}
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_phone') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_cell_phone') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.address_advisor') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.advisor_mail') }}
                </th>
                {{--END Campos persona jurica --}}

                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag37') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag38') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ config('app.location') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag58') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag64-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag64-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag3-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag3-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag31-1')}}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag31-2')}}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag59') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag60') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag8') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag45') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag27-1') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag27-2') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.last_status_date') }}
                </th>
                {{-- Terms and conditions --}}
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ $textTermsColumn ?? 'Términos y Condiciones'}}
                </th>
                {{-- --}}
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_document.app_certificate') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.reports') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Browser: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag42') }}
                </th>
                <th class="sorting" tabindex="0" aria-controls="{{$page_prefix}}" rowspan="1" colspan="1" aria-label="Engine version: activate to sort column ascending">
                    {{ Lang::get('messages.academy_users.tag41') }}
                </th>
            </tr>
        </thead>
    </table>
    <!-- /.box-body -->
</div>

@include('academy.users.modal.schedule_payments')
@include('academy.users.modal.carnet')
@include('academy.users.modal.import_reports_academy')
@include('academy.users.modal.import_students')
@include('academy.users.modal.import_schedules')
@include('academy.users.modal.import_tags')
@include('academy.users.modal.logs')

<!-- alert toast -->
<div id="toasts"></div>
<button class="btn" id="button" onclick="clickEvent()"></button>

<script src="{{ asset('js/jQuery/jquery-2.2.3.min.js') }}"></script>
<script src="{{ asset('js/bootstrap/js/bootstrap.min.js') }}"></script>
<script src="{{ asset('js/util.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/academy.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/academy_reports.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/dropzone/dropzone.js') . '?v=' . time() }}"></script>
<script src="{{ asset('js/filter.js') . '?v=' . time() }}"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>
<script type="text/javascript">
    let typeAcademy = <?php echo json_encode($type_academy); ?>;
    const SELECTOR_PREFIX = "{{$page_prefix}}";

    $(document).ready(function() {
        const existingLocationId = localRetrieve(`${SELECTOR_PREFIX}_filterLocations`);
        const existingCategoryId = localRetrieve(`${SELECTOR_PREFIX}_filterCategories`);
        const existingScheduleId = localRetrieve(`${SELECTOR_PREFIX}_filterSchedules`);
        const existingCoachId = localRetrieve(`${SELECTOR_PREFIX}_filterCoaches`);
        const existingFilteredStates = localRetrieve(`${SELECTOR_PREFIX}_filterStatesAux`);
        
        const locationRequest = getAcademyLocations(existingLocationId);
        const categoryRequest = getAcademyCategories(existingCategoryId);
        const scheduleRequest = getAcademySchedules(existingScheduleId);
        const coachRequest = getAcademyCoaches(existingCoachId);
        
        validateLocalStoreInformation();
        $('.select2').select2();

        $.when(locationRequest, categoryRequest, scheduleRequest, coachRequest).done(function() {
           
            if (existingLocationId || existingCategoryId || existingScheduleId || existingCoachId) {
                restoreFilteredStates(existingFilteredStates, existingLocationId, existingCategoryId, existingScheduleId, existingCoachId);
                cleanPagination();
                getData();
            }else{
                getData();
            }
        }).fail(function() {
            console.error('Alguna de las peticiones falló');
        });

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

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

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

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


        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 Código, Nombre y Teléfono</p></div>';

        $(`#${SELECTOR_PREFIX}_filter`).append(info);
        $('#btn-info-busqueda').on('click', function() {
            $('#menuBusqueda').toggle();
        });

        $('.select2').select2();

        $.fn.datepicker.dates['en'] = {
            days: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
            daysShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Juv', 'Vie', 'Sáb'],
            daysMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],
            months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre',
                'Octubre', 'Noviembre', 'Diciembre'
            ],
            monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov',
                'Dic'
            ],
            today: "Hoy",
            clear: "Clear",
            format: "yyyy-mm-dd",
            titleFormat: "MM yyyy",
            weekStart: 0
        };

        $("input[name='from_date']").datepicker({
            dateFormat: 'yyyy-mm-dd'
        });
        $("input[name='to_date']").datepicker({
            dateFormat: 'yyyy-mm-dd'
        });

        $("select[name='states']").on('change', function() {
            cleanPagination();
            getData();
        });
        $("select[name='status']").on('change', function() {
            cleanPagination();
            getData();
        });
        let from_date;
        $("input[name='from_date']").on('change', function(event) {
            if ((this.value && from_date != this.value) || (!this.value && from_date)) {
                from_date = this.value;
                cleanPagination();
                getData();
            } else {
                localStore(`${SELECTOR_PREFIX}_filterFromDate`, this.value);
            }
        });
        let to_date;
        $("input[name='to_date']").on('change', function() {
            if ((this.value && to_date != this.value) || (!this.value && to_date)) {
                to_date = this.value;
                cleanPagination();
                getData();
            } else {
                localStore(`${SELECTOR_PREFIX}_filterToDate`, this.value);
            }
        });
    });

    function getData() {
        let states = $("select[name='states']").val();
        let status = $("select[name='status']").val();
        let from_date = $("input[name='from_date']").val();
        let to_date = $("input[name='to_date']").val();

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

        localStore(`${SELECTOR_PREFIX}_filterStates`, states);
        localStore(`${SELECTOR_PREFIX}_filterStatus`, status);
        localStore(`${SELECTOR_PREFIX}_filterFromDate`, from_date);
        localStore(`${SELECTOR_PREFIX}_filterToDate`, to_date);

        localStore(`${SELECTOR_PREFIX}_filterLocations`, locations);
        localStore(`${SELECTOR_PREFIX}_filterCategories`, categories);
        localStore(`${SELECTOR_PREFIX}_filterSchedules`, schedules);
        localStore(`${SELECTOR_PREFIX}_filterCoaches`, coaches);


        var sort_col = $(`#${SELECTOR_PREFIX}`).find("th:contains("+ Lang.get('messages.academy_users.tag8')+")")[0].cellIndex;
        var tableData = [
            {
                data: 'student_name',
                name: 'student_name'
            },
            {
                data: 'student_last_name',
                name: 'student_last_name'
            },
            {
                data: 'academy_state.name',
                render: function(data, type, row, column) {
                    return row.academy_state ? '<div style="background-color: ' + row.academy_state.color +
                        '; color: white; padding: 5px; font-weight: bold; border-radius: 10px; text-align: center;">' +
                        row.academy_state.name + '</div>' : '';
                },
                name: 'academy_state.name'
            },
            {
                data: 'photo',
                name: 'photo'
            },
            {
                data: 'studentDocumentType',
                name: 'document_types.name'
            },
            {
                data: 'identification',
                name: 'identification'
            },
            {
                data: 'student_academy_code',
                name: 'student_academy_code'
            },
            {
                data: 'school_name',
                name: 'school_name'
            },
            {
                data: 'school_grade',
                name: 'school_grade'
            },
            {
                data: 'birthdate',
                name: 'birthdate'
            },
            {
                data: 'age',
                name: 'age'
            },
            {
                data: 'mail',
                name: 'mail'
            },
            {
                data: 'phone',
                name: 'phone'
            },
            {
                data: 'direction_student',
                name: 'addresses_student.direction'
            },
            {
                data: 'academy_user_id',
                render: function(data, type, row, column) {
                    if (row.user_deleted_at !== null) {
                        return row.academy_users && row.academy_users.user 
                            ? `<div style="color:red;">Eliminado: ${row.academy_users.user.first_name}</div>` 
                            : '<div style="color:red;">Eliminado: Sin nombre</div>';
                    }
                    return row.academy_users && row.academy_users.user ? row.academy_users.user.first_name : '';
                },
                name: 'appUser.first_name'
            },
            {
                data: 'academy_user_id',
                render: function(data, type, row, column) {
                    if (row.user_deleted_at !== null) {
                        return row.academy_users && row.academy_users.user 
                            ? `<div style="color:red;">Eliminado: ${row.academy_users.user.last_name}</div>` 
                            : '<div style="color:red;">Eliminado: Sin apellido</div>';
                    }
                    return row.academy_users && row.academy_users.user ? row.academy_users.user.last_name : '';
                },
                name: 'appUser.last_name'
            },
            {
                data: 'academy_user_id',
                render: function(data, type, row) {
                    if (row.user_deleted_at !== null) {
                        return row.academy_users && row.academy_users.user 
                            ? `<div style="color:red;">Eliminado: ${row.academy_users.user.email}</div>` 
                            : '<div style="color:red;">Eliminado: Asignar usuario app</div>';
                    }
                    return row.academy_users && row.academy_users.user ? row.academy_users.user.email : 
                        '<div style="color:red;">Asignar usuario app</div>';
                },
                name: 'appUser.email'
            },
            {
                data: 'contactDocumentType',
                name: 'document_types_contact.name'
            },
            {
                data: 'academy_user_id',
                render: function(data, type, row, column) {
                    if (row.user_deleted_at !== null) {
                        return row.academy_users && row.academy_users.user && row.academy_users.user.document 
                            ? `<div style="color:red;">Eliminado: ${row.academy_users.user.document}</div>` 
                            : '<div style="color:red;">Eliminado: Sin documento</div>';
                    }
                    return row.academy_users && row.academy_users.user && row.academy_users.user.document 
                        ? row.academy_users.user.document : '';
                },
                name: 'appUser.document'
            },
            {
                data: 'advisor_name',
                name: 'advisor_name'
            },
            {
                data: 'advisor_last_name',
                name: 'advisor_last_name'
            },
            {
                data: 'advisorDocumentType',
                name: 'document_types_advisor.name'
            },
            {
                data: 'advisor_identification',
                name: 'advisor_identification'
            },
            {
                data: 'advisor_relation',
                name: 'advisor_relation'
            },
            {
                data: 'advisor_ocupation',
                name: 'advisor_ocupation'
            },
            {
                data: 'observations',
                name: 'observations'
            },
            {
                data: 'type_person',
                render: function(data, type, row, column) {
                    response = row.type_person;
                    switch (row.type_person) {
                        case 'ALL':
                            response = "{{ Lang::get('messages.academy_document.all') }}";
                            break;
                        case 'JURIDIC_PERSON':
                            response = "{{ Lang::get('messages.academy_document.juridic_person') }}";
                            break;
                        case 'NATURAL_PERSON':
                            response = "{{ Lang::get('messages.academy_document.natural_person') }}";
                            break;
                    }
                    return response;
                },
                name: 'type_person'
            },
            {
                data: 'advisor_nit',
                name: 'advisor_nit'
            },
            {
                data: 'advisor_business_name',
                name: 'advisor_business_name'
            },
            {
                data: 'advisor_property_name',
                name: 'advisor_property_name'
            },
            {
                data: 'advisor_isic_code',
                name: 'advisor_isic_code'
            },
            {
                data: 'advisor_phone',
                name: 'advisor_phone'
            },
            {
                data: 'advisor_cell_phone',
                name: 'advisor_cell_phone'
            },
            {
                data: 'direction_advisor',
                name: 'addresses_advisor.direction'
            },
            {
                data: 'advisor_mail',
                name: 'advisor_mail'
            },
            {
                data: 'blood_type',
                name: 'blood_type'
            },
            {
                data: 'eps',
                name: 'eps'
            },
            {
                data: 'locationName',
                render: function(data, type, row) {
                    return row.locationName ?? row.academy_place;
                },
                name: 'academy_locations.name' || 'academy_place'
            },
            {
                data: 'categoryName',
                name: 'academy_categories.name'
            },
            {
                data: 'scheduleName',
                name: 'academy_schedules.name'
            },
            {
                data: 'coaches',
                name: 'coaches',
                render: function(data, type, row, meta) {
                    let coaches = '';
                    if (row.coaches) {
                        let coachesData = row.coaches.split(',');
                        let coachesList = coachesData.map(function(data, index) {
                            return '<li>' + data + '</li>';
                        });
                        coaches = coachesList.join('');
                    }
                    return coaches;
                }
            },
            {
                data: 'last_inscription_year',
                name: 'last_inscription_year'
            },
            {
                data: 'discounts',
                render: function(data, type, row, column) {
                    let discounts = '';
                    if (row.discounts) {
                        let discountsRow = row.discounts.split(',');
                        let discountsItems = [];
                        discountsRow.forEach(function(item, index) {
                            discountsItems.push('<li>' + item + '</li>');
                        });
                        discounts = discountsItems.join('');
                    }
                    return discounts;
                },
                name: 'academy_discounts.name'
            },
            {
                data: 'tshirt_size',
                name: 'tshirt_size'
            },
            {
                data: 'uniform_type',
                name: 'uniform_type'
            },
            {
                data: 'periodName',
                render: function(data, type, row, column) {
                    if (row.periodActive === 0) {
                        return `<div style="color:red;" title="Este período está inactivo">🛑 Inactivo: ${data}</div>`;
                    }
                    return data || '';
                },
                name: 'academy_periods.name'
            },
            {
                data: 'segmentation',
                render: function(data, type, row) {
                    let tags = '';
                    if (row.segmentation) {
                        let list = row.segmentation.split(',');
                        let data = list.map(function(d) {
                            return '<li>' + d + '</li>';
                        });
                        tags = data.join('');
                    }
                    return tags;
                },
                name: 'tags.name'
            },
            {
                data: 'created_at',
                name: 'created_at'
            },
            {
                data: 'review_state',
                name: 'review_state'
            },
            {
                data: 'payment_status',
                name: 'payment_status'
            },
            {
                data: 'last_payment_date',
                name: 'last_payment_date'
            },
            {
                data: 'last_status_date',
                name: 'last_status_date'
            },
            {
                data: 'terms_conditions',
                render: function(data, type, row, column) {
                    if (!row.terms_conditions) {
                        return "No";
                    } else {
                        return "Sí";
                    }
                },
                name: 'terms_conditions'
            },
            {
                data: 'academy_documents1',
                render: function(data, type, row, meta) {
                    var name = row.academy_documents1 ? row.academy_documents1 : '';
                    var response = name.includes("Certificado de salud APP") ? "Sí" : "No";
                    return response;
                },
                name: 'academy_documents1'
            },
            {
                data: 'academy_reports',
                name: 'academy_reports'
            },
            {
                data: 'active',
                name: 'active'
            },
            {
                data: 'actions',
                name: 'actions'
            },
        ];

        if (typeAcademy != 'children') {
            tableData = tableData.filter(function(obj) {
                return obj.data !== 'school_name';
            });
        }

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

        $(`#${SELECTOR_PREFIX}`).dataTable().fnDestroy();
        _table = $(`#${SELECTOR_PREFIX}`).DataTable({
            stateSave: true,
            stateSaveCallback: function(settings, data) {
                localStore(`DataTables_${SELECTOR_PREFIX}`, data)
            },
            stateLoadCallback: function(settings) {
                return localRetrieve(`DataTables_${SELECTOR_PREFIX}`)
            },
            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: '/academy_user/list',
                headers: {
                    "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
                },
                type: "POST",
                data: {
                    states: states,
                    status: status,
                    from_date: from_date,
                    to_date: to_date,
                    type_academy: typeAcademy,
                    locations: locations,
                    categories: categories,
                    schedules: schedules,
                    coaches: coaches
                }
            },
            columns: tableData,
            "createdRow": function(row, data, dataIndex) {
                if (data['payment_status'] && data['payment_status'] == 'EN MORA') {
                    $(row).addClass('pendingPayment');
                }
            }
        });

        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>';
        $(`#${SELECTOR_PREFIX}_filter`).append(info);
        $('#btn-info-busqueda').on('click', function() {
            $('#menuBusqueda').toggle();
        });
    }

    function clickExportAll(typeAcademy) {
        $('#loading').show();
        _table = $(`#${SELECTOR_PREFIX}`).DataTable();
        let query = _table.ajax.json().queries[_table.ajax.json().queries.length - 1].query;
        let bindings = _table.ajax.json().queries[_table.ajax.json().queries.length - 1].bindings;
        query = query.split(' limit ')[0];

        var validateDownloadUrl = document.location.origin + "/academy_user/validateExport";
        var downloadUrl = document.location.origin + "/academy_user/export/";

        var formData = new FormData();
        formData.append("query", query);
        formData.append("bindings", bindings);
        formData.append("type_academy", typeAcademy);

        $.ajax({
            type: "POST",
            dataType: "json",
            processData: false,
            contentType: false,
            headers: {
                "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content"),
            },
            data: formData,
            url: validateDownloadUrl,
            success: function(response) {
                $('#loading').hide();
                if (response.success) {
                    window.location.assign(downloadUrl + response.data);
                } else {
                    swal("Error", response.message, "error");
                }
            },
            error: function(response) {
                $('#loading').hide();
                swal("Error", response.responseJSON ? response.responseJSON.message :
                    'Hubo un error en el servidor, espere unos segundos e intente de nuevo', "error");
            }
        });
    }

    function validateLocalStoreInformation() {
        $("select[name='states']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterStates`));
        $("select[name='status']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterStatus`));
        $("input[name='from_date']").val(localRetrieve(`${SELECTOR_PREFIX}_filterFromDate`));
        $("input[name='to_date']").val(localRetrieve(`${SELECTOR_PREFIX}_filterToDate`));

        $("select[name='locations']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterLocations`));
        $("select[name='categories']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCategories`));
        $("select[name='schedules']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterSchedules`));
        $("select[name='coaches']").select2().val(localRetrieve(`${SELECTOR_PREFIX}_filterCoaches`));
    }

    let cleanPagination = function() {
        localRemove(`DataTables_${SELECTOR_PREFIX}`);
    }
</script>
@endsection