templates/frontend/clinics/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 name="register_form" id="register_form" method="post" autocomplete="off">
  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 bg-light border-left border-right border-top pt-3" id="row_1">
  15.             <input type="checkbox" name="call_back_form[contact_me_by_fax_only]" value="1" tabindex="-1" class="hidden" autocomplete="off">
  16.             {# First Name #}
  17.             <div class="col-12 col-sm-6">
  18.                 <label>First Name <span class="text-danger">*</span></label>
  19.                 <input type="text" name="firstName" id="first_name" class="form-control" placeholder="First Name">
  20.                 <div class="hidden_msg" id="error_first_name">
  21.                     Required Field
  22.                 </div>
  23.             </div>
  24.             {# Last Name #}
  25.             <div class="col-12 col-sm-6">
  26.                 <label>Last Name <span class="text-danger">*</span></label>
  27.                 <input type="text" name="lastName" id="last_name" class="form-control" placeholder="Last Name">
  28.                 <div class="hidden_msg" id="error_last_name">
  29.                     Required Field
  30.                 </div>
  31.             </div>
  32.         </div>
  33.         <div class="row pb-3 bg-light border-left border-right" id="row_2">
  34.             {# Postionn #}
  35.             <div class="col-12 col-sm-6">
  36.                 <label>Your Position <span class="text-danger">*</span></label>
  37.                 <input type="text" name="position" id="position" class="form-control" placeholder="Veterinarian, Office Manager, Inventory Manager .etc">
  38.                 <div class="hidden_msg" id="error_position">
  39.                     Required Field
  40.                 </div>
  41.             </div>
  42.             {# Country #}
  43.             <div class="col-12 col-sm-6">
  44.                 <label>Located In <span class="text-danger">*</span></label>
  45.                 <select name="country" style="color:#b1abb0 !important" id="country" class="form-control">
  46.                     <option value="">Country</option>
  47.                     {% for country in countries %}
  48.                         <option value="{{ country.id }}">{{ country.name }}</option>
  49.                     {% endfor %}
  50.                 </select>
  51.                 <div class="hidden_msg" id="error_country">
  52.                     Required Field
  53.                 </div>
  54.             </div>
  55.         </div>
  56.         <div class="row pb-3 bg-light border-left border-right" id="row_3">
  57.             {# Email #}
  58.             <div class="col-12 col-sm-6">
  59.                 <label>Business Email <span class="text-danger">*</span></label>
  60.                 <input type="text" name="email" id="email" class="form-control" placeholder="Email Address" autocomplete="off">
  61.                 <div class="hidden_msg" id="error_email">
  62.                     Required Field
  63.                 </div>
  64.             </div>
  65.             {# Telephone #}
  66.             <div class="col-12 col-sm-6">
  67.                 <label>Business Telephone <span class="text-danger">*</span></label>
  68.                 <input type="text" name="mobile" id="mobile" class="form-control" placeholder="Telephone" autocomplete="off">
  69.                 <input type="hidden" value="0" name="user-telephone" id="user_telephone">
  70.                 <input type="hidden" name="user-iso-code" id="user_iso_code" value="">
  71.                 <input type="hidden" name="user-intl-code" id="user_intl_code" value="">
  72.                 <div class="hidden_msg" id="error_telephone">
  73.                     Required Field
  74.                 </div>
  75.             </div>
  76.         </div>
  77.         <div class="row mb-3 bg-light border-left border-right border-bottom" id="row_4">
  78.             {# Clinic Name #}
  79.             <div class="col-12 col-sm-6">
  80.                 <label>Business Name <span class="text-danger">*</span></label>
  81.                 <input type="text" name="clinicName" id="clinic_name" class="form-control" placeholder="Clinic Name">
  82.                 <div class="hidden_msg" id="error_clinic_name">
  83.                     Required Field
  84.                 </div>
  85.             </div>
  86.             {# Telephone #}
  87.             <div class="col-12 col-sm-6 pb-3">
  88.                 <label>Business Phone Number <span class="text-danger">*</span></label>
  89.                 <input type="text" name="mobile_clinic" id="mobile_clinic" class="form-control" placeholder="Clinic Phone Number">
  90.                 <input type="hidden" value="0" name="clinic-telephone" id="clinic_telephone">
  91.                 <input type="hidden" name="clinic-iso-code" id="clinic_iso_code" value="">
  92.                 <input type="hidden" name="clinic-intl-code" id="clinic_intl_code" value="">
  93.                 <div class="hidden_msg" id="error_clinic_telephone">
  94.                     Required Field
  95.                 </div>
  96.             </div>
  97.         </div>
  98.         <div class="row" id="row_5">
  99.             <div class="col-12 ps-0 pe-0">
  100.                 <button id="form_save" type="submit" class="btn btn-primary w-100">CREATE ACCOUNT</button>
  101.             </div>
  102.         </div>
  103.     </div>
  104. </form>
  105. <div class="overlay"></div>
  106. <div class="spanner">
  107.     <div class="loader"></div>
  108.     <p class="text-light fw-bold" style="font-size: 36px;">Loading...</p>
  109. </div>
  110. {% endblock %}
  111. {% block javascripts %}
  112.     {{ parent() }}
  113.     <script>
  114.         $(document).ready(function (){
  115.             // International Numbers Personal
  116.             let input = document.querySelector('#mobile');
  117.             iti = window.intlTelInput(input, {
  118.                 initialCountry: "auto",
  119.                 geoIpLookup: function(success, failure) {
  120.                     $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) {
  121.                         var countryCode = (resp && resp.country) ? resp.country : "ae";
  122.                         success(countryCode);
  123.                     });
  124.                 },
  125.                 preferredCountries: ['ae','qa', 'bh', 'om', 'sa'],
  126.                 autoPlaceholder: "polite",
  127.                 nationalMode: true,
  128.                 utilsScript: "{{ asset('js/utils.min.js') }}", // just for formatting/placeholders etc
  129.                 separateDialCode: true,
  130.                 utilsScript: "/js/utils.js",
  131.             });
  132.             $(document).on('change keyup', '#mobile', function (){
  133.                 let handleChange = function() {
  134.                     let mobile = $('#user_telephone');
  135.                     let mobile_number = (iti.isValidNumber()) ? iti.getNumber() : false;
  136.                     let textNode = document.createTextNode(mobile_number);
  137.                     if(mobile_number != false){
  138.                         let iso_code = iti.getSelectedCountryData().iso2;
  139.                         let intl_code = iti.getSelectedCountryData().dialCode;
  140.                         mobile.val(mobile_number.substring(1));
  141.                         $('#user_iso_code').val(iso_code);
  142.                         $('#user_intl_code').val(intl_code);
  143.                     }
  144.                 };
  145.                 // listen to "keyup", but also "change" to update when the user selects a country
  146.                 input.addEventListener('change', handleChange);
  147.                 input.addEventListener('keyup', handleChange);
  148.             });
  149.             // International Numbers Personal
  150.             let input_clinic = document.querySelector('#mobile_clinic');
  151.             iti_clinic = window.intlTelInput(input_clinic, {
  152.                 initialCountry: "auto",
  153.                 geoIpLookup: function(success, failure) {
  154.                     $.get("https://ipinfo.io", function() {}, "jsonp").always(function(resp) {
  155.                         var countryCode = (resp && resp.country) ? resp.country : "ae";
  156.                         success(countryCode);
  157.                     });
  158.                 },
  159.                 preferredCountries: ['ae','qa', 'bh', 'om', 'sa'],
  160.                 autoPlaceholder: "polite",
  161.                 nationalMode: true,
  162.                 utilsScript: "{{ asset('js/utils.min.js') }}", // just for formatting/placeholders etc
  163.                 separateDialCode: true,
  164.                 utilsScript: "/js/utils.js",
  165.             });
  166.             $(document).on('change keyup', '#mobile_clinic', function (){
  167.                 let handleChange = function() {
  168.                     let mobile = $('#clinic_telephone');
  169.                     let mobile_number = (iti_clinic.isValidNumber()) ? iti_clinic.getNumber() : false;
  170.                     let textNode = document.createTextNode(mobile_number);
  171.                     if(mobile_number != false){
  172.                         let iso_code = iti.getSelectedCountryData().iso2;
  173.                         let intl_code = iti.getSelectedCountryData().dialCode;
  174.                         mobile.val(mobile_number.substring(1));
  175.                         $('#clinic_iso_code').val(iso_code);
  176.                         $('#clinic_intl_code').val(intl_code);
  177.                     }
  178.                 };
  179.                 // listen to "keyup", but also "change" to update when the user selects a country
  180.                 input_clinic.addEventListener('change', handleChange);
  181.                 input_clinic.addEventListener('keyup', handleChange);
  182.             });
  183.             $(document).on('change', '#email', function (){
  184.                 let email = $('#email').val();
  185.                 let errorEmail = $('#error_email');
  186.                 errorEmail.hide();
  187.                 $.ajax({
  188.                     url: "{{ path('clinic_check_email') }}",
  189.                     type: 'POST',
  190.                     dataType: 'json',
  191.                     data: {
  192.                         email: email
  193.                     },
  194.                     complete: function(e, xhr, settings){
  195.                         if(e.status === 500){
  196.                             window.location.href = '{{ path('clinic_error_500') }}';
  197.                         }
  198.                     },
  199.                     success: function (response) {
  200.                         if(!response.response)
  201.                         {
  202.                             if(response.restricted)
  203.                             {
  204.                                 errorEmail.empty().append('Domain name is not allowed').show();
  205.                             } else
  206.                             {
  207.                                 errorEmail.empty().append('Your business is already registered, please contact '+ response.firstName).show();
  208.                             }
  209.                             $('#email').val('');
  210.                         }
  211.                     }
  212.                 });
  213.             });
  214.             $('#register_form').submit(function(e){
  215.                 e.preventDefault();
  216.                 var is_valid = true;
  217.                 var position = $('#position').val();
  218.                 var first_name = $('#first_name').val();
  219.                 var last_name = $('#last_name').val();
  220.                 var email = $('#email').val();
  221.                 var telephone = $('#telephone').val();
  222.                 var clinic_name = $('#clinic_name').val();
  223.                 var clinic_telephone = $('#clinic_telephone').val();
  224.                 var error_position = $('#error_position');
  225.                 var error_first_name = $('#error_first_name');
  226.                 var error_last_name = $('#error_last_name');
  227.                 var error_email = $('#error_email');
  228.                 var error_telephone = $('#error_telephone');
  229.                 var error_clinic_name = $('#error_clinic_name');
  230.                 var error_clinic_telephone = $('#error_clinic_telephone')
  231.                 error_position.hide();
  232.                 error_first_name.hide();
  233.                 error_last_name.hide();
  234.                 error_email.hide();
  235.                 error_telephone.hide();
  236.                 error_clinic_name.hide();
  237.                 error_clinic_telephone.hide();
  238.                 if(position == '' || position == 'undefined'){
  239.                     error_position.show();
  240.                     is_valid = false;
  241.                 }
  242.                 if(first_name == '' || first_name == 'undefined'){
  243.                     error_first_name.show();
  244.                     is_valid = false;
  245.                 }
  246.                 if(last_name == '' || last_name == 'undefined'){
  247.                     error_last_name.show();
  248.                     is_valid = false;
  249.                 }
  250.                 if(email == '' || email == 'undefined'){
  251.                     error_email.empty().append('Required Field');
  252.                     error_email.show();
  253.                     is_valid = false;
  254.                 }
  255.                 if(telephone == '' || telephone == 'undefined' || telephone == 0){
  256.                     error_telephone.show();
  257.                     is_valid = false;
  258.                 }
  259.                 if(clinic_name == '' || clinic_name == 'undefined'){
  260.                     error_clinic_name.show();
  261.                     is_valid = false;
  262.                 }
  263.                 if(clinic_telephone == '' || clinic_telephone == 'undefined'){
  264.                     error_clinic_telephone.show();
  265.                     is_valid = false;
  266.                 }
  267.                 if(is_valid == true){
  268.                     let data = new FormData(this);
  269.                     $.ajax({
  270.                         url: "{{ path('clinic_create') }}",
  271.                         type: 'POST',
  272.                         contentType: false,
  273.                         processData: false,
  274.                         cache: false,
  275.                         timeout: 600000,
  276.                         dataType: 'json',
  277.                         data: data,
  278.                         beforeSend: function (){
  279.                             isLoading(true);
  280.                         },
  281.                         complete: function(e, xhr, settings){
  282.                             if(e.status === 500){
  283.                                 //window.location.href = '{{ path('clinic_error_500') }}';
  284.                             }
  285.                         },
  286.                         success: function (response) {
  287.                             $('#row_1').empty().addClass('border-bottom');
  288.                             $('#row_2').remove();
  289.                             $('#row_3').remove();
  290.                             $('#row_4').remove();
  291.                             $('#row_5').remove();
  292.                             $('#row_1').append('<div class="col-12 text-center text-primary pt-3 pb-3">'+response+'</div>');
  293.                             $('#error_email').hide();
  294.                             isLoading(false);
  295.                         }
  296.                     });
  297.                 }
  298.             });
  299.             function isLoading(status){
  300.                 if(status) {
  301.                     $("div.spanner").addClass("show");
  302.                     $("div.overlay").addClass("show");
  303.                 } else {
  304.                     $("div.spanner").removeClass("show");
  305.                     $("div.overlay").removeClass("show");
  306.                 }
  307.             }
  308.         });
  309.     </script>
  310. {% endblock %}