HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
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/informe-admision/resources/views/admin/admissions/admissions_edit.blade.php
@extends('layout.layout_admin')
@section('contenido')
    @php
        $d = $form_data->dataUploadsDetails;
        $family_display = !empty($form_data->family) ? implode(' ', array_map('ucfirst', explode('-', $form_data->family->name))) : '-';
    @endphp
    <div class="page-header d-flex align-items-center justify-content-between border-bottom mb-4">
        <h1 class="page-title">{{ isset($title) ? $title : 'SIN TITULO' }}</h1>
        <div>
            <ol class="breadcrumb">
                <li class="breadcrumb-item">
                    <a href="{{ route('admissions') }}">Postulaciones</a>
                </li>
                <li class="breadcrumb-item active" aria-current="page">{{ isset($title) ? $title : 'SIN TITULO' }}</li>
            </ol>
        </div>
    </div>

    <!-- CONTAINER -->
    <div class="main-container container-fluid">
        {{-- DATOS DE CARGA (READ ONLY - REFERENCIA) --}}
        <div class="card p-2 border-20 mb-3">
            <div class="card-header bg-light py-2">
                <h5 class="text-uppercase fs-13 m-0">
                    <b>Datos de la Carga (Referencia)</b>
                    @if ($form_data->status == 'pending')
                        <span class="badge bg-warning ms-2">Lista de Espera</span>
                    @elseif ($form_data->status == 'approved')
                        <span class="badge bg-success ms-2">Aprobada</span>
                    @elseif ($form_data->status == 'rejected')
                        <span class="badge bg-danger ms-2">Rechazada</span>
                    @endif
                </h5>
            </div>
            <div class="card-body py-2 fs-12">
                <div class="row">
                    <div class="col-md-3">
                        <small class="text-muted">FAMILIA</small>
                        <div><b>{{ $family_display }}</b></div>
                    </div>
                    <div class="col-md-3">
                        <small class="text-muted">AÑO POSTULACIÓN</small>
                        <div><b>{{ !empty($form_data->year) ? $form_data->year : '-' }}</b></div>
                    </div>
                    <div class="col-md-3">
                        <small class="text-muted">NIVEL</small>
                        <div>{{ !empty($form_data->level) ? $form_data->level->level : '-' }}</div>
                    </div>
                    <div class="col-md-3">
                        <small class="text-muted">ESTADO ACTUAL</small>
                        <div>{{ !empty($d) && !empty($d->current_status) ? $d->current_status : '-' }}</div>
                    </div>
                </div>
                <hr class="my-2">
                <div class="row">
                    <div class="col-md-4">
                        <small class="text-muted">POSTULANTE</small>
                        <div>
                            @if (!empty($d))
                                {{ !empty($d->applicant_father_lastname) ? $d->applicant_father_lastname : '' }}
                                {{ !empty($d->applicant_mother_lastname) ? $d->applicant_mother_lastname : '' }},
                                {{ !empty($d->applicant_names) ? $d->applicant_names : '' }}
                            @else
                                -
                            @endif
                        </div>
                    </div>
                    <div class="col-md-2">
                        <small class="text-muted">RUT</small>
                        <div>{{ !empty($d) && !empty($d->applicant_rut) ? $d->applicant_rut : '-' }}</div>
                    </div>
                    <div class="col-md-2">
                        <small class="text-muted">FECHA NAC.</small>
                        <div>{{ !empty($d) && !empty($d->applicant_birth_date) ? $d->applicant_birth_date : '-' }}</div>
                    </div>
                    <div class="col-md-2">
                        <small class="text-muted">EX ALUMNO</small>
                        <div>{{ !empty($d) && !empty($d->ex_student) ? $d->ex_student : '-' }}</div>
                    </div>
                    <div class="col-md-2">
                        <small class="text-muted">FAMILIA ANTIGUA</small>
                        <div>{{ !empty($d) && !empty($d->old_family) ? $d->old_family : '-' }}</div>
                    </div>
                </div>
                <hr class="my-2">
                <div class="row">
                    <div class="col-md-6">
                        <small class="text-muted">APODERADO DE CUENTAS</small>
                        <div>
                            @if (!empty($d))
                                {{ !empty($d->guardian_father_lastname) ? $d->guardian_father_lastname : '' }}
                                {{ !empty($d->guardian_mother_lastname) ? $d->guardian_mother_lastname : '' }},
                                {{ !empty($d->guardian_names) ? $d->guardian_names : '' }}
                                ({{ !empty($d->guardian_rut) ? $d->guardian_rut : '-' }})
                            @else
                                -
                            @endif
                        </div>
                    </div>
                    <div class="col-md-6">
                        <small class="text-muted">CORREOS</small>
                        <div>
                            @if (!empty($d))
                                @if (!empty($d->guardian_email))
                                    <span class="badge bg-light text-dark">Apod: {{ $d->guardian_email }}</span>
                                @endif
                                @if (!empty($d->mother_email))
                                    <span class="badge bg-light text-dark">Madre: {{ $d->mother_email }}</span>
                                @endif
                                @if (!empty($d->father_email))
                                    <span class="badge bg-light text-dark">Padre: {{ $d->father_email }}</span>
                                @endif
                            @else
                                -
                            @endif
                        </div>
                    </div>
                </div>
                @if (!empty($d) && !empty($d->interview_observation))
                    <hr class="my-2">
                    <div class="row">
                        <div class="col-md-12">
                            <small class="text-muted">OBSERVACIÓN ENTREVISTA APODERADO</small>
                            <div>{{ $d->interview_observation }}</div>
                        </div>
                    </div>
                @endif
            </div>
        </div>

        {{-- FORMULARIO EDITABLE --}}
        <div class="card p-3 border-20">
            <div class="card-header bg-light">
                <h5 class="text-uppercase fs-14 m-0">
                    <b>{{ isset($title_form) ? $title_form : '' }}</b>
                </h5>
            </div>
            <div class="card-body">
                @if (session()->has('warning_message') || session()->has('danger_message'))
                    <div class="alert alert-danger py-2 px-3 mb-3 fs-14 text-center">
                        <i class="fa fa-exclamation-circle me-2"></i>
                        {!! session()->get('warning_message') !!}{!! session()->get('danger_message') !!}
                    </div>
                @endif

                <form action="{{ route('admission-update', ['id' => $form_data->id]) }}" method="POST" id="form">
                    {{ csrf_field() }}
                    <input type="hidden" name="action_type" id="action_type" value="save">

                    <div class="row g-3">
                        <div class="col-md-6">
                            <label for="group_name" class="form-label">GRUPO</label>
                            <input type="text" class="form-control" name="group_name" id="group_name"
                                value="{{ old('group_name', $form_data->group_name) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-6">
                            <label for="age" class="form-label">EDAD (AÑOS)</label>
                            <input type="number" min="0" max="99" step="0.1" class="form-control" name="age"
                                id="age" value="{{ old('age', $form_data->age) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                    </div>

                    <hr class="my-3">
                    <h6 class="fs-13 text-uppercase text-muted"><b>Puntajes de Observación</b></h6>

                    <div class="row g-3">
                        <div class="col-md-4">
                            <label for="activity_group_score" class="form-label">
                                ACTIVIDAD GRUPAL <small class="text-muted">(máx 18)</small>
                            </label>
                            <input type="number" min="0" max="18" class="form-control score-input"
                                name="activity_group_score" id="activity_group_score"
                                value="{{ old('activity_group_score', $form_data->activity_group_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-4">
                            <label for="language_score" class="form-label">
                                LENGUAJE <small class="text-muted">(máx 14)</small>
                            </label>
                            <input type="number" min="0" max="14" class="form-control score-input"
                                name="language_score" id="language_score"
                                value="{{ old('language_score', $form_data->language_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-4">
                            <label for="math_concepts_score" class="form-label">
                                CONCEPTOS MATEMÁTICOS <small class="text-muted">(máx 6)</small>
                            </label>
                            <input type="number" min="0" max="6" class="form-control score-input"
                                name="math_concepts_score" id="math_concepts_score"
                                value="{{ old('math_concepts_score', $form_data->math_concepts_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-4">
                            <label for="fine_motor_score" class="form-label">
                                MOTRICIDAD FINA Y FIGURA HUMANA <small class="text-muted">(máx 8)</small>
                            </label>
                            <input type="number" min="0" max="8" class="form-control score-input"
                                name="fine_motor_score" id="fine_motor_score"
                                value="{{ old('fine_motor_score', $form_data->fine_motor_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-4">
                            <label for="attention_autonomy_score" class="form-label">
                                ATENCIÓN Y AUTONOMÍA <small class="text-muted">(máx 18)</small>
                            </label>
                            <input type="number" min="0" max="18" class="form-control score-input"
                                name="attention_autonomy_score" id="attention_autonomy_score"
                                value="{{ old('attention_autonomy_score', $form_data->attention_autonomy_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-4">
                            <label for="general_observations_score" class="form-label">
                                OBSERVACIONES GENERALES <small class="text-muted">(máx 10)</small>
                            </label>
                            <input type="number" min="0" max="10" class="form-control score-input"
                                name="general_observations_score" id="general_observations_score"
                                value="{{ old('general_observations_score', $form_data->general_observations_score) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                    </div>

                    <div class="row g-3 mt-1">
                        <div class="col-md-4">
                            <label for="total_points" class="form-label">
                                PUNTOS OBTENIDOS <small class="text-muted">(máx 74 - cálculo automático)</small>
                            </label>
                            <input type="number" class="form-control" id="total_points"
                                value="{{ !empty($form_data->total_points) ? $form_data->total_points : 0 }}" readonly>
                        </div>
                        <div class="col-md-4">
                            <label for="percentage" class="form-label">
                                PORCENTAJE <small class="text-muted">(cálculo automático)</small>
                            </label>
                            <input type="text" class="form-control" id="percentage"
                                value="{{ !empty($form_data->percentage) ? $form_data->percentage : 0 }}%" readonly>
                        </div>
                        <div class="col-md-4">
                            <label for="grade" class="form-label">
                                NOTA <small class="text-muted">(cálculo automático - escala 1 a 7)</small>
                            </label>
                            <input type="text" class="form-control" id="grade"
                                value="{{ !empty($form_data->grade) ? $form_data->grade : '0.0' }}" readonly>
                        </div>
                    </div>

                    <hr class="my-3">

                    <div class="row g-3">
                        <div class="col-md-3">
                            <label for="evaluator" class="form-label">EVALUADORA</label>
                            <input type="text" class="form-control" name="evaluator" id="evaluator"
                                value="{{ old('evaluator', $form_data->evaluator) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-3">
                            <label for="interviewer" class="form-label">ENTREVISTADOR DE PADRES</label>
                            <input type="text" class="form-control" name="interviewer" id="interviewer"
                                value="{{ old('interviewer', $form_data->interviewer) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-3">
                            <label for="garden" class="form-label">JARDÍN</label>
                            <input type="text" class="form-control" name="garden" id="garden"
                                value="{{ old('garden', $form_data->garden) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-3">
                            <label for="evaluation_date" class="form-label">FECHA EVALUACIÓN</label>
                            <input type="date" class="form-control" name="evaluation_date" id="evaluation_date"
                                value="{{ old('evaluation_date', $form_data->evaluation_date) }}"
                                {{ $readonly ? 'disabled' : '' }}>
                        </div>
                        <div class="col-md-12">
                            <label for="evaluation_comments" class="form-label">
                                COMENTARIO EVALUACIÓN DE PADRES
                                @if (!empty($d) && !empty($d->interviewee_comment))
                                    <small class="text-muted">(precargado desde el Excel)</small>
                                @endif
                            </label>
                            @if (!empty($d) && !empty($d->interviewee_comment))
                                <textarea class="form-control" name="evaluation_comments" id="evaluation_comments" rows="3"
                                    style="max-height: 150px; overflow-y: auto;"
                                    readonly>{{ old('evaluation_comments', $form_data->evaluation_comments) }}</textarea>
                            @else
                                <textarea class="form-control" name="evaluation_comments" id="evaluation_comments" rows="3"
                                    style="max-height: 150px; overflow-y: auto;"
                                    {{ $readonly ? 'disabled' : '' }}>{{ old('evaluation_comments', $form_data->evaluation_comments) }}</textarea>
                            @endif
                        </div>
                        <div class="col-md-12">
                            <label for="comments" class="form-label">COMENTARIOS DE EVALUACIÓN</label>
                            <textarea class="form-control" name="comments" id="comments" rows="3"
                                style="max-height: 150px; overflow-y: auto;"
                                {{ $readonly ? 'disabled' : '' }}>{{ old('comments', $form_data->comments) }}</textarea>
                        </div>
                    </div>

                    <div class="row mt-4">
                        <div class="col-12 d-flex justify-content-center border-top pt-3">
                            <div class="btn-box">
                                <a href="{{ route('admissions') }}" class="btn btn-md btn-secondary">
                                    <i class="fa fa-reply"></i> Volver
                                </a>
                                @if (!$readonly)
                                    <button class="btn btn-info btn_save" type="button">
                                        <i class="fa fa-save"></i> Guardar
                                    </button>
                                    @if (isSuperUser() || auth()->user()->hasPermission('APPROVE_ADMISSIONS'))
                                        <button class="btn btn-success btn_approve" type="button">
                                            <i class="fa fa-check-circle"></i> Aprobar
                                        </button>
                                    @endif
                                    @if (isSuperUser() || auth()->user()->hasPermission('REJECT_ADMISSIONS'))
                                        <button class="btn btn-danger btn_reject" type="button">
                                            <i class="fa fa-times-circle"></i> Rechazar
                                        </button>
                                    @endif
                                @endif
                            </div>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
