{% extends 'admin/base_admin.html.twig' %}
{% block content %}
<div class="row mb-4">
<div class="col-12">
<div class="card border-0 shadow-lg">
<div class="card-header bg-white border-bottom-0 py-4">
<div class="row align-items-center">
<div class="col-md-6">
<h4 class="mb-0 text-dark fw-bold">
<i class="fas fa-hospital me-2 text-primary"></i>
{{ modo == 'edit' ? 'Editar Clínica' : 'Nueva Clínica' }}
</h4>
<p class="text-muted mb-0 mt-1">
{{ modo == 'edit' ? 'Actualiza la información de la clínica' : 'Registra una nueva clínica en el sistema' }}
</p>
</div>
<div class="col-md-6 text-md-end">
<a href="{{ path('admin_proveedores') }}" class="btn btn-outline-primary btn-lg px-4">
<i class="fas fa-arrow-left me-2"></i>Volver a Clínicas
</a>
</div>
</div>
</div>
<div class="card-body p-4">
{{ form_start(form, {'attr': {'class': 'row g-4'}, 'render_rest': false}) }}
{{ form_widget(form._token) }}
<!-- MOSTRAR ERRORES GLOBALES DEL FORMULARIO -->
{% if form.vars.errors|length > 0 %}
<div class="col-12">
<div class="alert alert-danger">
<h6 class="alert-heading">
<i class="fas fa-exclamation-triangle me-2"></i>Errores en el formulario
</h6>
<ul class="mb-0">
{% for error in form.vars.errors %}
<li>{{ error.message }}</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
<!-- Información de la Clínica -->
<div class="col-12">
<div class="card border-0 bg-light bg-opacity-10">
<div class="card-header bg-transparent border-bottom-0 py-3">
<h6 class="mb-0 fw-semibold text-dark">
<i class="fas fa-hospital me-2 text-primary"></i>Información de la Clínica
</h6>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-md-12">
{{ form_label(form.name, 'Nombre de la Clínica', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-hospital text-muted"></i>
</span>
{{ form_widget(form.name, {
attr: {
class: 'form-control border-start-0' ~ (form.name.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'Ingrese el nombre de la clínica'
}
}) }}
</div>
{% if form.name.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.name) }}
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<!-- Información de Contacto -->
<div class="col-12">
<div class="card border-0 bg-light bg-opacity-10">
<div class="card-header bg-transparent border-bottom-0 py-3">
<h6 class="mb-0 fw-semibold text-dark">
<i class="fas fa-address-book me-2 text-primary"></i>Información de Contacto
</h6>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-md-6">
{{ form_label(form.email, 'Email', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-envelope text-muted"></i>
</span>
{{ form_widget(form.email, {
attr: {
class: 'form-control border-start-0' ~ (form.email.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'clinica@ejemplo.com'
}
}) }}
</div>
{% if form.email.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.email) }}
</div>
{% endif %}
</div>
<div class="col-md-6">
{{ form_label(form.phone, 'Teléfono', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-phone text-muted"></i>
</span>
{{ form_widget(form.phone, {
attr: {
class: 'form-control border-start-0' ~ (form.phone.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'Teléfono de contacto'
}
}) }}
</div>
{% if form.phone.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.phone) }}
</div>
{% endif %}
</div>
<div class="col-12">
{{ form_label(form.address, 'Dirección', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-map-marker-alt text-muted"></i>
</span>
{{ form_widget(form.address, {
attr: {
class: 'form-control border-start-0' ~ (form.address.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'Dirección completa de la clínica'
}
}) }}
</div>
{% if form.address.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.address) }}
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
<!-- Contraseña (solo para nuevos) -->
{% if form.plainPassword is defined %}
<div class="col-12">
<div class="card border-0 bg-light bg-opacity-10">
<div class="card-header bg-transparent border-bottom-0 py-3">
<h6 class="mb-0 fw-semibold text-dark">
<i class="fas fa-lock me-2 text-primary"></i>Seguridad
</h6>
</div>
<div class="card-body">
<div class="row g-3">
<div class="col-md-6">
{{ form_label(form.plainPassword.first, 'Contraseña', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg position-relative">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-key text-muted"></i>
</span>
{{ form_widget(form.plainPassword.first, {
attr: {
class: 'form-control border-start-0 password-field' ~ (form.plainPassword.first.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'Ingresa la contraseña'
}
}) }}
<button type="button" class="btn btn-outline-secondary border-start-0 password-toggle" onclick="togglePassword(this)">
<i class="fas fa-eye"></i>
</button>
</div>
{% if form.plainPassword.first.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.plainPassword.first) }}
</div>
{% endif %}
</div>
<div class="col-md-6">
{{ form_label(form.plainPassword.second, 'Confirmar Contraseña', {'label_attr': {'class': 'form-label fw-semibold text-dark'}}) }}
<div class="input-group input-group-lg position-relative">
<span class="input-group-text bg-white border-end-0">
<i class="fas fa-key text-muted"></i>
</span>
{{ form_widget(form.plainPassword.second, {
attr: {
class: 'form-control border-start-0 password-field' ~ (form.plainPassword.second.vars.errors|length ? ' is-invalid' : ''),
placeholder: 'Confirma la contraseña'
}
}) }}
<button type="button" class="btn btn-outline-secondary border-start-0 password-toggle" onclick="togglePassword(this)">
<i class="fas fa-eye"></i>
</button>
</div>
{% if form.plainPassword.second.vars.errors|length %}
<div class="invalid-feedback d-block">
{{ form_errors(form.plainPassword.second) }}
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Botones -->
<div class="col-12 mt-4">
<div class="d-flex justify-content-end gap-3">
<a href="{{ path('admin_proveedores') }}" class="btn btn-outline-secondary btn-lg px-4">
<i class="fas fa-times me-2"></i>Cancelar
</a>
<button type="submit" class="btn btn-primary btn-lg px-4">
{% if modo == 'edit' %}
<i class="fas fa-save me-2"></i>Actualizar Clínica
{% else %}
<i class="fas fa-hospital me-2"></i>Registrar Clínica
{% endif %}
</button>
</div>
</div>
{{ form_end(form, {'render_rest': false}) }}
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script>
function togglePassword(button) {
const input = button.closest('.input-group').querySelector('.password-field');
const icon = button.querySelector('i');
if (input.type === 'password') {
input.type = 'text';
icon.classList.remove('fa-eye');
icon.classList.add('fa-eye-slash');
} else {
input.type = 'password';
icon.classList.remove('fa-eye-slash');
icon.classList.add('fa-eye');
}
}
</script>
{% endblock %}