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