<script>
function reloadTable(discount, error)
{
let urlParams = new URLSearchParams(window.location.search);
let isRange = urlParams.get('isRange');
$.ajax({
url: `{{ path('render-summary-table') }}`,
method: 'POST',
data: {
discount: discount,
id: `{{ packageId|default('') }}`,
isRange: isRange,
orderOffer: `{{ orderOffer|default('') }}`,
isOffer: `{{ isOffer|default('') }}`,
country: `{{ app.user.getCompanyCountry()|default(null) }}`
},
success: function (response){
$('.box_discount').empty();
$('.box_discount').html(response);
}
});
if(error){
$('.input_discount').addClass('is-invalid');
$('.alert_error').show();
}else{
$('.input_discount').removeClass('is-invalid')
$('.alert_error').hide();
}
}
function reloadBoxPackageList(packageType, isRange)
{
$('.box-spinner').show();
$.ajax({
url: `{{ path('package-render-list') }}`,
method: 'POST',
data: {
packageType: packageType,
isRange: isRange,
locale: `{{ app.request.locale|default('pl') }}`
},
success: function (response){
$('.box_discount').empty();
$('.box_order_package_list').html(response);
$('.box-spinner').hide();
},
error: function (response){
$('.box-spinner').hide();
}
});
}
function renderViewByPackageBoxSelected(packageType)
{
let boxSwitch = $('.box_switch');
let boxOrderIndividualBottom = $('.box_order_individual_bottom');
$(boxSwitch).show();
$(boxOrderIndividualBottom).show();
if(packageType === 3){
$(boxSwitch).hide();
$(boxOrderIndividualBottom).hide();
}
}
const validateEmail = (email) => {
return email.match(
/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
);
};
const validatePhone = (phone) => {
let regex = /^[0-9-+()]*$/;
return regex.test(phone);
}
function InvalidPhone()
{
let value = $('.phone_number').val();
let objectClass = '.phone_number';
let objectMessageClass = '.message-phone-order';
let messageBlank = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_PHONE_VALID_BLANK'|trans }}`;
let messageValid = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_PHONE_VALID_TYPE'|trans }}`;
let valueValidation = !validatePhone(value);
return validation(
value,
objectClass,
objectMessageClass,
messageBlank,
messageValid,
valueValidation
);
}
function InvalidMsg()
{
let value = $('.email_order').val();
let objectClass = '.email_order';
let objectMessageClass = '.message-email-order';
let messageBlank = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_EMAIL_VALID_BLANK'|trans }}`;
let messageValid = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_EMAIL_VALID_TYPE'|trans }}`;
let valueValidation = !validateEmail(value);
return validation(
value,
objectClass,
objectMessageClass,
messageBlank,
messageValid,
valueValidation
);
}
function validation(
value,
objectClass,
objectMessageClass,
messageBlank,
messageValid,
valueValidation
)
{
let errorClass = 'is-invalid';
if (value === '') {
if ($(objectClass).hasClass(errorClass) === false) {
$(objectClass).addClass(errorClass);
}
$(objectMessageClass).html(messageBlank);
return false;
} else if (valueValidation) {
if ($(objectClass).hasClass(errorClass) === false) {
$(objectClass).addClass(errorClass);
}
$(objectMessageClass).html(messageValid);
return false;
}
$(objectClass).removeClass(errorClass);
return true;
}
$(document).on('change', '.package_range', function () {
let packageType = $('.package_selected').data('package');
let isRange = $('.check-wrapper-image').hasClass('active') ? 1 : 0;
if (isRange){
$('.with_a_fork').addClass('bold');
$('.without_a_fork').removeClass('bold');
} else {
$('.without_a_fork').addClass('bold');
$('.with_a_fork').removeClass('bold');
}
reloadBoxPackageList(packageType, isRange);
});
$(document).on('change', '.phone_number', function () {
InvalidPhone();
});
$(document).on('change', '.email_order', function () {
InvalidMsg();
});
$(".form-order").submit(function (e) {
let error = false;
e.preventDefault();
$('.alert').css('display', 'none');
if (InvalidPhone() === false) {
error = true;
}
if (InvalidMsg() === false) {
error = true;
}
if (error === false) {
e.currentTarget.submit()
}
});
$(document).on('click', '.package_box_selected', function () {
let packageType = $(this).data('package');
let isRange = $('.package_range').prop('checked') ? 1 : 0;
reloadBoxPackageList(packageType, isRange);
renderViewByPackageBoxSelected(packageType);
});
$(document).on('click', '.add_discount', function () {
let discount = $('.input_discount').val();
$.ajax({
url: `{{ path('check-discount') }}`,
method: 'POST',
data: {
code: discount,
user: `{{ app.user.id|default('') }}`
},
success: function (response){
if (response.error === false) {
reloadTable(response.discount, false);
} else {
reloadTable(response.discount, true);
}
}
});
});
</script>