templates/frontend/distributors/register.html.twig line 1

Open in your IDE?
  1. {% extends 'layout.html.twig' %}
  2. {% block title %}Hello DistributorsController!{% endblock %}
  3. {% block body %}
  4. <form method="post" id="register_form">
  5.     <div class="container mb-5">
  6.         <div class="row pt-3">
  7.             <div class="col-12 text-center mt-1 pt-3 pb-3" id="order_header">
  8.                 <h4 class="text-primary">Let's Create Your Account.</h4>
  9.                 <span class="text-primary">
  10.                     Signing up for your Fluid is fast and free - be up and running in under a minute.
  11.                 </span>
  12.             </div>
  13.         </div>
  14.         <div class="row pb-3 pt-3 bg-light border-left border-right border-top">
  15.             <div class="col-12 col-sm-6">
  16.                 <label>
  17.                     Company Name <span class="text-danger">*</span>
  18.                 </label>
  19.                 <input type="checkbox" name="contact_me_by_fax_only" value="1" tabindex="-1" class="hidden" autocomplete="off">
  20.                 <input type="text" name="distributor-name" id="distributor_name" class="form-control" placeholder="Distributor Name*">
  21.                 <div class="hidden_msg" id="error_distributor_name">
  22.                     Required Field
  23.                 </div>
  24.             </div>
  25.             <div class="col-12 col-sm-6">
  26.                 <label>Your Position <span class="text-danger">*</span></label>
  27.                 <input type="text" name="position" id="position" class="form-control" placeholder="Position*">
  28.                 <div class="hidden_msg" id="error_position">
  29.                     Required Field
  30.                 </div>
  31.             </div>
  32.         </div>
  33.         <div class="row pb-3 bg-light border-left border-right">
  34.             <div class="col-12 col-sm-6">
  35.                 <label>First Name <span class="text-danger">*</span></label>
  36.                 <input type="text" name="first-name" id="first_name" class="form-control" placeholder="First Name*">
  37.                 <div class="hidden_msg" id="error_first_name">
  38.                     Required Field
  39.                 </div>
  40.             </div>
  41.             <div class="col-12 col-sm-6">
  42.                 <label>Last Name <span class="text-danger">*</span></label>
  43.                 <input type="text" name="last-name" id="last_name" class="form-control" placeholder="Last Name*">
  44.                 <div class="hidden_msg" id="error_last_name">
  45.                     Required Field
  46.                 </div>
  47.             </div>
  48.         </div>
  49.         <div class="row pb-3 bg-light border-left border-right">
  50.             <div class="col-12 col-sm-6">
  51.                 <label>Your Email <span class="text-danger">*</span></label>
  52.                 <input type="text" name="email" id="email" class="form-control" placeholder="Email*">
  53.                 <div class="hidden_msg" id="error_email">
  54.                     Required Field
  55.                 </div>
  56.             </div>
  57.             <div class="col-12 col-sm-6">
  58.                 <label>Your Telephone <span class="text-danger">*</span></label>
  59.                 <input type="text" name="telephone" id="telephone" class="form-control" placeholder="Telephone*">
  60.                 <input type="hidden" value="0" name="mobile-no" id="mobile_no">
  61.                 <input type="hidden" name="iso-code" id="distributor_iso_code" value="">
  62.                 <input type="hidden" name="intl-code" id="distributor_intl_code" value="">
  63.                 <div class="hidden_msg" id="error_telephone">
  64.                     Required Field
  65.                 </div>
  66.             </div>
  67.         </div>
  68.         <div class="row pb-3 mb-3 bg-light border-left border-right border-bottom pb-3">
  69.             <div class="col-12 col-sm-6">
  70.                 <label>Located In <span class="text-danger">*</span></label>
  71.                 <select name="country" style="color:#b1abb0 !important" id="country" class="form-control">
  72.                     <option value="">Country</option>
  73.                     {% for country in countries %}
  74.                         <option value="{{ country.id }}">{{ country.name }}</option>
  75.                     {% endfor %}
  76.                 </select>
  77.                 <div class="hidden_msg" id="error_country">
  78.                     Required Field
  79.                 </div>
  80.             </div>
  81.         </div>
  82.         <div class="row">
  83.             <div class="col-12 ps-0 pe-0">
  84.                 <button id="form_save" type="submit" class="btn btn-primary float-end w-100">CREATE ACCOUNT</button>
  85.             </div>
  86.         </div>
  87.     </div>
  88. </form>
  89. <div class="overlay"></div>
  90. <div class="spanner">
  91.     <div class="loader"></div>
  92.     <p class="text-light fw-bold" style="font-size: 36px;">Loading...</p>
  93. </div>
  94. {% endblock %}
  95. {% block javascripts %}
  96.     {{ parent() }}
  97.     <script>
  98.         $(document).ready(function (){
  99.             // International Numbers
  100.             let input = document.querySelector('#telephone');
  101.             iti = window.intlTelInput(input, {
  102.                 initialCountry: "auto",
  103.                 geoIpLookup: function(success, failure) {
  104.                     $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) {
  105.                         var countryCode = (resp && resp.country) ? resp.country : "ae";
  106.                         success(countryCode);
  107.                     });
  108.                 },
  109.                 preferredCountries: ['ae','qa', 'bh', 'om', 'sa'],
  110.                 autoPlaceholder: "polite",
  111.                 nationalMode: true,
  112.                 utilsScript: "{{ asset('js/utils.min.js') }}", // just for formatting/placeholders etc
  113.                 separateDialCode: true,
  114.                 utilsScript: "/js/utils.js",
  115.             });
  116.             let handleChange = function() {
  117.                 let mobile = $('#mobile_no');
  118.                 let mobile_number = (iti.isValidNumber()) ? iti.getNumber() : false;
  119.                 let textNode = document.createTextNode(mobile_number);
  120.                 if(mobile_number != false){
  121.                     let iso_code = iti.getSelectedCountryData().iso2;
  122.                     let intl_code = iti.getSelectedCountryData().dialCode;
  123.                     mobile.val(mobile_number.substring(1));
  124.                     $('#distributor_iso_code').val(iso_code);
  125.                     $('#distributor_intl_code').val(intl_code);
  126.                 }
  127.             };
  128.             // listen to "keyup", but also "change" to update when the user selects a country
  129.             input.addEventListener('change', handleChange);
  130.             input.addEventListener('keyup', handleChange);
  131.             $(document).on('change', '#email', function (){
  132.                 let email = $('#email').val();
  133.                 let errorEmail = $('#error_email');
  134.                 errorEmail.hide();
  135.                 $.ajax({
  136.                     url: "{{ path('distributor_check_email') }}",
  137.                     type: 'POST',
  138.                     dataType: 'json',
  139.                     data: {
  140.                         'email': email
  141.                     },
  142.                     complete: function(e, xhr, settings)
  143.                     {
  144.                         if(e.status === 500){
  145.                             window.location.href = '{{ path('clinic_error_500') }}';
  146.                         }
  147.                     },
  148.                     success: function (response)
  149.                     {
  150.                         if(!response.response)
  151.                         {
  152.                             if(response.restricted)
  153.                             {
  154.                                 errorEmail.empty().append('Domain name is not allowed').show();
  155.                             } else
  156.                             {
  157.                                 errorEmail.empty().append('Your business is already registered, please contact '+ response.firstName).show();
  158.                             }
  159.                             $('#email').val('');
  160.                         }
  161.                     }
  162.                 });
  163.             });
  164.             $(document).on('submit','#register_form', function (e){
  165.                 e.preventDefault();
  166.                 let is_valid = true;
  167.                 let distributorName = $('#distributor_name').val();
  168.                 let position = $('#position').val();
  169.                 let firstName = $('#first_name').val();
  170.                 let lastName = $('#last_name').val();
  171.                 let email = $('#email').val();
  172.                 let telephone = $('#mobile_no').val();
  173.                 let country = $('#country').val();
  174.                 let errorDistributorName = $('#error_distributor_name');
  175.                 let errorPosition = $('#error_position');
  176.                 let errorFirstName = $('#error_first_name');
  177.                 let errorLastName = $('#error_last_name');
  178.                 let errorEmail = $('#error_email');
  179.                 let errorTelephone = $('#error_telephone');
  180.                 let errorCountry = $('#error_country');
  181.                 errorDistributorName.hide();
  182.                 errorPosition.hide();
  183.                 errorFirstName.hide();
  184.                 errorLastName.hide();
  185.                 errorEmail.hide();
  186.                 errorTelephone.hide();
  187.                 if(distributorName == '' || distributorName == 'undefined'){
  188.                     errorDistributorName.show();
  189.                     is_valid = false;
  190.                 }
  191.                 if(position == '' || position == 'undefined'){
  192.                     errorPosition.show();
  193.                     is_valid = false;
  194.                 }
  195.                 if(firstName == '' || firstName == 'undefined'){
  196.                     errorFirstName.show();
  197.                     is_valid = false;
  198.                 }
  199.                 if(lastName == '' || lastName == 'undefined'){
  200.                     errorLastName.show();
  201.                     is_valid = false;
  202.                 }
  203.                 if(email == '' || email == 'undefined'){
  204.                     errorEmail.empty().append('Required Field').show();
  205.                     is_valid = false;
  206.                 }
  207.                 if(telephone == '' || telephone == 'undefined'){
  208.                     errorTelephone.show();
  209.                     is_valid = false;
  210.                 }
  211.                 if(country == '' || country == 'undefined'){
  212.                     errorCountry.show();
  213.                     is_valid = false;
  214.                 }
  215.                 if(is_valid == true){
  216.                     let data = new FormData(this);
  217.                     $.ajax({
  218.                         url: "{{ path('distributor_create') }}",
  219.                         type: 'POST',
  220.                         contentType: false,
  221.                         processData: false,
  222.                         cache: false,
  223.                         timeout: 600000,
  224.                         dataType: 'json',
  225.                         data: data,
  226.                         beforeSend: function () {
  227.                             isLoading(true);
  228.                         },
  229.                         success: function (response) {
  230.                             $('#register_form').empty();
  231.                             $('#register_form').append(response);
  232.                             isLoading(false);
  233.                         }
  234.                     });
  235.                 }
  236.             });
  237.             function isLoading(status){
  238.                 if(status) {
  239.                     $("div.spanner").addClass("show");
  240.                     $("div.overlay").addClass("show");
  241.                 } else {
  242.                     $("div.spanner").removeClass("show");
  243.                     $("div.overlay").removeClass("show");
  244.                 }
  245.             }
  246.         });
  247.     </script>
  248. {% endblock %}