{% extends "base.html.twig" %}
{% block stylesheets %}
<style>
body {
background-color: #272727;
}
.headerImg {
background-image: url("{{ asset('assets/img/Catalog/HeaderImg.jpeg')}}");
background-size: cover;
background-position: center;
height: 500px;
position: relative;
}
.top-25 {
top: 250px;
}
.btn-send-message {
background-color: #ffffff;
border: 1px solid rgb(255, 255, 255, 0.3);
color: rgb(0, 0, 0, 0.7);
padding: 0.5rem 2rem;
text-decoration: none;
}
.form-control {
background-color: transparent;
border: 1px solid rgb(255, 255, 255, 0.3);
color: rgb(255, 255, 255, 0.7);
border-radius: 0;
}
.form-control:focus {
background-color: transparent;
border: 1px solid rgb(255, 255, 255, 0.7);
color: rgb(255, 255, 255, 0.7);
box-shadow: none;
}
.form-select {
background-color: transparent;
border: 1px solid rgb(255, 255, 255, 0.3);
color: rgb(255, 255, 255, 0.7);
border-radius: 0;
}
.form-select:focus {
background-color: transparent;
border: 1px solid rgb(255, 255, 255, 0.7);
color: rgb(255, 255, 255, 0.7);
box-shadow: none;
}
option {
background-color: #040404;
color: rgb(255, 255, 255, 0.7);
}
.title-header {
font-weight: bold;
text-transform: uppercase;
font-size: 50px;
}
.subtitle-header {
font-weight: 200;
font-size: 25px;
line-height: 25px;
display: block;
margin: 0 auto;
max-width: 500px;
}
</style>
{% endblock %}
{% block body %}
<div id="contact_us_form_vue">
{# ------------------------------------------ Header ------------------------------------------ #}
<section class="headerImg">
<div class="position-absolute top-25 start-50 translate-middle text-center">
<h1 class="text-white title-header">Contacto</h1>
<h3 class="text-white subtitle-header">¿Listo para cambiar tu vida? Llena el siguiente formulario y uno de nuestros colaboradores se pondrá en contacto contigo.</h3>
</div>
</section>
{# ------------------------------------------ Header ------------------------------------------ #}
{# ------------------------------------------ Form ------------------------------------------ #}
<section class="container my-5">
<div class="row">
<div class="col-md-12">
{# <form> #}
<div class="row justify-content-center align-items-center g-2">
<div class="col-md-3 mb-3">
<label for="name" class="form-label text-white">Nombre *</label>
<input placeholder="Nombre" v-model="emailData.name" type="text" class="form-control" id="name" aria-describedby="nameHelp">
<span v-if="emailErrors.nameError" class="text-danger">${ emailErrors.nameErrorMessage }</span>
</div>
<div class="col-md-3 mb-3">
<label for="email" class="form-label text-white">Correo electrónico *</label>
<input placeholder="Correo electrónico" v-model="emailData.email" type="email" class="form-control" id="email" aria-describedby="emailHelp">
<span v-if="emailErrors.emailError" class="text-danger">${ emailErrors.emailErrorMessage }</span>
</div>
</div>
<div class="row justify-content-center align-items-center g-2">
<div class="col-md-3 mb-3">
<label for="motive" class="form-label text-white">Motivo *</label>
<select id="reason-select" class="form-select" aria-label="Selecciona el motivo">
<option selected disabled hidden>Selecciona el motivo</option>
<option value="DOUBTS">Dudas generales</option>
<option value="CONSULT_PRODUCT">Consultar producto</option>
<option value="OTHERS">Otros</option>
</select>
<span v-if="emailErrors.reasonError" class="text-danger">${ emailErrors.reasonErrorMessage }</span>
</div>
<div class="col-md-3 mb-3">
<label for="email" class="form-label text-white">Estado *</label>
<select id="state-select" class="form-select" aria-label="Default select example">
<option selected disabled hidden>Selecciona tu estado</option>
<option value="AGUASCALIENTES">Aguascalientes</option>
<option value="CHIPAS">Chiapas</option>
<option value="CIUDAD DE MEXICO">Ciudad de México</option>
<option value="GUANAJUATO">Guanajuato</option>
<option value="HIDALGO">Hidalgo</option>
<option value="JALISCO">Jalisco</option>
<option value="MEXICO">México</option>
<option value="MORELOS">Morelos</option>
<option value="NUEVO LEON">Nuevo León</option>
<option value="OAXACA">Oaxaca</option>
<option value="PUEBLA">Puebla</option>
<option value="QUERETARO">Querétaro</option>
<option value="TLAXCALA">Tlaxcala</option>
</select>
<span v-if="emailErrors.stateError" class="text-danger">${ emailErrors.stateErrorMessage }</span>
</div>
</div>
<div class="row justify-content-center align-items-center g-2">
<div class="col-md-6 mb-3">
<label for="message" class="form-label text-white">Mensaje *</label>
<textarea v-model="emailData.message" class="form-control" id="message" rows="3"></textarea>
<span v-if="emailErrors.messageError" class="text-danger">${ emailErrors.messageErrorMessage }</span>
</div>
</div>
<div class="row justify-content-center align-items-center g-2">
<div class="col-md-3 mb-3 text-center">
<button @click="sendEmailContact" id="btn-send-message" class="btn-send-message fw-bolder"
:disabled="sendingMail">${ sendingMail ? 'Enviando' : 'Enviar' } <i v-if="sendingMail" class="fa-solid fa-spinner fa-spin-pulse"></i></i></button>
</div>
</div>
{# </form> #}
</div>
</div>
</section>
</div>
{# ------------------------------------------ Form ------------------------------------------ #}
{% endblock %}
{% block javascripts %}
{% if app.environment == 'dev' %}
<script src="{{ asset('assets/vue/vue.js') }}"></script>
{% else %}
<script src="{{ asset('assets/vue/vue.min.js') }}"></script>
{% endif %}
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
let contactUsFormVue = new Vue({
el: '#contact_us_form_vue',
delimiters: ['${', '}'],
data: {
emailData: {
name: '',
email: '',
messsage: '',
reason: '',
state: ''
},
emailErrors: {
nameError: false,
nameErrorMessage: '',
emailError: false,
emailErrorMessage: '',
messageError: false,
messageErrorMessage: '',
reasonError: false,
reasonErrorMessage: '',
stateError: false,
stateErrorMessage: ''
},
sendingMail: false
},
methods: {
sendEmailContact() {
let $this = this;
if ($this.validateEmailData()) {
$this.sendingMail = true;
$.ajax({
url: "{{ path('sendContactUsEmail') }}",
data: {
name: $this.emailData.name,
email: $this.emailData.email,
message: $this.emailData.message,
reason: $('#reason-select').val(),
state: $('#state-select').val()
},
success(response) {
if (response.code == 'OK') {
$this.emailErrors.nameError = false;
$this.emailErrors.emailError = false;
$this.emailErrors.messageError = false;
$this.emailErrors.reasonError = false;
$this.emailErrors.stateError = false;
$this.emailData.name = '';
$this.emailData.email = '';
$this.emailData.message = '';
$('#reason-select').val(null).trigger('change');
$('#state-select').val(null).trigger('change');
Swal.fire({
title: 'Correo enviado',
html: 'Se han enviado tus datos a DIALVI, nuestros agentes de soporte se pondran en contacto contigo',
icon: 'success',
showCancelButton: false,
confirmButtonText: 'Entendido'
});
} else if (response.code == 'EME') {
Swal.fire({
title: 'Información faltante',
html: 'Hay información requerida que no se ha enviado, revise si los campos fueron llenados correctamente',
icon: 'error',
showCancelButton: false,
confirmButtonText: 'Entendido'
});
} else if (response.code == 'NOK') {
Swal.fire({
title: 'Envio fallido',
html: 'No se ha podido enviar la información de contacto, por favor intentelo mas tarde.',
icon: 'error',
showCancelButton: false,
confirmButtonText: 'Entendido'
});
}
},
complete: () => {
$this.sendingMail = false;
}
});
}
},
validateEmailData() {
let validation = true;
let $this = this;
$this.emailErrors.nameError = false;
$this.emailErrors.emailError = false;
$this.emailErrors.messageError = false;
$this.emailErrors.reasonError = false;
$this.emailErrors.stateError = false;
if ($this.emailData.name ? $this.emailData.name.trim() == '' : true) {
validation = false;
$this.emailErrors.nameError = true;
$this.emailErrors.nameErrorMessage = 'Ingrese su nombre.';
}
if ($this.emailData.email ? $this.emailData.email.trim() == '' : true) {
validation = false;
$this.emailErrors.emailError = true;
$this.emailErrors.emailErrorMessage = 'Ingrese su correo electrónico.';
}
if ($this.emailData.message ? $this.emailData.message.trim() == '' : true) {
validation = false;
$this.emailErrors.messageError = true;
$this.emailErrors.messageErrorMessage = 'Ingrese el mensaje.';
}
if (!$('#reason-select').val()) {
validation = false;
$this.emailErrors.reasonError = true;
$this.emailErrors.reasonErrorMessage = 'Selecciona la razón de tu correo.';
}
if (!$('#state-select').val()) {
validation = false;
$this.emailErrors.stateError = true;
$this.emailErrors.stateErrorMessage = 'Selecciona tu estado.';
}
return validation;
}
}
});
</script>
{% endblock %}