Compare commits

...

16 Commits

Author SHA1 Message Date
llaniau b473869726 Merge branch 'V2.9.2' of https://git.e-declic.net/talents-tube/website into V2.9.2 2021-04-12 20:16:33 +02:00
llaniau 53bcf6e02a Bug 239 2021-04-12 20:12:25 +02:00
devtt 2ccb5cf08a Mise en commentaires FAQ 2021-04-12 14:59:55 +02:00
llaniau f84d8ed73b Bug date relance 2021-04-12 14:03:08 +02:00
llaniau 22db9a6da4 Bug inscription date relance 2021-04-12 12:59:51 +02:00
llaniau 1b3a0cb606 V2.9.1 2021-04-12 10:17:31 +02:00
llaniau 634fb412fe Mail auto (US 436) 2021-04-12 10:11:03 +02:00
llaniau 0a0db67654 US 436 2021-04-08 13:02:29 +02:00
llaniau 7cc701eb1e US 436 : Suite 2021-04-06 19:35:44 +02:00
llaniau bd0cda922e US 436 : RElance j+3 2021-04-06 14:41:38 +02:00
devtt cdfb763466 Modifications pages recruteurs Bénédicte (part 2) 2021-04-01 17:54:22 +02:00
devtt 57412e353b Modifications page d'accueil (Bénédicte) 2021-04-01 09:43:12 +02:00
llaniau 87b337a126 Init V2.9.1 pre prod 2021-03-30 15:31:25 +02:00
llaniau 086d456746 Desactiver nofollow 2021-03-30 09:54:34 +02:00
llaniau a2466d344f Batch candidature 520 2021-03-29 17:07:59 +02:00
llaniau 9c5dc1466b V2.8.3 2021-03-29 14:31:44 +02:00
35 changed files with 1688 additions and 218 deletions
@@ -6,3 +6,9 @@ SELECT id FROM "ad" WHERE competences::jsonb @> '{ "id1" : "libelle 1"}'::json
SELECT id FROM "ad" WHERE competences::jsonb ? 'id1' LIMIT 10;
SELECT competences::jsonb @> '{ "id1" : "libelle 1"}'::jsonb FROM "ad" WHERE id=1 LIMIT 1;
SELECT * FROM "ad" WHERE id = 1 or id=31 or id =29;
SELECT id, location->'gmap_address'->'geometry'->'location'->'lat', location->'gmap_address'->'geometry'->'location'->'lng' FROM "ad" LIMIT 100;
SELECT firstname, lastname, geoloc::json->0->'route' FROM "fos_user" wHERE email='laniau2@yahoo.fr' LIMIT 1000;
SELECT location::json->'gmap_address'->'formatted_address' FROM "ad" WHERE id=66 LIMIT 1000;
@@ -49,7 +49,7 @@
</div>
<div class="row">
<div class="col-xs-12">
<button class="btn btn-success" type="submit">Enregistrer</button>
<button class="btn btn-success" type="submit" onclick="envoyerMail()">Enregistrer</button>
</div>
</div>
{{ form_end(form) }} {% endblock %} {% block javascripts %}
@@ -70,4 +70,46 @@
}
}
});
function envoyerMail(){
if($("#ad_status").val()=="PUBLISHED"){
if(window.confirm("Souhaitez-vous envoyer un email au(x) utilisateur(s) de lentreprise pour informer que loffre demploi est en ligne sur Talents Tube ?")){
//envoi de mail
$.ajax({
//L'URL de la requête
url: "/app_dev.php/api/validerOffreMail?adId={{ ad.id }}" ,
method: "GET",
//La méthode d'envoi (type de requête)
//Le format de réponse attendu
dataType: "json",
})
//Ce code sera exécuté en cas de succès - La réponse du serveur est passée à done()
/*On peut par exemple convertir cette réponse en chaine JSON et insérer
* cette chaine dans un div id="res"*/
.done(function (response) {
console.log("Requête envoi mail suite validation offre done");
})
//Ce code sera exécuté en cas d'échec - L'erreur est passée à fail()
//On peut afficher les informations relatives à la requête et à l'erreur
.fail(function (error) {
console.log("Requête envoi mail suite validation offre fail");
console.log(error);
})
//Ce code sera exécuté que la requête soit un succès ou un échec
.always(function () {
console.log("Requête envoi mail suite validation offre effectuée");
});
}
}else{
}
}
</script> {% endblock %}
@@ -20,7 +20,7 @@
<thead>
<tr>
<th class="col-xs-2">Date de création</th>
<th>Référence TT</th>
<th>Référence TT.</th>
<th>Titre</th>
<th>Entreprise</th>
<th>Status</th>
@@ -0,0 +1,80 @@
{% extends 'admin/base_admin.html.twig' %}
{% block contentHeader %}
<h1>
Dashboard
<small>TalentsTube</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li>
{#<li class="active">Here</li>#}
</ol>
{% endblock %}
{% block content %}
<b>Relance J3</b><br>
<table id="media_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th width="15%">Id</th>
<th width="15%">Nom</th>
<th width="15%">Prénom</th>
<th width="15%">Mail</th>
<th width="15%">Annonce?</th>
<th width="15%">Mail Envoyé</th>
</tr>
</thead>
<tbody>
{% for u in listeUsersRelanceJ3 %}
<tr>
<td>{{ u.id }}</td>
<td>{{ u.nom }}</td>
<td>{{ u.prenom }}</td>
<td>{{ u.email }}</td>
<td>{{ u.annonce }}</td>
<td>X</td>
</tr>
{% endfor %}
{% if listeUsersRelanceJ3|length < 1 %}
<tr>
<td colspan="6">Aucune relance pour cette fois-ci</td>
</tr>
{% endif %}
</tbody>
</table>
<b>Relance J7</b><br>
<table id="media_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th width="15%">Id</th>
<th width="15%">Nom</th>
<th width="15%">Prénom</th>
<th width="15%">Mail</th>
<th width="15%">Annonce?</th>
<th width="15%">Mail Envoyé</th>
</tr>
</thead>
<tbody>
{% for u in listeUsersRelanceJ7 %}
<tr>
<td>{{ u.id }}</td>
<td>{{ u.nom }}</td>
<td>{{ u.prenom }}</td>
<td>{{ u.email }}</td>
<td>{{ u.annonce }}</td>
<td>X</td>
</tr>
{% endfor %}
{% if listeUsersRelanceJ7|length < 1 %}
<tr>
<td colspan="6">Aucune relance pour cette fois-ci</td>
</tr>
{% endif %}
</tbody>
</table>
{% endblock %}
@@ -13,6 +13,93 @@
{% endblock %}
{% block content %}
{# <b>Relance J3</b><br>
<table id="media_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th width="15%">Id</th>
<th width="15%">Nom</th>
<th width="15%">Prénom</th>
<th width="15%">Mail</th>
<th width="15%">Annonce?</th>
<th width="15%">Mail Envoyé</th>
</tr>
</thead>
<tbody>
{% for u in listeUsersRelanceJ3 %}
<tr>
<td>{{ u.id }}</td>
<td>{{ u.nom }}</td>
<td>{{ u.prenom }}</td>
<td>{{ u.email }}</td>
<td>{{ u.annonce }}</td>
<td>X</td>
</tr>
{% endfor %}
{% if listeUsersRelanceJ3|length < 1 %}
<tr>
<td colspan="6">Aucune relance pour cette fois-ci</td>
</tr>
{% endif %}
</tbody>
</table>
<b>Relance J7</b><br>
<table id="media_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th width="15%">Id</th>
<th width="15%">Nom</th>
<th width="15%">Prénom</th>
<th width="15%">Mail</th>
<th width="15%">Annonce?</th>
<th width="15%">Mail Envoyé</th>
</tr>
</thead>
<tbody>
{% for u in listeUsersRelanceJ7 %}
<tr>
<td>{{ u.id }}</td>
<td>{{ u.nom }}</td>
<td>{{ u.prenom }}</td>
<td>{{ u.email }}</td>
<td>{{ u.annonce }}</td>
<td>X</td>
</tr>
{% endfor %}
{% if listeUsersRelanceJ7|length < 1 %}
<tr>
<td colspan="6">Aucune relance pour cette fois-ci</td>
</tr>
{% endif %}
</tbody>
</table> #}
<b>Etat des annonces</b><br>
<table id="media_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th width="15%">Id</th>
<th width="15%">Entreprise</th>
<th width="15%">Titre de l'annonce</th>
<th width="15%">Nb de candidatures vidéo</th>
<th width="15%">Nb de candidatures récentes <br>(mois glissant)</th>
<th width="15%">Statut</th>
</tr>
</thead>
<tbody>
{% for a in ads %}
<tr>
<td>{{ a.id }}</td>
<td>{{ a.entreprise }}</td>
<td>{{ a.title }}</td>
<td>{{ a.nbAnswers }}</td>
<td>{{ a.nbAnswersRecentes }}</td>
<td>{{ a.statut }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
@@ -80,7 +80,7 @@
</span>
</a>
<ul class="treeview-menu">
<li><a href="{{ path('admin_batch_mailauto') }}">Mail auto <br>(US 436)</a></li>
<li><a href="{{ path('admin_batch_candidatures') }}">Statuts des anciennes candidatures <br>(US 520)</a></li>
<li><a href="{{ path('admin_batch_message') }}">Basculer les anciens messages <br>(US 200)</a></li>
<li><a href="{{ path('admin_batch_geoloc') }}">Transformer adresse Talent en geoloc <br>(US 489)</a></li>
@@ -19,7 +19,7 @@
{% if app.environment == "dev" %}
<meta name="robots" content="noindex,nofollow">
{% else %}
{# <meta name="robots" content="noindex,nofollow"> #}
<meta name="robots" content="noindex,nofollow">
{% endif %}
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
{% block meta %}
@@ -184,7 +184,7 @@
</div>
<div class="col-sm">
<span class="fs-12">30 derniers jours</span>
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecordsCompany }}
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecords-records30days.totalRecordsCompany }}
</h4>
</div>
</div>
@@ -1,18 +1,42 @@
<!-- Ils nous font confiance DEBUT -->
<div class="container space-2 space-3--lg accueilFondBlanc">
<div class=" text-center mx-md-auto mb-12">
<!-- Title -->
<h2 class="h3"> Ils nous font confiance</h2>
</div>
<div class="align-right justify-content-sm-center row text-center">
<div class="col-lg-9 col-xl-8">
<div class="row justify-content-lg-between">
<div class="w-md-80 w-lg-60 text-center mx-md-auto mb-9">
<!-- Title -->
<h2 class="h3">Ils ont trouvé leurs candidats avec Talents Tube</h2>
</div>
<div class="col-md-6 col-lg-5 order-md-2 mb-7 mb-md-0">
<!-- Review -->
<div class="media">
<div class="media-body">
<h4 class="h6 mb-0">Delphine F.</h4>
<p class="text-muted">"Je n'avais pratiquement plus de CV. Talents Tube est devenu l'outil de recrutement qui génère le plus de candidatures"</p>
</div>
</div>
<!-- End Review -->
<!-- Review -->
<div class="media">
<div class="media-body">
<h4 class="h6 mb-0">Emmanuelle G</h4>
<p class="text-muted">"Nous n'avions plus de CV papier et grâce à Talents Tube, nous avons recruté de nouveaux collaborateurs en préparation de commandes"</p>
</div>
</div>
<!-- End Review -->
<!-- Review -->
<div class="media">
<div class="media-body">
<h4 class="h6 mb-0">Adrien</h4>
<p class="text-muted">"Nous avons recruté grâce à la vidéo ! On a des personnes qui ont postulé et qui n'auraient pas postulé sans la vidéo."</p>
</div>
</div>
<!-- End Review -->
</div>
<!-- Video Block -->
<div class="col-md-6 order-md-1">
<div id="youTubeVideoPlayer" class="u-video-player mb-7">
<!-- Cover Image -->
<img class="img-fluid u-video-player__preview" src="/v2/png/recrutement-video-temoignage.jpg"
alt="Image">
<img class="img-fluid u-video-player__preview" src="/v2/png/recrutement-video-temoignage.jpg" alt="Image">
<!-- End Cover Image -->
<!-- Play Button -->
@@ -34,4 +58,5 @@
</div>
</div>
</div>
</div>
<!-- Ils nous font confiance FIN -->
@@ -0,0 +1,383 @@
<div class=" space-1-bottom accueilFondBlanc">
<div class="container space-2 ">
<div class="row mx-gutters-2 text-center">
<div class="col-lg-9">
<!-- Collapse -->
<div id="faqAccordionOne">
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingOne">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn p-3 collapsed"
data-toggle="collapse" data-target="#faqAccordionOneCollapseOne" aria-expanded="false"
aria-controls="faqAccordionOneCollapseOne">
Je narrive pas à recruter, pourquoi jy arriverais avec la vidéo ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseOne" class="collapse" aria-labelledby="faqAccordionOneHeadingOne"
data-parent="#faqAccordionOne" style="">
<div class="card-body card-collapse__body">
Il faut changer, sadapter pour assurer la pérennité de votre entreprise.
Jentre sur une nouvelle dynamique. Jouvre les portes de lentreprise. Je casse les « on dit », les
croyances. Je donne la parole aux salariés. Jinnove ! Je madresse aux jeunes générations (Digital +
vidéo). Je vais chercher des comportements (venez comme vous êtes) que je vais former puisquil ny a
plus d’école qui forme sur mon métier. Je me montre positivement aux personnes qui habitent en proximité
de lentreprise. Pour la 1ère fois, je dis (je le montre) : venez vivre et travailler chez nous.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Je publie déjà mes offres vidéo sur mon site, sur YouTube,… en quoi Talents Tube peut faire mieux ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Sur Talents Tube, vos vidéos seront vues par des candidats ou des potentiels relais qui vous ramèneront
des candidatures. Sur YouTube, ce sera par les fans de Youtubeurs. Dans les 2 cas, vous pourrez en plus
faire du business et rendre fiers vos salariés. Si vous avez quelquun qui sen occupe, votre vidéo sera
surement vue sur YouTube (rappel : une vidéo ne vaut que si elle est vue). Talents Tube soccupe de la
visibilité par ses savoirs en communication sur Talents Tube mais aussi sur YouTube.
Avec YouTube, les candidats vous enverront des CV papier et rejoindront la pile. Vous ne saurez même pas
que cela vient de YouTube. Avec Talents Tube, vous avez un suivi (un ROI de votre investissement) de
lapport de votre vidéo offre demploi. Si vous mettez votre vidéo sur un jobboard ce sera
obligatoirement un lien que les candidats ne verront pas. Sur Talents Tube, les talents voient votre
vidéo avant de postuler.
Le plus fort chez Talents Tube, cest que vous recevez comme candidature des vidéos de motivation qui
sadressent directement à vous. Cest unique, engageant et vous allez gagner du temps pour sélectionner
et à lentretien dembauche. Vous pouvez même faire des réponses négatives en vidéo pour soigner encore
plus votre marque employeur.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingThree">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseThree" aria-expanded="false"
aria-controls="faqAccordionOneCollapseThree">
Quelle différence entre une vidéo « marque employeur », « métier » et « offre demploi » ? <span
class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseThree" class="collapse" aria-labelledby="faqAccordionOneHeadingThree"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Elles sont liées ( et donnent toutes la parole en vidéo à ceux qui vivent lentreprise)
LADN de mon entreprise se décline en différent métiers réalisés par les salariés et pour certains nous
recrutons de nouveaux collaborateurs.
Les métiers sont réalisés dans un contexte : lentreprise avec sa marque employeur qui recrute par ses
offres demploi.
Dans une offre demploi, on présente le métier et lentreprise par sa marque employeur.
Et distinctes
La Marque employeur cest comment on vit lentreprise ici, doù elle vient, où elle va : tout cela avec
la définition du sens individuellement et collectivement.
Le métier cest lensemble des compétences (savoir-faire et savoir être) pour réaliser une tâche précise
dans un collectif pour faire grandir lentreprise.
Une offre demploi cest une promesse dengager un nouveau projet professionnel durable dans
lentreprise.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Comment je vais faire pour trier 100 vidéos de réponse à mon annonce ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Ne comparez pas avec les CV papier ! La vidéo génère tant de transparence que les candidats qui tentent
ou qui trichent avec les CV papier ne pourront pas le faire en vidéo. Cest surtout parce que vous aurez
bien défini et montré vos attentes dans votre offre demploi, que ceux qui postuleront auront toutes les
cartes pour vous dire : « cest moi que vous recherchez ! ». Donc, vous aurez beaucoup moins de
candidatures (gains de temps) et beaucoup plus dexcellents candidats (vous pourrez constituer votre
vivier de compétences). Le plus de Talents Tube : lentreprise conserve dans son espace recruteur les
vidéos de motivation. Cest une belle opportunité lors de lentretien professionnel annuel de revenir
sur le projet du salarié avant quil entre dans lentreprise.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Quand je recrute cest tout de suite ! pas le temps de faire une vidéo.
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Si vous ne pouvez pas attendre 2 jours pour recruter le bon collaborateur, sollicitez votre partenaire
intérim. Il sait faire et les candidats prêts à travailler, à essayer rapidement sont chez eux. Sinon,
vous définissez bien votre poste et vous allez chercher un ou deux collègues qui vont vous aider ou
témoigner. Vous organisez le lendemain 2 heures de tournage avec le meilleur smartphone de lentreprise.
Puis vous faites le montage ou vous contactez Talents Tube pour le faire. 3 jours près votre vidéo est
prête à être diffusée sur Talents Tube et des supports de communication.
Et pourquoi pas en faire un projet dentreprise en allant chercher des professionnels qui vont
travailler sur un scénario, des images de qualité, du son. On se crée une banque dimages valorisantes
de lentreprise qui pourront être utilisées pour dautres communications.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Mais la vidéo cela coûte Cher !?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Elles sont liées ( et donnent toutes la parole en vidéo à ceux qui vivent lentreprise)
LADN de mon entreprise se décline en différent métiers réalisés par les salariés et pour certains nous
recrutons de nouveaux collaborateurs.
Les métiers sont réalisés dans un contexte : lentreprise avec sa marque employeur qui recrute par ses
offres demploi.
Dans une offre demploi, on présente le métier et lentreprise par sa marque employeur.
Et distinctes
La Marque employeur cest comment on vit lentreprise ici, doù elle vient, où elle va : tout cela avec
la définition du sens individuellement et collectivement.
Le métier cest lensemble des compétences (savoir-faire et savoir être) pour réaliser une tâche précise
dans un collectif pour faire grandir lentreprise.
Une offre demploi cest une promesse dengager un nouveau projet professionnel durable dans
lentreprise.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
On cherche tous les mêmes candidats et il ny en a plus !
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Si vous n’êtes pas prêts à vendre votre entreprise (A quelle valeur ?) car il ny a plus davenir, Il
faut sengager à être différent pour servir vos clients et surtout pérenniser votre entreprise.
Montrez votre différence dentreprise. Chez vous, vous faites forcément le métier différemment que chez
votre concurrent. Chez vous, on apprend différemment et vous êtes prêts à former ceux qui sont motivés
pour apprendre, grandir. Lambiance, le collectif est différent. Mettez en avant tous ces avantages qui
se sont mis en place au fil du temps. Cest votre politique Ressources humaines (une des valeurs
essentielles de votre entreprise) qui va devenir attractive pour les talents mais aussi les clients, les
fournisseurs, les investisseurs ou les acteurs du territoire.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Dans nos métiers, les professionnels sont tellement recherchés quils ne vont pas faire leffort de
faire une candidature vidéo
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Il faut alors que vous fassiez un effort dattractivité. Lauthenticité des vidéos marque employeur et
offre demploi est surement une des meilleures voies. En utilisant Talents Tube, vous proposez un lien
unique, privilégié (grâce à la vidéo) avec le candidat pour son avenir dans une entreprise qui porte un
projet en accord avec le sien. Ne pensez-vous pas que ces talents tant recherchés ont la capacité de
choisir leur parcours professionnel pour du sens : vie intérêt du projet de lentreprise, du collectif
(avec rémunération en cohérence) -la relation avec le recruteur ?
La période COVID qui a apporté plus de digital, plus de vidéo et plus de sens doit inciter à travailler
le projet et le révéler en toute authenticité pour aller chercher des talents qui en feront de même pour
une relation durable pour un projet global.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
La vidéo ne sapplique que dans certains secteurs
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Chaque secteur, chaque entreprise, chaque collaborateur a ses spécificités comme dailleurs chaque
territoire. Par limage et/ou des témoignages (salariés mais aussi clients) on peut révéler nos atouts,
notre stratégie et notre distinction. La vidéo cest la vie que lon propose sans fard (si on triche par
la vidéo, cela se voit et produit des conséquences désastreuses durables).
Sil ny a pas de vidéos dans votre secteur, soyez le premier à franchir le pas pour vous, votre
entreprise, vos collaborateurs et votre métier ! Talents Tube est là pour vous guider.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwo">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwo" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwo">
Est-ce possible de demander aux candidats de répondre à plusieurs questions pour faire sa vidéo ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwo" class="collapse" aria-labelledby="faqAccordionOneHeadingTwo"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Loffre de valeur globale des vidéos offre demploi + vidéo marque employeur + vidéo territoire offre au
candidat une multitude d’éléments concrets pour se positionner en vidéo. En laissant au talent une
liberté de présentation, le recruteur découvre ses compétences en matière de structuration des pensées,
dinnovation, de compréhension de lentreprise et de son projet, dautonomie, de force de proposition.
Lensemble de celles-ci est essentiel dans la majorité des emplois. Si on pose des questions, on enferme
le candidat dans un cadre (scolaire) et on ne bénéficie pas du regard porté sur lensemble des messages
transmis par lentreprise en vidéo. Talents Tube conseille toutefois aux recruteurs qui souhaitent que
le candidat réponde à des questions en vidéo de les inclure en fin de vidéo offre demploi.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingEleven">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseEleven" aria-expanded="false"
aria-controls="faqAccordionOneCollapseEleven">
Suis-je sûr d'avoir des candidatures vidéo avec Talents tube ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseEleven" class="collapse" aria-labelledby="faqAccordionOneHeadingEleven"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Plusieurs entreprises, nous ont confirmé quils avaient des candidats sur Talents tube alors quils ne
recevaient plus de CV papier. Il peut arriver que des entreprises ne reçoivent pas de candidatures
vidéo. Talents Tube étudie alors précisément cette situation avec humilité (nous ne sommes pas non plus
des magiciens). Il faut peut-être communiquer différemment avec par exemple des achats despaces sur les
réseaux sociaux, tisser des partenariats de diffusion, ou sattacher les services dun cabinet de
recrutement.
</div>
</div>
</div>
<div class="card mb-2">
<div class="card-header card-collapse__header" id="faqAccordionOneHeadingTwelve">
<h5 class="mb-0">
<button
class="btn btn-sm btn-link btn-block d-flex justify-content-between card-collapse__btn collapsed p-3"
data-toggle="collapse" data-target="#faqAccordionOneCollapseTwelve" aria-expanded="false"
aria-controls="faqAccordionOneCollapseTwelve">
Les candidats qui ne veulent pas faire de vidéo peuvent ils me répondre avec une candidature classique
sur papier ?
<span class="card-collapse__btn-arrow">
<i class="fa fa-arrow-down small"></i>
</span>
</button>
</h5>
</div>
<div id="faqAccordionOneCollapseTwelve" class="collapse" aria-labelledby="faqAccordionOneHeadingTwelve"
data-parent="#faqAccordionOne">
<div class="card-body card-collapse__body">
Cest dommage pour eux de ne pas présenter leur personnalité, leur motivation et ce quils ont trouvé
dexcellent pour leur parcours professionnel dans la vidéo doffre demploi de lentreprise. Sur Talents
Tube, ils ont les coordonnées et le site internet de lentreprise. Ils peuvent à loisir, après avoir vu
loffre demploi, envoyer leur CV papier. Ceux-ci arriveront sur la pile et seront, on lespère,
consultés comme les autres. (Rappel : Talents Tube permet une mise en relation directe et humaine avec
le recruteur)
</div>
</div>
</div>
</div>
<!-- End Collapse -->
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,60 @@
<!-- Ils nous font confiance DEBUT -->
<div class="container accueilFondBlanc">
<div class="row justify-content-center text-center">
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-intermarche.jpg') }}" alt="Offres d'emploi intermarché">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-lactalis.jpg') }}" alt="Offres d'emploi Lactalis">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-groupe-mousset.jpg') }}" alt="Offres d'emploi Groupe Mousset">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-admr.jpg') }}" alt="Offres d'emploi ADMR">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-tpc-ouest-btp.jpg') }}" alt="Offres d'emploi TPC Ouest">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-eiffage.jpg') }}" alt="Offres d'emploi Eiffage">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-opticultures.jpg') }}" alt="Offres d'emploi Opticultures">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-mma-assurances.jpg') }}" alt="Offres d'emploi MMA assurances">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-actual.jpg') }}" alt="Offres d'emploi Actual">
</div>
<div class="col-4 col-md-2">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-jpa.jpg') }}" alt="Offres d'emploi JPA">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-groupe-rocher.jpg') }}" alt="Offres d'emploi Groupe Rocher">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-pro-fermetures.jpg') }}" alt="Offres d'emploi Pro Fermetures">
</div>
<div class="col-4 col-md-2 mb-8">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-top-selling.jpg') }}" alt="Offres d'emploi Top Selling">
</div>
<div class="col-4 col-md-2 mb-8 mb-md-0">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-medaviz.jpg') }}" alt="Offres d'emploi Medaviz">
</div>
<div class="col-4 col-md-2 mb-8 mb-md-0">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-faurecia.jpg') }}" alt="Offres d'emploi Faurecia">
</div>
<div class="col-4 col-md-2 mb-8 mb-md-0">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-francas.jpg') }}" alt="Offres d'emploi Les Francas">
</div>
<div class="col-4 col-md-2 mb-8 mb-md-0">
<img class="u-clients" src="{{ asset('v2/logos/recrutement-video-nachos.jpg') }}" alt="Offres d'emploi Nachos">
</div>
</div>
<p class="lead text-center"><strong>Ces secteurs qui recrutent déjà grâce à la vidéo :</strong><br>
Logistique et Transport > Services à la personne > BTP > Agriculture > Administration > Industrie > Commerce > Informatique > Automobile > Animation > Hôtellerie Restauration</p>
</div>
<!-- Ils nous font confiance FIN -->
@@ -2,7 +2,7 @@
<div class="gradient-overlay-half-dark-v3 bg-img-hero" style="background-image: url({{ asset(urlImage)}}); background-size:cover;">
<!-- Main Content -->
<div class="d-lg-flex align-items-lg-center height-85vh--lg">
<div class="d-lg-flex align-items-lg-center height-100vh--lg">
<div class="container space-2 space-0--lg mt-lg-8">
<div class="row justify-content-lg-between align-items-lg-center">
<div class="col-lg-5 mb-7 mb-lg-0">
@@ -0,0 +1,44 @@
<div class="accueilFondNoir">
<div class="container space-2">
<div class="card-deck d-block d-lg-flex card-lg-gutters-2">
<div class="card border-0 mb-3">
<!-- Works -->
<div class="card-body border border-bottom-0 rounded-top text-center p-5">
<h4 class="h5 mb-1">Vous avez déjà des vidéos ou un prestataire vidéo ?</h4>
<p class="mb-0">Vous pouvez les publier directement sur Talents Tube ! Profitez de vos supports pour les faire rayonner largement, vers vos futurs candidats</p>
</div>
<div class="card-footer text-center border rounded-bottom p-5">
<a class="btn btn-sm btn-primary btn-wide" href="https://recruteur.talentstube.com/register/">Inscription</a>
</div>
<!-- End Works -->
</div>
<div class="card border-0 mb-3">
<!-- Works -->
<div class="card-body border border-bottom-0 rounded-top text-center p-5">
<h4 class="h5 mb-1">Vous voulez réaliser des vidéos vous-même ?</h4>
<p class="mb-0">Créez des vidéos doffres demploi simplement grâce à nos conseils</p>
</div>
<div class="card-footer text-center border rounded-bottom p-5">
<a class="btn btn-sm btn-primary btn-wide" href="https://recruteur.talentstube.com/offre-emploi-originale">En savoir plus</a>
</div>
<!-- End Works -->
</div>
<div class="card border-0 mb-3">
<!-- Works -->
<div class="card-body border border-bottom-0 rounded-top text-center p-5">
<h4 class="h5 mb-1">Vous cherchez un prestataire pour produire vos vidéos RH ?</h4>
<p class="mb-0">Contactez-nous, nous saurons vous mettre en relation avec des prestataires qualifiés et expérimentés.</p>
</div>
<div class="card-footer text-center border rounded-bottom p-5">
<a class="btn btn-sm btn-primary btn-wide" href="https://blog.talentstube.com/contact/">Contactez-nous</a>
</div>
<!-- End Works -->
</div>
</div>
</div>
</div>
</div>
@@ -1,19 +1,24 @@
<div class="accueilFondBleute">
<div class="container">
<div class="w-md-80 w-lg-60 text-center mx-md-auto">
<h2 class="h3">Adoptez dès maintenant le recrutement vidéo</h2>
<p class="lead">Plus personnel, plus impliquant et plus authentique</p>
<div class="container">
<div class="w-md-80 w-lg-60 text-center mx-md-auto">
<h2 class="h3">Adoptez dès maintenant le recrutement vidéo</h2>
<p class="lead">Plus personnel, plus impliquant et plus authentique</p>
</div>
<div class="bg-gray-100 shadow-lg rounded">
<!-- Individual -->
<div id="pricingIndividual" data-target-group="idPricing">
<div class="js-slick-carousel u-slick u-slick--gutters"
data-slides-show="3"
data-slides-scroll="1"
data-pagi-classes="d-lg-none text-center u-slick__pagination mt-7 mb-0"
data-responsive='[{
<div class="bg-white shadow-lg rounded card-body p-5">
<h5 class="text-center">Offre : abonnement mensuel sans engagement, comprenant :</h5>
<ul>
<li> Administration autonome de votre espace recruteur (page entreprise, publication et renouvellement des
vidéos, statistiques,…)</li>
<li>Visibilité de vos vidéos sur le site Talents Tube pour attirer vos futurs candidats</li>
<li>Boost visibilité de vos vidéos sur les réseaux Talents Tube (YouTube, Facebook, Linkedin, Newsletter...)
</li>
<li>Réception de candidatures vidéo et gestion en ligne</li>
</ul>
<!-- Individual -->
<div id="pricingIndividual" data-target-group="idPricing">
<div class="js-slick-carousel u-slick u-slick--gutters" data-slides-show="4" data-slides-scroll="1"
data-pagi-classes="d-lg-none text-center u-slick__pagination mt-7 mb-0" data-responsive='[{
"breakpoint": 1200,
"settings": {
"slidesToShow": 3
@@ -34,117 +39,90 @@
"slidesToShow": 1
}
}]'>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Jusqu'à 3 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
99€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Pack découverte<br>1 vidéo</h4>
<span class="d-block">
<span class="display-4 text-dark">
Gratuit
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 1 à 3 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
<span class="d-block text-secondary font-size-14">pendant 1 mois</span>
</span>
</header>
<!-- End Header -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Pack 3 vidéos <br>renouvelables</h4>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">De 4 à 9 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
199€
</span>
<span class="d-block text-secondary font-size-14">par mois HT</span>
<span class="d-block">
<span class="display-4 text-dark">
99€
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 4 à 9 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Plus de 10 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
Sur devis
</span>
<span class="d-block text-secondary font-size-14">&nbsp;</span>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Pack 10 vidéos <br>renouvelables</h4>
<span class="d-block">
<span class="display-4 text-dark">
199€
</span>
</header>
<!-- End Header -->
<!-- Content -->
<div class="card-body p-5">
<ul class="list-unstyled mb-4">
<li class="font-size-14 py-2">- Création page entreprise</li>
<li class="font-size-14 py-2">- Accès espace recruteur</li>
<li class="font-size-14 py-2">- Mise en ligne de 10 vidéos
offre demploi et Marque employeur</li>
<li class="font-size-14 py-2">- Réception des candidatures en vidéo</li>
<li class="font-size-14 py-2">- Gestion des candidatures</li>
<li class="font-size-14 py-2">- Échanges vidéos avec les candidats</li>
<li class="font-size-14 py-2">- Suivi Statistiques</li>
</ul>
</div>
<!-- End Content -->
</div>
<!-- End Pricing -->
<span class="d-block text-secondary font-size-14">par mois HT</span>
</span>
</header>
<!-- End Header -->
</div>
<!-- End Pricing -->
</div>
<div class="js-slide">
<!-- Pricing -->
<div class="card border-0">
<!-- Header -->
<header class="card-header text-center p-5">
<h4 class="h4">Pack PRO<br>Plus de 10 vidéos</h4>
<span class="d-block">
<span class="display-4 text-dark">
<a class="btn btn-sm btn-primary" href="#signupModal" role="button"
data-modal-target="#signupModal" data-overlay-color="#151b26">Connexion recruteurs</a>
</span>
<span class="d-block text-secondary font-size-14">&nbsp</span>
</span>
</header>
<!-- End Header -->
</div>
<!-- End Pricing -->
</div>
</div>
<!-- End Individual -->
</div>
<!-- End Individual -->
</div>
<!-- End Pricing Section -->
</div>
<!-- End Pricing Section -->
</div>
</div>
@@ -0,0 +1,44 @@
<div class="col-md-6 order-md-1 space-2-top">
<!-- Slick Carousel - Testimonials -->
<div class="js-slick-carousel u-slick slick-initialized slick-slider slick-dotted" data-fade="true" data-autoplay="true" data-speed="7500" data-pagi-classes="u-slick__pagination justify-content-start mt-7">
<div class="slick-list draggable"><div class="slick-track" style="opacity: 1; width: 1620px;"><div class="js-slide slick-slide" data-slick-index="0" aria-hidden="true" style="width: 540px; position: relative; left: 0px; top: 0px; z-index: 998; opacity: 0; height: auto; transition: opacity 500ms ease 0s;" tabindex="-1" role="tabpanel" id="slick-slide00" aria-describedby="slick-slide-control00">
<!-- Testimonials -->
<blockquote class="lead mb-5">"I love Space! I love the ease of use, I love the fact that I have total creative freedom. The template is really nice and offers quite a large set of options. It's beautiful and the coding is done quickly and seamlessly."</blockquote>
<div class="media">
<img class="u-avatar rounded-circle mr-3" src="../../assets/img/100x100/img1.jpg" alt="Image Description">
<div class="media-body">
<h3 class="h6 mb-0">Maria Muszynska</h3>
<span class="text-secondary">Senior developer at <a href="#" tabindex="-1">Google</a></span>
</div>
</div>
<!-- End Testimonials -->
</div><div class="js-slide slick-slide" data-slick-index="1" aria-hidden="true" style="width: 540px; position: relative; left: -540px; top: 0px; z-index: 998; opacity: 0; height: auto; transition: opacity 500ms ease 0s;" tabindex="-1" role="tabpanel" id="slick-slide01" aria-describedby="slick-slide-control01">
<!-- Testimonials -->
<blockquote class="lead mb-5">"We are incredibly impressed with Space and how well it supports its customers with amazing products and services. One simple subscription gives you access to all our tools, plus so much more."</blockquote>
<div class="media">
<img class="u-avatar rounded-circle mr-3" src="../../assets/img/100x100/img4.jpg" alt="Image Description">
<div class="media-body">
<h3 class="h6 mb-0">Mark McManus</h3>
<span class="text-secondary">Software engineer at <a href="#" tabindex="-1">Slack</a></span>
</div>
</div>
<!-- End Testimonials -->
</div><div class="js-slide slick-slide slick-current slick-active" data-slick-index="2" aria-hidden="false" style="width: 540px; position: relative; left: -1080px; top: 0px; z-index: 999; opacity: 1; height: auto;" tabindex="0" role="tabpanel" id="slick-slide02" aria-describedby="slick-slide-control02">
<!-- Testimonials -->
<blockquote class="lead mb-5">"One simple subscription gives you access to all our tools, plus so much more. Space brings so many benefits to any team that does anything following a process. It is the easiest way for teams to build cool things work—and get results."</blockquote>
<div class="media">
<img class="u-avatar rounded-circle mr-3" src="../../assets/img/100x100/img14.jpg" alt="Image Description">
<div class="media-body">
<h3 class="h6 mb-0">Ella Brown</h3>
<span class="text-secondary">Head of IT department at <a href="#" tabindex="0">Apple</a></span>
</div>
</div>
<!-- End Testimonials -->
</div></div></div>
<ul class="js-pagination u-slick__pagination justify-content-start mt-7" style="" role="tablist"><li class="" role="presentation"><span></span></li><li role="presentation" class=""><span></span></li><li role="presentation" class="slick-active slick-current"><span></span></li></ul></div>
<!-- End Slick Carousel - Testimonials -->
</div>
@@ -36,11 +36,14 @@
{% include 'defaultv2/accueil/blocDifficultes.html.twig' %}
{% include 'defaultv2/accueil/blocMieuxQueDuTexte.html.twig' %}
{% include 'defaultv2/accueil/blocConfiance.html.twig' %}
{% include 'defaultv2/accueil/blocLogo.html.twig' %}
{% include 'defaultv2/accueil/blocLogoSecteurs.html.twig' %}
{% include 'defaultv2/accueil/blocNotreMission.html.twig' %}
{% include 'defaultv2/accueil/blocPourquoiNous.html.twig' %}
{% include 'defaultv2/accueil/blocRecap.html.twig' %}
<!--include 'defaultv2/accueil/blocFAQ.html.twig'-->
{% include 'defaultv2/accueil/blocTarifs.html.twig' %}
{% include 'defaultv2/accueil/blocRealisation.html.twig' %}
{% include 'defaultv2/accueil/blocPourquoiNous.html.twig' %}
{% include 'defaultv2/accueil/blocAction.html.twig' %}
@@ -191,10 +194,7 @@ with {
{% block javascripts %}
{{ parent() }}
<script>
// initialization of google map
{# function initMap() {
$.HSCore.components.HSGMap.init('.js-g-map');
} #}
function demanderDiag(formulaire){
if(formulaire=="formDemandeDiag1"){
nomprenom = $("#nomPrenomForm1").val();
@@ -1,12 +1,12 @@
<!-- Plateforme DEBUT -->
<div class=" accueilFondBlanc">
<div class="">
<div class=" ">
<!-- Video Section -->
<div class="">
<div class="gradient-overlay-half-dark-v1 bg-img-hero"
style="background-image: url({{ asset('v2/img/1920x800/tutoriel-video-de-motivation-cv-video.jpg')}});">
style="background-image: url({{ asset('v2/img/1920x800/tutoriel-video-de-motivation-cv-video.jpg') }});">
<div class="d-lg-flex align-items-lg-center flex-lg-column">
<div class="container space-3 space-4-top--lg">
<!-- Title -->
+1 -1
View File
@@ -80,7 +80,7 @@ twig:
globals:
push_public_key: "%push_params.public_key%"
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
version: '2.8.2'
version: '2.9.1'
@@ -8,11 +8,162 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Message;
use Symfony\Component\HttpFoundation\RedirectResponse;
//MAILJET
use AppBundle\Entity\Mailjet;
// use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
use DateTime;
use DateInterval;
class BatchController extends Controller
{
/**
* @Route("/admin/config/batch/mailauto", name="admin_batch_mailauto")
*/
public function mailAutoAction()
{
//recuperer les messages qui ont un comment
$em = $this->getDoctrine()->getManager();
// requete pour les relance J+3
$usersJ3 = $em->getRepository('AppBundle:User')->findUsersRelance("j3");
// requete pour les relance J+7
$usersJ7 = $em->getRepository('AppBundle:User')->findUsersRelance("j7");
$listeUsersRelanceJ3 = array();
$listeUsersRelanceJ7 = array();
//relance J+7 avec stockage des talents à qui on a envoyé un mail
$listeUsersRelanceJ3 = $this->relanceTalents($usersJ3, "J3");
//relance J+7 avec stockage des talents à qui on a envoyé un mail
$listeUsersRelanceJ7 = $this->relanceTalents($usersJ7, "J7");
return $this->render('admin/batch_mailauto.html.twig', [
"listeUsersRelanceJ3" => $listeUsersRelanceJ3,
"listeUsersRelanceJ7" => $listeUsersRelanceJ7,
]);
}
private function relanceTalents($users, $type){
$listeUsersRelance = array();
$em = $this->getDoctrine()->getManager();
foreach ($users as $u) {
$arrayAdId = $pieces = explode(":", $u->getCompany()->getDescription());
$adId = null;
if(count($arrayAdId)>1){
$adId= intval($arrayAdId[1]);
}
//dump($adId);
//Envoi d'un mail de premiere relance
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
$contactMail = $u->getEmail();
// if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
// $contactMail = "l.laniau@talentstube.com";
// }
$annonceTitle =null;
if($adId){
// recuperer le title de l'annonce
$ad = $em->getRepository('AppBundle:Ad')->find($adId);
$annonceTitle= $ad->getAlias();
if($type=="J3"){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Lancez-vous, votre futur emploi vous attend" ,
'MJ-TemplateID' =>2725372 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
'intituleOffre' => $ad->getTitle(),
'lienOffre' =>$ad->getAlias(),
'entreprise' => $ad->getCompany()->getBrandName()
]
]
]
];
}else{
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Besoin d'aide pour réaliser votre candidature vidéo ?" ,
'MJ-TemplateID' =>2725437 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
'intituleOffre' => $ad->getTitle(),
'lienOffre' =>$ad->getAlias(),
'entreprise' => $ad->getCompany()->getBrandName()
]
]
]
];
}
}else{
if($type=="J3"){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Vous ne savez pas comment postuler ?" ,
'MJ-TemplateID' =>2716934 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
]
]
]
];
}else{
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Besoin d'aide pour réaliser une candidature vidéo ?" ,
'MJ-TemplateID' =>2725599 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
]
]
]
];
}
}
//TODO mettre un flag pour le mail de relance J+3. Mettre la date du jour
if($type=="J3"){
$u->setDatePremiereRelance(new Datetime());
}else{
$u->setDateDeuxiemeRelance(new Datetime());
}
$em->persist($u);
$em->flush();
//$response = $mj->post(Resources::$Email, ['body' => $body]);
//$response->success() && var_dump($response->getData());
$listeUsersRelance[]=array(
'id' => $u->getId(),
'nom' => $u->getLastname(),
'prenom' => $u->getFirstname(),
'email' => $u->getEmail(),
'annonce' => $annonceTitle
);
}
return $listeUsersRelance;
}
/**
* @Route("/admin/config/batch/message", name="admin_batch_message")
@@ -87,6 +238,7 @@ class BatchController extends Controller
$zipCode="";
$city="";
$country="";
$address="";
if($addr && $addr['billing']){
$addr1 = $addr['billing'];
@@ -213,7 +365,7 @@ class BatchController extends Controller
foreach ($messages as $m) {
$answer = $m->getAnswer();
if(!$answer->getStatusReponse() ){
if(!$answer->getStatusReponse() || $answer->getStatusReponse()=="A_TRAITER"){
$answer->setStatusReponse("CONTACTE");
$em->persist($answer);
$em->flush();
@@ -4,7 +4,15 @@ namespace AppBundle\Controller\Admin;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
//MAILJET
use AppBundle\Entity\Mailjet;
// use AppBundle\Entity\Response;
use AppBundle\Entity\Resources;
use AppBundle\Entity\Config;
use AppBundle\Entity\Client;
use DateTime;
use DateInterval;
class DefaultController extends Controller
{
@@ -13,7 +21,184 @@ class DefaultController extends Controller
*/
public function adminAction()
{
return $this->render('admin/dashboard.html.twig', array());
$em = $this->getDoctrine()->getManager();
// requete pour les relance J+3
// $usersJ3 = $em->getRepository('AppBundle:User')->findUsersRelance("j3");
// // requete pour les relance J+7
// $usersJ7 = $em->getRepository('AppBundle:User')->findUsersRelance("j7");
// $listeUsersRelanceJ3 = array();
// $listeUsersRelanceJ7 = array();
// //relance J+7 avec stockage des talents à qui on a envoyé un mail
// $listeUsersRelanceJ3 = $this->relanceTalents($usersJ3, "J3");
// //relance J+7 avec stockage des talents à qui on a envoyé un mail
// $listeUsersRelanceJ7 = $this->relanceTalents($usersJ7, "J7");
//Stats sur les annonces publiée et closes
$adsClose = $em->getRepository('AppBundle:Ad')->findByStatus("CLOSED", array('id' => 'DESC'));
$adsPublish = $em->getRepository('AppBundle:Ad')->findByStatus("PUBLISHED", array('id' => 'DESC'));
//$ads = $em->getRepository('AppBundle:Ad')->findUsersRelance("j7");
$ads=array();
$date = new DateTime();
$date->sub(new DateInterval('P30D'));
foreach ($adsPublish as $ad){
$nbAnswers=0;
$nbAnswersRecente=0;
foreach ($ad->getAnswers() as $a){
if($a->getStatus()!="DRAFT"){
$nbAnswers++;
if($a->getSendtime() > $date){
$nbAnswersRecente++;
}
}
}
$ads[] = array("id"=>$ad->getId(), "title"=>$ad->getTitle(), "entreprise"=>$ad->getCompany()->getBrandname(), "nbAnswers"=>$nbAnswers,"nbAnswersRecentes"=>$nbAnswersRecente, "statut"=> "Publié");
}
foreach ($adsClose as $ad){
$nbAnswers=0;
$nbAnswersRecente=0;
foreach ($ad->getAnswers() as $a){
if($a->getStatus()!="DRAFT"){
$nbAnswers++;
if($a->getSendtime() > $date){
$nbAnswersRecente++;
}
}
}
$ads[] = array("id"=>$ad->getId(), "title"=>$ad->getTitle(), "entreprise"=>$ad->getCompany()->getBrandname(), "nbAnswers"=>$nbAnswers,"nbAnswersRecentes"=>$nbAnswersRecente, "statut"=> "Close");
}
return $this->render('admin/dashboard.html.twig', array(
// "listeUsersRelanceJ3" => $listeUsersRelanceJ3,
// "listeUsersRelanceJ7" => $listeUsersRelanceJ7,
"ads" => $ads
));
}
private function relanceTalents($users, $type){
$listeUsersRelance = array();
$em = $this->getDoctrine()->getManager();
foreach ($users as $u) {
$arrayAdId = $pieces = explode(":", $u->getCompany()->getDescription());
$adId = null;
if(count($arrayAdId)>1){
$adId= intval($arrayAdId[1]);
}
//dump($adId);
//Envoi d'un mail de premiere relance
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
$contactMail = $u->getEmail();
// if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
// $contactMail = "l.laniau@talentstube.com";
// }
$annonceTitle =null;
if($adId){
// recuperer le title de l'annonce
$ad = $em->getRepository('AppBundle:Ad')->find($adId);
$annonceTitle= $ad->getAlias();
if($type=="J3"){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Lancez-vous, votre futur emploi vous attend" ,
'MJ-TemplateID' =>2725372 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
'intituleOffre' => $ad->getTitle(),
'lienOffre' =>$ad->getAlias(),
'entreprise' => $ad->getCompany()->getBrandName()
]
]
]
];
}else{
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Besoin d'aide pour réaliser votre candidature vidéo ?" ,
'MJ-TemplateID' =>2725437 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
'intituleOffre' => $ad->getTitle(),
'lienOffre' =>$ad->getAlias(),
'entreprise' => $ad->getCompany()->getBrandName()
]
]
]
];
}
}else{
if($type=="J3"){
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Vous ne savez pas comment postuler ?" ,
'MJ-TemplateID' =>2716934 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
]
]
]
];
}else{
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Besoin d'aide pour réaliser une candidature vidéo ?" ,
'MJ-TemplateID' =>2725599 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'prenom' => $u->getFirstname(),
]
]
]
];
}
}
//TODO mettre un flag pour le mail de relance J+3. Mettre la date du jour
if($type=="J3"){
$u->setDatePremiereRelance(new Datetime());
}else{
$u->setDateDeuxiemeRelance(new Datetime());
}
$em->persist($u);
$em->flush();
//$response = $mj->post(Resources::$Email, ['body' => $body]);
//$response->success() && var_dump($response->getData());
$listeUsersRelance[]=array(
'id' => $u->getId(),
'nom' => $u->getLastname(),
'prenom' => $u->getFirstname(),
'email' => $u->getEmail(),
'annonce' => $annonceTitle
);
}
return $listeUsersRelance;
}
/**
@@ -355,7 +355,7 @@ class CompanyController extends FOSRestController
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
$contactMail = "contact@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
@@ -383,6 +383,53 @@ class CompanyController extends FOSRestController
return new JsonResponse(array('retour' => "true"));
}
/**
* @Rest\Get(path="/api/validerOffreMail", name="api_validerOffreMail")
* @Rest\View
*/
public function validerOffreMailAction(Request $request)
{
//APPEL de l'api Pole emploi pour recuperer Token
$adId=$request->query->get('adId');
$em = $this->getDoctrine()->getManager();
$ad = $em->getRepository('AppBundle:Ad')->findOneBy(array('id' => $adId));
$users = $ad->getCompany()->getUsers();
$retour ="résultat ";
foreach ($users as $user){
$mj = new Client($this->getParameter('mailjet_public'), $this->getParameter('mailjet_private'));
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "contact@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
'FromName' => "Talents Tube",
'Subject' => "Votre offre d'emploi vidéo est en ligne ",
'MJ-TemplateID' =>2659410 ,
'MJ-TemplateLanguage' => true,
'Recipients' => [
[
'Email' => $contactMail,
'Vars' => [
'nomRecruteur' => $user->getLastname(),
'prenomRecruteur' => $user->getFirstname(),
'offre' => $ad->getTitle(),
'lienOffreEmploi' => $ad->getAlias(),
]
]
]
];
$response = $mj->post(Resources::$Email, ['body' => $body]);
$retour .= $user->getFirstname()." ".$user->getId()." OK ";
}
return new JsonResponse(array('retour' => $retour));
}
/**
* @Rest\Get(path="/api/demanderDiagnostic", name="api_demanderDiagnostic")
@@ -402,7 +449,7 @@ class CompanyController extends FOSRestController
// $link = $this->generateUrl('company_answer_show', array('id' => $existAnswer->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
$contactMail = "contact@talentstube.com";
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
$contactMail = "dev@talentstube.com";
$contactMail = "contact@talentstube.com";
}
$body = [
'FromEmail' => "noreply@talentstube.io",
@@ -23,6 +23,7 @@ use AppBundle\Form\CareersType;
use AppBundle\Form\FormationsType;
use AppBundle\Form\LanguagesType;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use \DateTime;
class SecurityController extends FOSRestController
{
@@ -129,6 +130,91 @@ class SecurityController extends FOSRestController
return new JsonResponse($status);
}
/**
* @Rest\Get(path="/api/test", name="api_test")
* @Rest\View
*/
public function test(Request $request)
{
$status = array('status' => "success", 'message' => "Ok2");
// $curl = curl_init();
// curl_setopt($curl, CURLOPT_HTTPHEADER, array(
// 'Content-Type: application/json',
// 'Accept : application/json',
// ));
$url="https://recruteur.talentstube.com/api/getDetailAppelation?q=10944";
// curl_setopt_array($curl, array(
// CURLOPT_URL => "http://localhost/app_dev.php/api/getDetailAppelation?q=10944",
// CURLOPT_RETURNTRANSFER => true,
// CURLOPT_ENCODING => "",
// CURLOPT_MAXREDIRS => 10,
// CURLOPT_TIMEOUT => 0,
// CURLOPT_FOLLOWLOCATION => true,
// CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
// CURLOPT_CUSTOMREQUEST => "GET",
// CURLOPT_HTTPHEADER => array(
// "Accept: application/json",
// ),
// ));
//curl_setopt_array();
// create & initialize a curl session
// Optional Authentication:
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
));
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
),
));
$response = curl_exec($curl);
$parsed_json = json_decode($response);
$competencesDeBase = $parsed_json->{'competencesDeBase'};
//dump($competencesDeBase);
echo "competencesDeBase!!2 --------------- <br>";
foreach ($parsed_json->{'competencesDeBase'} as $json){
echo( $json->{'code'})." / ";
echo( $json->{'libelle'});
echo "<br>";
}
echo "<br>";
foreach ($parsed_json->{'groupesCompetencesSpecifiques'} as $json){
foreach ($json->{'competences'} as $json2){
echo( $json2->{'code'})." / ";
echo( $json2->{'libelle'});
echo "<br>";
}
}
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
//return new JsonResponse($status);
}
/**
* @Rest\post(path="/api/update_user", name="api_update_user")
* @Rest\View
@@ -148,55 +234,109 @@ class SecurityController extends FOSRestController
else{
$phoneTalent = "";
}
if ($request->get('address1')){
$address1Talent = htmlspecialchars($request->get('address1'));
}
else{
$address1Talent = "";
}
// if ($request->get('address1')){
// $address1Talent = htmlspecialchars($request->get('address1'));
// }
// else{
// $address1Talent = "";
// }
if ($request->get('address2')){
$address2Talent = htmlspecialchars($request->get('address2'));
}
else{
$address2Talent = "";
}
// if ($request->get('address2')){
// $address2Talent = htmlspecialchars($request->get('address2'));
// }
// else{
// $address2Talent = "";
// }
if ($request->get('zipCode')){
$zipTalent = htmlspecialchars($request->get('zipCode'));
}
else{
$zipTalent = "";
}
// if ($request->get('zipCode')){
// $zipTalent = htmlspecialchars($request->get('zipCode'));
// }
// else{
// $zipTalent = "";
// }
if ($request->get('city')){
$cityTalent = htmlspecialchars($request->get('city'));
// if ($request->get('city')){
// $cityTalent = htmlspecialchars($request->get('city'));
// }
// else{
// $cityTalent = "";
// }
// if ($request->get('country')){
// $countryTalent = htmlspecialchars($request->get('country'));
// }
// else{
// $countryTalent = "";
// }
$titleTalent = htmlspecialchars($request->get('currentJob'));
if ($request->get('geoloc')){
$geoloc = htmlspecialchars($request->get('geoloc'));
}else{
$geoloc ="";
}
else{
$cityTalent = "";
if ($request->get('street_number')){
$street_number = htmlspecialchars($request->get('street_number'));
}else{
$street_number ="";
}
if ($request->get('route')){
$route = htmlspecialchars($request->get('route'));
}else{
$route ="";
}
if ($request->get('locality')){
$locality = htmlspecialchars($request->get('locality'));
}else{
$locality ="";
}
if ($request->get('administrative_area_level_2')){
$administrative_area_level_2 = htmlspecialchars($request->get('administrative_area_level_2'));
}else{
$administrative_area_level_2 ="";
}
if ($request->get('administrative_area_level_1')){
$administrative_area_level_1 = htmlspecialchars($request->get('administrative_area_level_1'));
}else{
$administrative_area_level_1 ="";
}
if ($request->get('country')){
$countryTalent = htmlspecialchars($request->get('country'));
$country = htmlspecialchars($request->get('country'));
}else{
$country ="";
}
else{
$countryTalent = "";
}
$titleTalent = htmlspecialchars($request->get('currentJob'));
$geoloc = htmlspecialchars($request->get('geoloc'));
$street_number = htmlspecialchars($request->get('street_number'));
$route = htmlspecialchars($request->get('route'));
$locality = htmlspecialchars($request->get('locality'));
$administrative_area_level_2 = htmlspecialchars($request->get('administrative_area_level_2'));
$administrative_area_level_1 = htmlspecialchars($request->get('administrative_area_level_1'));
$country = htmlspecialchars($request->get('country'));
$postal_code = htmlspecialchars($request->get('postal_code'));
$formatted_address = str_replace('"', '', $request->get('formatted_address'));
$lat = stripslashes($request->get('lat'));
$lng = stripslashes($request->get('lng'));
//
if ($request->get('postal_code')){
$postal_code = htmlspecialchars($request->get('postal_code'));
}else{
$postal_code ="";
}
if ($request->get('formatted_address')){
$formatted_address = str_replace('"', '', $request->get('formatted_address'));
}else{
$formatted_address ="";
}
if ($request->get('lat')){
$lat = stripslashes($request->get('lat'));
}else{
$lat ="";
}
if ($request->get('lng')){
$lng = stripslashes($request->get('lng'));
}else{
$lng ="";
}
$appellationId="";
$appellationLibelle="";
$competences =null;
$codeRome=null;
$newLinkedin = htmlspecialchars($request->get('linkedin'));
$newTwitter = htmlspecialchars($request->get('twitter'));
@@ -217,35 +357,100 @@ class SecurityController extends FOSRestController
$array = Array ();
// \"$formatted_address
if($formatted_address!=""){
$array[] = Array (
"street_number" => $street_number,
"route" => $route,
"administrative_area_level_2" => $administrative_area_level_2,
"administrative_area_level_1" => $administrative_area_level_1,
"country" => $country,
"locality" => $locality,
"postal_code" => $postal_code,
"formatted_address" => $formatted_address,
"lat" => stripslashes($lat),
"lng" => stripslashes($lng)
);
$array[] = Array (
"street_number" => $street_number,
"route" => $route,
"administrative_area_level_2" => $administrative_area_level_2,
"administrative_area_level_1" => $administrative_area_level_1,
"country" => $country,
"locality" => $locality,
"postal_code" => $postal_code,
"formatted_address" => $formatted_address,
"lat" => stripslashes($lat),
"lng" => stripslashes($lng)
);
$usr->setGeoloc($array);
}
$usr->setGeoloc($array);
$talent->setPhoneTalent($phoneTalent);
$companyManager->updateTalent($usr);
//$talent->setPhoneTalent($phoneTalent);
$billing = array(
'address1' => $address1Talent,
'address2' => $address2Talent,
'postcode' => $zipTalent,
'city' => $cityTalent,
'country' => $countryTalent,
);
$addrs['billing'] = $billing;
$talent->setAddresses($addrs);
// $billing = array(
// 'address1' => $address1Talent,
// 'address2' => $address2Talent,
// 'postcode' => $zipTalent,
// 'city' => $cityTalent,
// 'country' => $countryTalent,
// );
// $addrs['billing'] = $billing;
// $talent->setAddresses($addrs);
if ($request->get('appellationId')){
$appellationId = $request->get('appellationId');
$appellationLibelle = $request->get('appellationLibelle');
$url="https://recruteur.talentstube.com/api/getDetailAppelation?q=".$appellationId;
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Accept : application/json',
));
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
),
));
$detailMetier = curl_exec($curl);
$parsed_json = json_decode($detailMetier);
$codeRome = $parsed_json->{'metier'}->{'code'};
//dump($competencesDeBase);
//echo "competencesDeBase!!2 --------------- <br>";
foreach ($parsed_json->{'competencesDeBase'} as $json){
//echo( $json->{'code'})." / ";
//echo( $json->{'libelle'});
$competences[] = Array (
intval($json->{'code'}) => $json->{'libelle'}
);
//echo "<br>";
}
//echo "<br>";
foreach ($parsed_json->{'groupesCompetencesSpecifiques'} as $json){
foreach ($json->{'competences'} as $json2){
//echo( $json2->{'code'})." / ";
//echo( $json2->{'libelle'});
//echo "<br>";
$competences[] = Array (
intval($json2->{'code'}) => $json2->{'libelle'}
);
}
}
$err = curl_error($curl);
if (!$err)
{
}
curl_close($curl);
}
$usr->setAppellationId($appellationId);
$usr->setAppellationLibelle($appellationLibelle);
$usr->setCompetences($competences);
$usr->setCodeRome($codeRome);
$companyManager->updateTalent($usr);
$status = array('status' => "success!!!!!!!!!!!!!!!!!!");
@@ -14,6 +14,7 @@ use JMS\Serializer\Annotation\Groups;
use JMS\Serializer\Annotation\Type;
use AppBundle\Utils\Traits\CareerJsonTrait;
use \DateTime;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
@@ -213,7 +214,7 @@ class User extends BaseUser
/**
* @var int
*
* @ORM\Column(name="appellationId", type="integer", nullable=true)
* @ORM\Column(name="appellation_id", type="integer", nullable=true)
*
*/
private $appellationId;
@@ -221,7 +222,7 @@ class User extends BaseUser
/**
* @var string
*
* @ORM\Column(name="appellationLibelle", type="text", nullable=true)
* @ORM\Column(name="appellation_libelle", type="text", nullable=true)
*
*/
private $appellationLibelle;
@@ -229,7 +230,7 @@ class User extends BaseUser
/**
* @var string
*
* @ORM\Column(name="codeRome", type="text", nullable=true)
* @ORM\Column(name="code_rome", type="text", nullable=true)
*
*/
private $codeRome;
@@ -241,6 +242,20 @@ class User extends BaseUser
*/
private $competences;
/**
* @var \DateTime
*
* @ORM\Column(name="date_premiere_relance", type="datetime", length=255, nullable=true, options={"default" : "2021-01-01"})
*/
private $datePremiereRelance;
/**
* @var \DateTime
*
* @ORM\Column(name="date_deuxieme_relance", type="datetime", length=255, nullable=true, options={"default" : "2021-01-01"})
*/
private $dateDeuxiemeRelance;
/***********************
* Constructor
***********************/
@@ -257,6 +272,8 @@ class User extends BaseUser
$this->products = new ArrayCollection();
$this->recommendations = new ArrayCollection();
$this->sendedRecommendations = new ArrayCollection();
$this->datePremiereRelance = null;
$this->dateDeuxiemeRelance = null;
}
/***********************
@@ -471,8 +488,12 @@ class User extends BaseUser
if($this->getCompany()->getType()){
$type=$this->getCompany()->getType();
}
}
}$formatted_address ="";
if($this->getGeoloc()){
if($this->getGeoloc()[0]){
$formatted_address = $this->getGeoloc();
}
}
$card = array(
"firstname" => $this->getFirstname(),
"lastname" => $this->getLastname(),
@@ -493,7 +514,12 @@ class User extends BaseUser
"type" => $type,
"currentJob" => $this->getCompany()->getExtra()["titleTalent"],
"geoloc" => $this->getGeoloc(),
"formattedAddress" => $formatted_address,
"website" => $this->getCompany()->getWebsite(),
"appellationId" => $this->getAppellationId(),
"appellationLibelle" => $this->getAppellationLibelle(),
"codeRome" => $this->getCodeRome(),
"competences" => $this->getCompetences(),
);
return $card;
}
@@ -1388,4 +1414,53 @@ class User extends BaseUser
{
return $this->competences;
}
/**
* Set datePremiereRelance.
*
* @param \DateTime|null $datePremiereRelance
*
* @return User
*/
public function setDatePremiereRelance($datePremiereRelance = null)
{
$this->datePremiereRelance = $datePremiereRelance;
return $this;
}
/**
* Get datePremiereRelance.
*
* @return \DateTime|null
*/
public function getDatePremiereRelance()
{
return $this->datePremiereRelance->format('d/m/Y');
}
/**
* Set dateDeuxiemeRelance.
*
* @param \DateTime|null $dateDeuxiemeRelance
*
* @return User
*/
public function setDateDeuxiemeRelance($dateDeuxiemeRelance = null)
{
$this->dateDeuxiemeRelance = $dateDeuxiemeRelance;
return $this;
}
/**
* Get dateDeuxiemeRelance.
*
* @return \DateTime|null
*/
public function getDateDeuxiemeRelance()
{
return $this->dateDeuxiemeRelance->format('d/m/Y');
}
}
@@ -398,11 +398,33 @@ class AnswerRepository extends AbstractRepository
->createQueryBuilder('a')
->select(['a'])
->where('a.comment IS NOT NULL');
$answers = $qb->getQuery()->getResult();
return $answers;
}
public function findUsersRelanceJ3()
{
$qb = $this
->createQueryBuilder('a')
->select('a', 'u', 'c')
->leftjoin('a.user', 'u')
->join('u.company', 'c')
->where('u.roles LIKE :roleT')
->andWhere('u.enabled = true')
// ->andWhere('c.cTime > CURRENT_TIMESTAMP()')
// ->andWhere('u.datePremiereRelance <> :dateInit')
// ->andWhere('u.dateDeuxiemeRelance <> :dateInit')
->andWhere('u.datePremiereRelance is NULL')
->andWhere('c.cTime <= :begin')
->setParameter('roleT', '%ROLE_TALENT%')
->setParameter('begin', new \DateTime('-3 days'));
// ->setParameter('dateInit', new \DateTime('2021-01-01'));
;
return $qb->getQuery()->getResult();
}
}
@@ -33,7 +33,6 @@ class MessageRepository extends \Doctrine\ORM\EntityRepository
->select('m', 'a')
->join('m.answer', 'a')
->where('m.status <> :status')
->andWhere('a.comment is null')
->setParameter(':status', 'DRAFT')
;
@@ -70,9 +70,45 @@ class UserRepository extends EntityRepository
return $qb->getQuery()->getResult();
}
public function findUsersRelance($type)
{
$qb = $this
->createQueryBuilder('u')
->select('u', 'c', 'a')
->join('u.company', 'c')
->leftjoin('u.answers', 'a')
->where('u.roles LIKE :roleT')
->andWhere('u.enabled = true')
->andWhere('a.id is NULL');
if($type=="j3"){
$qb->andWhere('u.datePremiereRelance is NULL');
}else{
$qb->andWhere('u.datePremiereRelance is not NULL');
$qb->andWhere('u.dateDeuxiemeRelance is NULL');
}
//->andWhere('u.datePremiereRelance <> :dateInit')
$qb->andWhere('c.cTime <= :begin')
->andWhere('c.presentationVideo is NULL')
->setParameter('roleT', '%ROLE_TALENT%');
if($type=="j3"){
$qb->setParameter('begin', new \DateTime('-3 days'));
}else{
$qb->setParameter('begin', new \DateTime('-7 days'));
}
//->setParameter('dateInit', new \DateTime('2021-01-01'));
//presentationVideo
;
return $qb->getQuery()->getResult();
}
public function findUserAvecAdresse()
{
$qb = $this->_em->createQueryBuilder();
$qb->select('u', 'c')
->from($this->_entityName, 'u')
+1 -1
View File
@@ -18136,7 +18136,7 @@ button:focus {
Clients
------------------------------------*/
.u-clients {
width: 5rem;
width: 6rem;
margin-left: auto;
margin-right: auto;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB