templates/recrutement/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block page_contents %}
  3. <section class="section section-page-title bg-gradient py-xl-5 py-4" data-aos='fade-down'>
  4.   <div class="container">
  5.     <div class="row">
  6.       <div class="col-12 text-center text-white">
  7.         <h1 class="page-name font-weight-bold my-2">{% trans %}Carrière chez ÉSTIAM{% endtrans %}</h1>
  8.       </div>
  9.     </div>
  10.   </div>
  11. </section>
  12. <section class="section section-form section-form-2 mb-xl-5 mb-4 mt-4">
  13.   <form id="submit-recruitmemt">
  14.     <div class="container">
  15.       <div class="row">
  16.         <div class="col-xl-3 col-lg-4 col-md-5">
  17.           <div class="group-theme mb-4 checkbox-theme-required">
  18.             <div class="font-weight-bold text-dark-purple mb-2">{% trans %}Sélectionnez les thématiques{% endtrans %} <span class="text-orange">*</span></div>
  19.             {% for i,theme in themes %}
  20.             <div class="form-check mx-0 px-0 mb-2">
  21.               <div class="custom-control custom-checkbox">
  22.                 <input type="checkbox" class="custom-control-input" id="theme-{{ theme.id }}" name="recruitmentThemes[{{ i }}]" value="{{ theme.id }}">
  23.                 <label class="custom-control-label text-dark-purple font-weight-normal pl-2" for="theme-{{ theme.id }}">{{ theme.name }}</label>
  24.               </div>
  25.             </div>
  26.             {% endfor %}
  27.           </div>
  28.           <div class="group-campuses mb-4 checkbox-campus-required">
  29.             <div class="font-weight-bold text-dark-purple mb-2">{% trans %}À proximité du campus{% endtrans %} <span class="text-orange">*</span></div>
  30.             {% for i,campus in campuses %}
  31.             <div class="form-check mx-0 px-0 mb-2">
  32.               <div class="custom-control custom-checkbox">
  33.                 <input type="checkbox" class="custom-control-input" id="campuses-{{ campus.id }}" name="campuses[{{ i }}]" value="{{ campus.id }}">
  34.                 <label class="custom-control-label text-dark-purple font-weight-normal pl-2" for="campuses-{{ campus.id }}">{{ campus.name }}</label>
  35.               </div>
  36.             </div>
  37.             {% endfor %}
  38.           </div>
  39.         </div>
  40.         <div class="col-xl-9 col-lg-8 col-md-7">
  41.           <div class="mb-4 text-justify">
  42.             <p>{% trans %}Découvrez nos opportunités professionnelles en interne chez ÉSTIAM ! Vous êtes à la recherche de nouveaux défis dans les domaines de l'éducation, des relations entreprises, des admissions, de la communication, et bien d'autres ? Chez ÉSTIAM, nous offrons un large éventail d'opportunités au sein de notre équipe pédagogique et administrative{% endtrans %}.</p>
  43.             <p>{% trans %}Que vous souhaitiez partager votre expertise en tant que formateur/trice, contribuer au développement de partenariats avec les entreprises, participer au processus d'admission des étudiants ou encore jouer un rôle clé dans notre stratégie de communication, vous trouverez chez ÉSTIAM un environnement stimulant et dynamique{% endtrans %}.</p>
  44.           </div>
  45.           <div class="section-title text-left d-flex align-items-center mb-3"><span>/</span> {% trans %}VEUILLEZ NOUS INFORMER LES INFORMATIONS SUR VOTRE CANDIDATURE CI-DESSOUS{% endtrans %}</div>
  46.           <div class="row">
  47.             <div class="col-12 d-flex flex-column">
  48.               <div class="form-group row row-gender align-items-start mt-2 flex-lg-row flex-column">
  49.                 <label class="col-form-label font-weight-normal px-3 pt-0 pb-0 text-dark-purple text-nowrap mb-lg-0 mb-1">{% trans %}Titre{% endtrans %} <span class="text-orange">*</span>:</label>
  50.                 <div class="flex-1 pl-lg-0 pl-3">
  51.                   <div class="form-check form-check-inline mr-0">
  52.                     <div class="custom-control custom-radio">
  53.                         <input type="radio" class="custom-control-input" id="p1" name="pronoun" value="Prof." required>
  54.                         <label class="custom-control-label text-dark-purple" for="p1">{% trans %}Prof.{% endtrans %}</label>
  55.                     </div>
  56.                   </div>
  57.                   <div class="form-check form-check-inline ml-lg-3 ml-2 mr-0">
  58.                     <div class="custom-control custom-radio">
  59.                         <input type="radio" class="custom-control-input" id="p2" name="pronoun" value="Dr." required>
  60.                         <label class="custom-control-label text-dark-purple" for="p2">{% trans %}Dr.{% endtrans %}</label>
  61.                     </div>
  62.                   </div>
  63.                   <div class="form-check form-check-inline ml-lg-3 ml-2 mr-0">
  64.                     <div class="custom-control custom-radio">
  65.                         <input type="radio" class="custom-control-input" id="p3" name="pronoun" value="M." required>
  66.                         <label class="custom-control-label text-dark-purple" for="p3">{% trans %}M.{% endtrans %}</label>
  67.                     </div>
  68.                   </div>
  69.                   <div class="form-check form-check-inline ml-lg-3 ml-2 mr-0">
  70.                     <div class="custom-control custom-radio">
  71.                         <input type="radio" class="custom-control-input" id="p4" name="pronoun" value="Melle." required>
  72.                         <label class="custom-control-label text-dark-purple" for="p4">{% trans %}Mlle.{% endtrans %}</label>
  73.                     </div>
  74.                   </div>
  75.                   <div class="form-check form-check-inline ml-lg-3 ml-2 mr-0">
  76.                     <div class="custom-control custom-radio">
  77.                         <input type="radio" class="custom-control-input" id="p5" name="pronoun" value="Mme." required>
  78.                         <label class="custom-control-label text-dark-purple" for="p5">{% trans %}Mme.{% endtrans %}</label>
  79.                     </div>
  80.                   </div>
  81.                 </div>
  82.               </div>
  83.             </div>
  84.             <div class="col-lg-6">
  85.               <div class="form-group">
  86.                 <input type="text" class="form-control" name="firstName" placeholder="{% trans %}Nom *{% endtrans %}" required>
  87.               </div>
  88.             </div>
  89.             <div class="col-lg-6">
  90.               <div class="form-group">
  91.                 <input type="text" class="form-control" name="lastName" placeholder="{% trans %}Prénom *{% endtrans %}" required>
  92.               </div>
  93.             </div>
  94.             <div class="col-lg-6">
  95.               <div class="form-group">
  96.                 <input type="text" class="form-control" name="email" placeholder="{% trans %}Email *{% endtrans %}" required>
  97.               </div>
  98.             </div>
  99.             <div class="col-lg-6">
  100.               <div class="form-group">
  101.                 <input type="text" class="form-control" name="phone" placeholder="{% trans %}Téléphone *{% endtrans %}" required>
  102.               </div>
  103.             </div>
  104.             <div class="col-lg-6">
  105.               <div class="form-group">
  106.                 <input type="text" class="form-control" name="nationality" placeholder="{% trans %}Nationalité *{% endtrans %}" required>
  107.               </div>
  108.             </div>
  109.             <div class="col-lg-6">
  110.               <div class="form-group">
  111.                 <select class="form-control" name="livingIn" required>
  112.                   <option>{% trans %}Pays de résidence{% endtrans %}</option>
  113.                   {% for country in countries %}
  114.                     <option value="{{ country.name }}">{{ country.name }}</option>
  115.                   {% endfor %}
  116.                 </select>
  117.               </div>
  118.             </div>
  119.             <div class="col-12">
  120.               <div class="form-group">
  121.                 <textarea class="form-control" name="research" placeholder="{% trans %}Précision sur votre recherche *{% endtrans %}" required></textarea>
  122.               </div>
  123.             </div>
  124.             <div class="col-12">
  125.               <div class="font-weight-bold text-dark-purple mb-3">{% trans %}Document à télécharger{% endtrans %} <span class="font-weight-normal font-italic">{% trans %}(format PDF, JPG, PNG et JPEG acceptés){% endtrans %}</span></div>
  126.               <div class="row field-upload">
  127.                 <div class="col-12 form-group curriculumVitae">
  128.                   <div>
  129.                     <div class="group-item mb-3">
  130.                       <input id="cv_file" type="file" class="single-files form-control" name="cv_file" value accept=".pdf,.docx,.doc,.jpg,.png,.jpeg"/>
  131.                       <label class="d-flex flex-column" for="cv_file">
  132.                         <div class="d-flex align-items-center cursor">
  133.                           <span class="upload-btn cursor cloud-btn px-3">
  134.                             <i class="fas fa-cloud-arrow-up"></i>
  135.                           </span>
  136.                           <span class="text-dark-purple ml-3 font-weight-normal cv_file">{% trans %}CV <span class="text-orange">*</span>{% endtrans %}</span>
  137.                         </div>
  138.                         <span class="file-desc flex-1 d-flex align-items-center mt-1">
  139.                           <i class="fa-solid fa-paperclip-vertical text-orange mr-2"></i>
  140.                           <span class="upload-file-name"></span>
  141.                           <i class="far fa-xmark ml-3 cursor"></i>
  142.                         </span>
  143.                       </label>
  144.                     </div>
  145.                     <div class="group-item mb-3">
  146.                       <input id="letter_file" type="file" class="single-files form-control" name="letter_file" value accept=".pdf,.docx,.doc,.jpg,.png,.jpeg"/>
  147.                       <label class="d-flex flex-column" for="letter_file">
  148.                         <div class="d-flex align-items-center cursor">
  149.                           <span class="upload-btn cursor cloud-btn px-3">
  150.                             <i class="fas fa-cloud-arrow-up"></i>
  151.                           </span>
  152.                           <span class="text-dark-purple ml-3 font-weight-normal letter_file">{% trans %}Lettre de motivation <span class="text-orange">*</span>{% endtrans %}</span>
  153.                         </div>
  154.                         <span class="file-desc flex-1 d-flex align-items-center mt-1">
  155.                           <i class="fa-solid fa-paperclip-vertical text-orange mr-2"></i>
  156.                           <span class="upload-file-name"></span>
  157.                           <i class="far fa-xmark ml-3 cursor"></i>
  158.                         </span>
  159.                       </label>
  160.                     </div>
  161.                     <div class="group-item mb-3">
  162.                       <input type="file" id="other_files" name="other_files[]" multiple="multiple" class="form-control" value accept=".pdf,.docx,.doc,.jpg,.png,.jpeg"/>
  163.                       <label class="d-flex flex-column" for="other_files">
  164.                         <div class="d-flex align-items-center cursor" id="fileSelect">
  165.                           <span class="upload-btn cursor cloud-btn px-3">
  166.                             <i class="fas fa-cloud-arrow-up"></i>
  167.                           </span>
  168.                           <span class="text-dark-purple ml-3 font-weight-normal line-height-small">{% trans %}Autres documents facultatifs (diplômes, certifications,...){% endtrans %}<br/><small class="font-italic">Appuyer sur le bouton "Ctrl" de votre clavier pour sélectionner plusieurs fichiers</small></span>
  169.                         </div>
  170.                       </label>
  171.                       <div id="output" class="mt-2"></div>
  172.                     </div>
  173.                   </div>
  174.                 </div>
  175.               </div>
  176.             </div>
  177.             <div class="col-12">
  178.               <div class="font-weight-bold text-dark-purple mb-3">{% trans %}Données personnelles obligatoires{% endtrans %} <span class="text-orange">*</span></div>
  179.               <div class="form-check pl-0 mb-3">
  180.                 <div class="custom-control custom-checkbox">
  181.                   <input type="checkbox" class="custom-control-input" id="obligatoires" name="obligatoires" value="1" required>
  182.                   <label class="custom-control-label text-dark-purple text-justify" for="obligatoires">{% trans %}J'accepte que ÉSTIAM collecte et utilise les données personnelles que je viens de renseigner dans ce formulaire dans le but de m'envoyer des propositions éducatives adaptées à mon projet, que j'ai acceptées de recevoir, en accord avec notre politique de protection des données.{% endtrans %}</label>
  183.                 </div>
  184.               </div>
  185.               <p class="font-italic text-dark-purple line-height-normal text-justify"><small>{% trans %}Les informations recueillies sur ce formulaire sont enregistrées dans un fichier informatisé par ÉSTIAM en vue de permettre la transmission d’informations complémentaires ou personnalisées sur des programmes ou des offres de formation et/ou de permettre l’inscription en ligne à ces programmes. Elles sont conservées pendant 5 ans et sont destinées aux services marketing et commercial. Conformément à la loi « informatique et libertés », vous pouvez exercer votre droit d'accès aux données vous concernant et les faire rectifier en contactant{% endtrans %} : ÉSTIAM - <a href="mailto:info@estiam.com">info@estiam.com</a></small></p>
  186.               {% if captcha_enabled %}
  187.                 <div class="captcha-row mb-4 d-flex justify-content-center">
  188.                     <div class="g-recaptcha animate__animated" data-sitekey="{{captcha_key}}"></div>
  189.                 </div>
  190.               {% endif %}
  191.               <div class="notification-error mb-4 text-center text-danger font-weight-bold" style="display: none;"></div>
  192.               <div class="text-center form-submit mt-3">
  193.                 <button type="submit" id="btn-submit" class="link-gradient"><span class="font-weight-bold text-uppercase font-20">{% trans %}ENVOYER{% endtrans %}</span><i class="far fa-arrow-right"></i></button>
  194.               </div>
  195.             </div>
  196.           </div>
  197.         </div>
  198.       </div>
  199.     </div>
  200.   </form>
  201. </section>
  202. <div class="modal fade" id="thankYouModal" tabindex="-1" role="dialog" aria-labelledby="thankYouModalTitle" aria-hidden="true">
  203.   <div class="modal-dialog modal-dialog-centered" role="document">
  204.     <div class="modal-content">
  205.       <div class="modal-header">
  206.         <a href="{{ path('home') }}">
  207.           <img src="{{ asset('assets/images/logo.svg') }}" alt="Estiam">
  208.         </a>
  209.       </div>
  210.       <div class="modal-body">
  211.         <div class="text-center mb-4">
  212.           {% trans %}Nous vous confirmons la bonne réception de votre candidature à ÉSTIAM. Nous allons l'étudier rapidement afin de vous donner une réponse dans les plus brefs délais. Merci !{% endtrans %}<br/>
  213.           {% trans %}L'équipe ÉSTIAM{% endtrans %}
  214.         </div>
  215.         <div class="text-center">
  216.           <button type="button" class="common-btn" data-dismiss="modal">{% trans %}Fermer{% endtrans %}</button>
  217.         </div>
  218.       </div>
  219.     </div>
  220.   </div>
  221. </div>
  222. {% endblock %}
  223. {% block custom_javascripts %}
  224. <script type="text/javascript">
  225. function checkFileAvec(inputFile)
  226. {
  227.   if(inputFile[0].files[0].name.match(/.(pdf|docx|doc|jpg|jpeg|png)$/i))
  228.   {
  229.     var size = parseInt(inputFile[0].files[0].size) / 1024;
  230.     if(size > 5120){
  231.       return "Large file size. You can upload a max of 5MB";
  232.     }
  233.   }else{
  234.     return "Invalid file type. You can only upload PDF/Word file";
  235.   }
  236. }
  237. $(document).ready(function($){
  238.   var input = $('input.single-files');
  239.   input.each(function(event){
  240.     $('.curriculumVitae .fa-xmark').click(function (event) {
  241.       event.preventDefault();
  242.       event.stopPropagation();
  243.       $(this).val('')
  244.       $(this).removeClass('selected')
  245.       $(this).next('label .upload-file-name').html('')
  246.     })
  247.     $(this).change(function(event) {
  248.       let result = checkFileAvec($(this));
  249.       if(result){
  250.         $(this).val('');
  251.         showMessage(result);
  252.         return false;
  253.       }
  254.       $(this).addClass('selected');
  255.       $(this).next('label').find('.upload-file-name').html(event.target.files[0].name)
  256.     });
  257.   });
  258.   var current_input;
  259.   $('.fa-xmark').click(function (event) {
  260.     current_input = $(this).closest('.group-item').find('input[type=file]');
  261.     event.preventDefault();
  262.     event.stopPropagation();
  263.     current_input.val('');
  264.     current_input.removeClass('selected');
  265.   });
  266.   // Tham khao: https://codepen.io/scarulli/pen/bGGXdEZ
  267.   const dt = new DataTransfer();
  268.   $("input#other_files").change(function() {
  269.     var ele = document.getElementById($(this).attr('id'));
  270.     var result = ele.files;
  271.     for(var x = 0;x< result.length;x++){
  272.       var fle = result[x];
  273.       $("#output").append('<div class="file-desc has-file flex-1 d-flex align-items-center mt-1"><i class="fa-solid fa-paperclip-vertical text-orange mr-2"></i><span class="upload-file-name">' + fle.name + '</span><i class="far fa-xmark ml-3 cursor"></i></div>');           
  274.     }
  275.     for (let file of result) {
  276.       dt.items.add(file);
  277.     }
  278.     result = dt.files;
  279.     $('#output .fa-xmark').click(function(){
  280.       $(this).parent().remove();
  281.       for(let i = 0; i < dt.items.length; i++){
  282.         if(name === dt.items[i].getAsFile().name){
  283.           dt.items.remove(i);
  284.           continue;
  285.         }
  286.       }
  287.       document.getElementById('other_files').files = dt.files;
  288.     });
  289.   });
  290.   $('#submit-recruitmemt').on('submit', function (e) {
  291.       event.preventDefault();
  292.       let $button = $(this).find('#btn-submit');
  293.       loadButton($button);
  294.       {% if captcha_enabled %}
  295.         if (grecaptcha.getResponse().length == 0) {
  296.           showMessage('{% trans %}Veuillez vérifier le recaptcha{% endtrans %}');
  297.           return false;
  298.         }
  299.       {% endif %}
  300.       if(isChecked('.checkbox-theme-required')){
  301.         showMessage('{% trans %}Veuillez sélectionner sélectionnez les thématiques{% endtrans %}');
  302.         return false;
  303.       }
  304.       if(isChecked('.checkbox-campus-required')){
  305.         showMessage('{% trans %}Veuillez sélectionner campus{% endtrans %}');
  306.         return false;
  307.       }
  308.       if(requiredFile('cv_file') || requiredFile('letter_file')){
  309.         return false;
  310.       }
  311.       let formData = new FormData(this);
  312.       $.ajax({
  313.         url: "{{ path('recruitmemt.save') }}",
  314.         type: "POST",
  315.         dataType: 'json',
  316.         data : formData,
  317.         contentType: false,
  318.         processData: false,
  319.         success: function(result) {
  320.           if(result.status == 'success'){
  321.             resetForm();
  322.             $('#thankYouModal').modal();
  323.             removeLoadButton($button);
  324.           }else{
  325.             showMessage(result.errors.errorMessage);
  326.           }
  327.           grecaptcha.reset();
  328.         }
  329.       }).always(function () {
  330.         removeLoadButton($button)
  331.       });
  332.   });
  333. });
  334. function resetForm(){
  335.   $('#submit-recruitmemt').each(function(){
  336.     this.reset();
  337.     $('.fa-xmark').trigger('click');
  338.   });
  339. }
  340. </script>
  341. {% endblock %}