@endsection

@section('js_content')
    <script nonce="{{ app('csp_nonce') }}">
        const MAX_TOTAL = 74;

        function recalcTotal() {
            let total = 0;
            $('.score-input').each(function() {
                let v = parseInt($(this).val());
                if (!isNaN(v) && v > 0) {
                    total += v;
                }
            });
            if (total > MAX_TOTAL) {
                total = MAX_TOTAL;
            }
            let percentage = (total / MAX_TOTAL * 100).toFixed(2);
            let grade = (percentage / 100 * 7).toFixed(1);
            $('#total_points').val(total);
            $('#percentage').val(percentage + '%');
            $('#grade').val(grade);
        }

        $('.score-input').on('keyup change', function() {
            let max = parseInt($(this).attr('max'));
            let v = parseInt($(this).val());
            if (!isNaN(v) && v > max) {
                $(this).val(max);
                toastr["warning"](`El valor máximo para este campo es ${max}`, "VALIDACIÓN");
            }
            if (!isNaN(v) && v < 0) {
                $(this).val(0);
            }
            recalcTotal();
        });

        //RECALCULAR AL CARGAR
        recalcTotal();

        $(".btn_save").click(function() {
            $("#action_type").val('save');
            submitForm('Guardando...');
        });

        $(".btn_approve").click(function() {
            Swal.fire({
                title: '¿Aprobar postulación?',
                text: "Esta acción no se puede deshacer. El formulario quedará en solo lectura.",
                icon: 'question',
                showCancelButton: true,
                confirmButtonColor: '#198754',
                cancelButtonColor: '#6c757d',
                confirmButtonText: 'Sí, aprobar',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.isConfirmed) {
                    $("#action_type").val('approve');
                    submitForm('Aprobando...');
                }
            });
        });

        $(".btn_reject").click(function() {
            Swal.fire({
                title: '¿Rechazar postulación?',
                text: "Esta acción no se puede deshacer. El formulario quedará en solo lectura.",
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#dc3545',
                cancelButtonColor: '#6c757d',
                confirmButtonText: 'Sí, rechazar',
                cancelButtonText: 'Cancelar'
            }).then((result) => {
                if (result.isConfirmed) {
                    $("#action_type").val('reject');
                    submitForm('Rechazando...');
                }
            });
        });

        function submitForm(msg) {
            cargando(msg);
            setTimeout(function() {
                document.getElementById("form").submit();
            }, 300);
        }
    </script>
@endsection