Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b473869726 | |||
| 53bcf6e02a | |||
| 2ccb5cf08a | |||
| f84d8ed73b | |||
| 22db9a6da4 | |||
| 1b3a0cb606 | |||
| 634fb412fe | |||
| 0a0db67654 | |||
| 7cc701eb1e | |||
| bd0cda922e | |||
| cdfb763466 | |||
| 57412e353b | |||
| 87b337a126 | |||
| 086d456746 | |||
| a2466d344f | |||
| 9c5dc1466b |
@@ -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 l’entreprise pour informer que l’offre d’emploi 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 n’arrive pas à recruter, pourquoi j’y 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, s’adapter pour assurer la pérennité de votre entreprise.
|
||||
J’entre sur une nouvelle dynamique. J’ouvre les portes de l’entreprise. Je casse les « on dit », les
|
||||
croyances. Je donne la parole aux salariés. J’innove ! Je m’adresse aux jeunes générations (Digital +
|
||||
vidéo). Je vais chercher des comportements (venez comme vous êtes) que je vais former puisqu’il n’y a
|
||||
plus d’école qui forme sur mon métier. Je me montre positivement aux personnes qui habitent en proximité
|
||||
de l’entreprise. 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 quelqu’un qui s’en occupe, votre vidéo sera
|
||||
surement vue sur YouTube (rappel : une vidéo ne vaut que si elle est vue). Talents Tube s’occupe 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
|
||||
l’apport de votre vidéo offre d’emploi. 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, c’est que vous recevez comme candidature des vidéos de motivation qui
|
||||
s’adressent directement à vous. C’est unique, engageant et vous allez gagner du temps pour sélectionner
|
||||
et à l’entretien d’embauche. 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 d’emploi » ? <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 l’entreprise)
|
||||
L’ADN 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 : l’entreprise avec sa marque employeur qui recrute par ses
|
||||
offres d’emploi.
|
||||
Dans une offre d’emploi, on présente le métier et l’entreprise par sa marque employeur.
|
||||
Et distinctes
|
||||
La Marque employeur c’est comment on vit l’entreprise ici, d’où elle vient, où elle va : tout cela avec
|
||||
la définition du sens individuellement et collectivement.
|
||||
Le métier c’est l’ensemble des compétences (savoir-faire et savoir être) pour réaliser une tâche précise
|
||||
dans un collectif pour faire grandir l’entreprise.
|
||||
Une offre d’emploi c’est une promesse d’engager un nouveau projet professionnel durable dans
|
||||
l’entreprise.
|
||||
</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. C’est surtout parce que vous aurez
|
||||
bien défini et montré vos attentes dans votre offre d’emploi, que ceux qui postuleront auront toutes les
|
||||
cartes pour vous dire : « c’est moi que vous recherchez ! ». Donc, vous aurez beaucoup moins de
|
||||
candidatures (gains de temps) et beaucoup plus d’excellents candidats (vous pourrez constituer votre
|
||||
vivier de compétences). Le plus de Talents Tube : l’entreprise conserve dans son espace recruteur les
|
||||
vidéos de motivation. C’est une belle opportunité lors de l’entretien professionnel annuel de revenir
|
||||
sur le projet du salarié avant qu’il entre dans l’entreprise.
|
||||
</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 c’est 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 l’entreprise.
|
||||
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 d’entreprise en allant chercher des professionnels qui vont
|
||||
travailler sur un scénario, des images de qualité, du son. On se crée une banque d’images valorisantes
|
||||
de l’entreprise qui pourront être utilisées pour d’autres 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 l’entreprise)
|
||||
L’ADN 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 : l’entreprise avec sa marque employeur qui recrute par ses
|
||||
offres d’emploi.
|
||||
Dans une offre d’emploi, on présente le métier et l’entreprise par sa marque employeur.
|
||||
Et distinctes
|
||||
La Marque employeur c’est comment on vit l’entreprise ici, d’où elle vient, où elle va : tout cela avec
|
||||
la définition du sens individuellement et collectivement.
|
||||
Le métier c’est l’ensemble des compétences (savoir-faire et savoir être) pour réaliser une tâche précise
|
||||
dans un collectif pour faire grandir l’entreprise.
|
||||
Une offre d’emploi c’est une promesse d’engager un nouveau projet professionnel durable dans
|
||||
l’entreprise.
|
||||
</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 n’y 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 n’y a plus d’avenir, Il
|
||||
faut s’engager à être différent pour servir vos clients et surtout pérenniser votre entreprise.
|
||||
Montrez votre différence d’entreprise. 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. L’ambiance, le collectif est différent. Mettez en avant tous ces avantages qui
|
||||
se sont mis en place au fil du temps. C’est 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 qu’ils ne vont pas faire l’effort 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 d’attractivité. L’authenticité des vidéos marque employeur et
|
||||
offre d’emploi 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 l’entreprise, 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 s’applique 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 d’ailleurs chaque
|
||||
territoire. Par l’image 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 c’est la vie que l’on propose sans fard (si on triche par
|
||||
la vidéo, cela se voit et produit des conséquences désastreuses durables).
|
||||
S’il n’y 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">
|
||||
L’offre de valeur globale des vidéos offre d’emploi + 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,
|
||||
d’innovation, de compréhension de l’entreprise et de son projet, d’autonomie, de force de proposition.
|
||||
L’ensemble 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 l’ensemble des messages
|
||||
transmis par l’entreprise 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 d’emploi.
|
||||
</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é qu’ils avaient des candidats sur Talents tube alors qu’ils 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 d’espaces sur les
|
||||
réseaux sociaux, tisser des partenariats de diffusion, ou s’attacher les services d’un 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">
|
||||
C’est dommage pour eux de ne pas présenter leur personnalité, leur motivation et ce qu’ils ont trouvé
|
||||
d’excellent pour leur parcours professionnel dans la vidéo d’offre d’emploi de l’entreprise. Sur Talents
|
||||
Tube, ils ont les coordonnées et le site internet de l’entreprise. Ils peuvent à loisir, après avoir vu
|
||||
l’offre d’emploi, envoyer leur CV papier. Ceux-ci arriveront sur la pile et seront, on l’espè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 d’offres d’emploi 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 d’emploi 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 d’emploi 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"> </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 d’emploi 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"> </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 -->
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -18136,7 +18136,7 @@ button:focus {
|
||||
Clients
|
||||
------------------------------------*/
|
||||
.u-clients {
|
||||
width: 5rem;
|
||||
width: 6rem;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 1.5 KiB |