templates/front/order/include/js/order_js.twig line 1

Open in your IDE?
  1. <script>
  2.     function reloadTable(discount, error)
  3.     {
  4.         let urlParams = new URLSearchParams(window.location.search);
  5.         let isRange = urlParams.get('isRange');
  6.         $.ajax({
  7.             url: `{{ path('render-summary-table') }}`,
  8.             method: 'POST',
  9.             data: {
  10.                 discount: discount,
  11.                 id: `{{ packageId|default('') }}`,
  12.                 isRange: isRange,
  13.                 orderOffer: `{{ orderOffer|default('') }}`,
  14.                 isOffer: `{{ isOffer|default('') }}`,
  15.                 country: `{{ app.user.getCompanyCountry()|default(null) }}`
  16.             },
  17.             success: function (response){
  18.                 $('.box_discount').empty();
  19.                 $('.box_discount').html(response);
  20.             }
  21.         });
  22.         if(error){
  23.             $('.input_discount').addClass('is-invalid');
  24.             $('.alert_error').show();
  25.         }else{
  26.             $('.input_discount').removeClass('is-invalid')
  27.             $('.alert_error').hide();
  28.         }
  29.     }
  30.     function reloadBoxPackageList(packageType, isRange)
  31.     {
  32.         $('.box-spinner').show();
  33.         $.ajax({
  34.             url: `{{ path('package-render-list') }}`,
  35.             method: 'POST',
  36.             data: {
  37.                 packageType: packageType,
  38.                 isRange: isRange,
  39.                 locale: `{{ app.request.locale|default('pl') }}`
  40.             },
  41.             success: function (response){
  42.                 $('.box_discount').empty();
  43.                 $('.box_order_package_list').html(response);
  44.                 $('.box-spinner').hide();
  45.             },
  46.             error: function (response){
  47.                 $('.box-spinner').hide();
  48.             }
  49.         });
  50.     }
  51.     function renderViewByPackageBoxSelected(packageType)
  52.     {
  53.         let boxSwitch = $('.box_switch');
  54.         let boxOrderIndividualBottom = $('.box_order_individual_bottom');
  55.         $(boxSwitch).show();
  56.         $(boxOrderIndividualBottom).show();
  57.         if(packageType === 3){
  58.             $(boxSwitch).hide();
  59.             $(boxOrderIndividualBottom).hide();
  60.         }
  61.     }
  62.     const validateEmail = (email) => {
  63.         return email.match(
  64.             /^(([^<>()[\]\\.,;:\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,}))$/
  65.         );
  66.     };
  67.     const validatePhone = (phone) => {
  68.         let regex = /^[0-9-+()]*$/;
  69.         return regex.test(phone);
  70.     }
  71.     function InvalidPhone()
  72.     {
  73.         let value = $('.phone_number').val();
  74.         let objectClass = '.phone_number';
  75.         let objectMessageClass = '.message-phone-order';
  76.         let messageBlank = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_PHONE_VALID_BLANK'|trans }}`;
  77.         let messageValid = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_PHONE_VALID_TYPE'|trans }}`;
  78.         let valueValidation = !validatePhone(value);
  79.         return validation(
  80.             value,
  81.             objectClass,
  82.             objectMessageClass,
  83.             messageBlank,
  84.             messageValid,
  85.             valueValidation
  86.         );
  87.     }
  88.     function InvalidMsg()
  89.     {
  90.         let value = $('.email_order').val();
  91.         let objectClass = '.email_order';
  92.         let objectMessageClass = '.message-email-order';
  93.         let messageBlank = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_EMAIL_VALID_BLANK'|trans }}`;
  94.         let messageValid = `{{ 'USER_ZONE.HOME_PAGE.MESSAGE_EMAIL_VALID_TYPE'|trans }}`;
  95.         let valueValidation = !validateEmail(value);
  96.         return validation(
  97.             value,
  98.             objectClass,
  99.             objectMessageClass,
  100.             messageBlank,
  101.             messageValid,
  102.             valueValidation
  103.         );
  104.     }
  105.     function validation(
  106.         value,
  107.         objectClass,
  108.         objectMessageClass,
  109.         messageBlank,
  110.         messageValid,
  111.         valueValidation
  112.     )
  113.     {
  114.         let errorClass = 'is-invalid';
  115.         if (value === '') {
  116.             if ($(objectClass).hasClass(errorClass) === false) {
  117.                 $(objectClass).addClass(errorClass);
  118.             }
  119.             $(objectMessageClass).html(messageBlank);
  120.             return false;
  121.         } else if (valueValidation) {
  122.             if ($(objectClass).hasClass(errorClass) === false) {
  123.                 $(objectClass).addClass(errorClass);
  124.             }
  125.             $(objectMessageClass).html(messageValid);
  126.             return false;
  127.         }
  128.         $(objectClass).removeClass(errorClass);
  129.         return true;
  130.     }
  131.     $(document).on('change', '.package_range', function () {
  132.         let packageType = $('.package_selected').data('package');
  133.         let isRange = $('.check-wrapper-image').hasClass('active') ? 1 : 0;
  134.         if (isRange){
  135.             $('.with_a_fork').addClass('bold');
  136.             $('.without_a_fork').removeClass('bold');
  137.         } else {
  138.             $('.without_a_fork').addClass('bold');
  139.             $('.with_a_fork').removeClass('bold');
  140.         }
  141.         reloadBoxPackageList(packageType, isRange);
  142.     });
  143.     $(document).on('change', '.phone_number', function () {
  144.         InvalidPhone();
  145.     });
  146.     $(document).on('change', '.email_order', function () {
  147.         InvalidMsg();
  148.     });
  149.     $(".form-order").submit(function (e) {
  150.         let error = false;
  151.         e.preventDefault();
  152.         $('.alert').css('display', 'none');
  153.         if (InvalidPhone() === false) {
  154.             error = true;
  155.         }
  156.         if (InvalidMsg() === false) {
  157.             error = true;
  158.         }
  159.         if (error === false) {
  160.             e.currentTarget.submit()
  161.         }
  162.     });
  163.     $(document).on('click', '.package_box_selected', function () {
  164.         let packageType = $(this).data('package');
  165.         let isRange = $('.package_range').prop('checked') ? 1 : 0;
  166.         reloadBoxPackageList(packageType, isRange);
  167.         renderViewByPackageBoxSelected(packageType);
  168.     });
  169.     $(document).on('click', '.add_discount', function () {
  170.         let discount = $('.input_discount').val();
  171.         $.ajax({
  172.             url: `{{ path('check-discount') }}`,
  173.             method: 'POST',
  174.             data: {
  175.                 code: discount,
  176.                 user: `{{ app.user.id|default('') }}`
  177.             },
  178.             success: function (response){
  179.                 if (response.error === false) {
  180.                     reloadTable(response.discount, false);
  181.                 } else {
  182.                     reloadTable(response.discount, true);
  183.                 }
  184.             }
  185.         });
  186.     });
  187. </script>