Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2c41f2aa02 | |||
| ef50bfddff | |||
| 029d86649a | |||
| 24becf66c3 | |||
| 43d0852075 | |||
| 81c548bd00 |
@@ -22,7 +22,8 @@
|
||||
<th>ID</th>
|
||||
<th>Titre</th>
|
||||
<th>Utilisateur</th>
|
||||
<th>Status</th>
|
||||
<th>Annonce?</th>
|
||||
<th>Date de réponse</th>
|
||||
<th>action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -30,11 +31,12 @@
|
||||
<tbody>
|
||||
{% for m in medias %}
|
||||
<tr>
|
||||
<td>{{ m.id }}</td>
|
||||
<td>{{ m.title }}</td>
|
||||
<td>{{ m.creator.firstname }} {{ m.creator.lastname }}</td>
|
||||
<td>{{ m.mediaid }}</td>
|
||||
<td><a href="{{ chemin }}{{ m.original_url }}" target="_blank">{{ m.title }}</a></td>
|
||||
<td>{{ m.firstname }} {{ m.lastname }} - ({{ m.email }}) </td>
|
||||
<td>{% if m.answerid %}({{ m.adtitle }}){% else %}<b>Vidéo orpheline</b>{% endif %}</td>
|
||||
<td>
|
||||
<span class="label pull-right bg-orange">{{ m.status }}</span>
|
||||
<span class="label pull-right bg-orange">{{ m.sendtime }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ path('admin_video_moderation',{'id':m.id}) }}">
|
||||
@@ -67,9 +69,11 @@
|
||||
{"targets": 0, "searchable": true, "orderable": true},
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 3, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 4, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
]
|
||||
{"targets": 3, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
{"targets": 5, "searchable": false, "orderable": false, "className": "text-center"},
|
||||
],
|
||||
"order": [[ 0, "desc" ]]
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<tr>
|
||||
<td data-order="{{ talent.cTime|date('U') }}">{{ talent.cTime|date('d/m/Y') }}</td>
|
||||
<td>
|
||||
{{ user.firstname }} {{ user.lastname }}
|
||||
{{ user.firstname }} {{ user.lastname }} - {% if talent.extra["phoneTalent"] is defined %} (Tel : {{ talent.extra["phoneTalent"] }}) {% endif %}
|
||||
</td>
|
||||
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
|
||||
<td>
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% if answers|length == 0 %}
|
||||
{% if spontaneous|length == 0 %}
|
||||
<tr><th colspan="3" class="text-center">Aucune candidature pour le moment</th></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
|
||||
@@ -50,13 +50,229 @@
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
document.location.href="/entreprise/me/profil";
|
||||
document.location.href = "/entreprise/me/profil";
|
||||
</script>
|
||||
{# {{ render("/entreprise/me/profil") }} #}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% include 'company/ad_table_listing.html.twig' with {'ads':ads} %}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- START JUMBOTRON -->
|
||||
<div class="jumbotron" data-pages="parallax">
|
||||
<div class=" container-fluid container-fixed-lg sm-p-l-0 sm-p-r-0">
|
||||
<div class="inner">
|
||||
<!-- START BREADCRUMB -->
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="/entreprise/me/">Accueil</a></li>
|
||||
</ol>
|
||||
<!-- END BREADCRUMB -->
|
||||
<div class="row">
|
||||
<div class="col-xl-12 col-lg-12 ">
|
||||
<!-- START card -->
|
||||
<div class="card card-transparent">
|
||||
<div class="card-header ">
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<a class="btn-square" target="_self" href="{{ path('company_ad_create') }}">
|
||||
<button aria-label=""
|
||||
class="btn btn-primary btn-cons">{{ 'ad.company.add.label'|trans }}</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END card -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END JUMBOTRON -->
|
||||
|
||||
|
||||
|
||||
<!-- START CONTAINER FLUID -->
|
||||
<!-- START CONTAINER FLUID -->
|
||||
<div class=" container-fluid container-fixed-lg bg-white">
|
||||
<!-- START card -->
|
||||
<div class="card card-transparent">
|
||||
<div class="card-header ">
|
||||
<div class="card-title">Statistiques</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-xl-12 col-xlg-12">
|
||||
<div class="col-md-12 m-b-10" style="display:flex;">
|
||||
<!-- Nombre de candidatures vidéo - START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-1">
|
||||
<div class="container-xs-height">
|
||||
<!--full-height-->
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Nombre total de
|
||||
candidats</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card"><a class="bold no-margin p-b-5 text-card" href="{{ path('company_answer_list') }}">{{nbAnswersSended}}</a></h3>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">Nouveaux candidats</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin"><a class="bold no-margin" href="{{ path('company_answer_list') }}">+{{nbAnswersSended}}</a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="col-sm-5">
|
||||
<div class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+48</h4>
|
||||
</div>
|
||||
</div>-->
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
<!-- Nombre de visite page entreprise vidéo - START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card m-r-15 widget-loader-bar card-header card-background-2">
|
||||
<div class="container-xs-height">
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Visites de la page
|
||||
entreprise</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card">{{ records.totalRecordsCompany }}</h3>
|
||||
</div>
|
||||
<div class="col-sm-5 vertical-border">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">7 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin">+{{ records7days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
|
||||
<!-- Nombre de visites global offres d'emploi --START WIDGET D3 widget_graphTileFlat-->
|
||||
<div class="widget-8 card no-margin widget-loader-bar card-header card-background-3">
|
||||
<div class="container-xs-height">
|
||||
<div class="">
|
||||
<!--row-xs-height -->
|
||||
<div class="col-xs-height col-top">
|
||||
<div class="">
|
||||
<!--card-header top-left top-right -->
|
||||
<div class="card-title text-card">
|
||||
<span class="font-montserrat fs-11 all-caps">Vues globales des offres
|
||||
d’emploi</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-xs-height">
|
||||
<div class="col-xs-height col-top relative">
|
||||
<div class="row full-height">
|
||||
<div class="col-sm-12 text-card">
|
||||
<h3 class="bold no-margin p-b-5 text-card">{{ records.totalRecords-records.totalRecordsCompany }}</h3>
|
||||
</div>
|
||||
<div class="col-sm-5 vertical-border">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">7 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin">+{{ records7days.totalRecords-records7days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<div
|
||||
class="p-l-0 full-height d-flex flex-column justify-content-between text-card">
|
||||
<p class="small m-t-5 m-b-0">
|
||||
<span class="fs-12 ">30 derniers jours</span>
|
||||
</p>
|
||||
<h4 class="bold no-margin" style="opacity:0.75">+{{ records30days.totalRecords-records30days.totalRecordsCompany }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="widget-8-chart line-chart" data-line-color="white" data-points="true" data-point-color="warning" data-stroke-width="2">
|
||||
</div>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END WIDGET -->
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!--class="col-lg-8 sm-p-b-10 md-p-b-10"-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<!-- END card -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -65,178 +281,192 @@
|
||||
{# <script src="{{ asset('/js/vendors/Chart.bundle.min.js') }}"></script> #}
|
||||
<script type="text/javascript">
|
||||
var currentMonth = '{{ "now"|date("m") }}';
|
||||
var arrayRecords;
|
||||
{# var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords; #}
|
||||
var arrayRecords; {
|
||||
#
|
||||
var ctx, myChart, arrayCurrentsLabel, arrayCurrentsAdsValues, arrayCurrentsCompanyValues, donughtRecords;#
|
||||
}
|
||||
var sumVisitsAds = 0;
|
||||
var sumCompanyValues = 0;
|
||||
|
||||
{# function loadChartData() {
|
||||
setArrayValues();
|
||||
myChart.update();
|
||||
myDoughnutChart.update();
|
||||
} #}
|
||||
|
||||
{# function getChartData(date1, date2) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{{ path("company_ajax_dashboard") }}',
|
||||
data: 'date1=' + date1 + '&date2=' + date2,
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
arrayRecords = data.lineRecords;
|
||||
donughtRecords = data.donughtRecords;
|
||||
myDoughnutChart.data.datasets[0].data = donughtRecords;
|
||||
loadChartData();
|
||||
$('.fa-refresh').hide();
|
||||
},
|
||||
error: function (data) {
|
||||
$('.fa-refresh').hide();
|
||||
}
|
||||
});
|
||||
} #}
|
||||
|
||||
{# document.addEventListener("DOMContentLoaded", function (event) {
|
||||
$('.fa-refresh').hide();
|
||||
getChartData(0, 0);
|
||||
configDatePicker = {
|
||||
applyBtnClass: 'btn btn-default',
|
||||
format: 'DD-MM-YYYY',
|
||||
separator: ' au ',
|
||||
endDate: new Date(),
|
||||
maxDays: 365
|
||||
}
|
||||
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
|
||||
$('.fa-refresh').show();
|
||||
var month1 = obj.date1.getMonth();
|
||||
var day1 = obj.date1.getDate();
|
||||
var year1 = obj.date1.getFullYear();
|
||||
var month2 = obj.date2.getMonth();
|
||||
var day2 = obj.date2.getDate();
|
||||
var year2 = obj.date2.getFullYear();
|
||||
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
|
||||
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
|
||||
getChartData(date1, date2);
|
||||
});
|
||||
$('.apply-btn').attr('value', 'Valider');
|
||||
}); #}
|
||||
|
||||
{# function setArrayValues() {
|
||||
arrayCurrentsLabel = [];
|
||||
arrayCurrentsAdsValues = [];
|
||||
arrayCurrentsCompanyValues = [];
|
||||
arrayRecords['labels'].forEach(function (element, index) {
|
||||
var date = element.split("-");
|
||||
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
|
||||
arrayCurrentsLabel.push(dateAffiche);
|
||||
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
|
||||
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
|
||||
});
|
||||
myChart.data.labels = arrayCurrentsLabel;
|
||||
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
|
||||
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
|
||||
|
||||
if (arrayCurrentsAdsValues.length > 0) {
|
||||
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumVisitsAds = 0;
|
||||
}
|
||||
if (arrayCurrentsCompanyValues.length > 0) {
|
||||
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumCompanyValues = 0;
|
||||
}
|
||||
|
||||
$('.countVisitsAds').html(sumVisitsAds);
|
||||
$('.countVisitsCompany').html(sumCompanyValues);
|
||||
{
|
||||
#
|
||||
function loadChartData() {
|
||||
setArrayValues();
|
||||
myChart.update();
|
||||
myDoughnutChart.update();
|
||||
}#
|
||||
}
|
||||
|
||||
var dataLine = {
|
||||
datasets: [{
|
||||
label: "Nombre de visite d'annonce par jour",
|
||||
fill: false,
|
||||
fontColor: "rgba(39,139,231,1)",
|
||||
backgroundColor: "rgba(39,139,231,1)",
|
||||
borderColor: "rgba(39,139,231,1)"
|
||||
}, {
|
||||
label: "Nombre de visite de votre page entreprise",
|
||||
fill: false,
|
||||
fontColor: "#F9C339",
|
||||
backgroundColor: "#F9C339",
|
||||
borderColor: "#F9C339"
|
||||
}]
|
||||
};
|
||||
{
|
||||
#
|
||||
function getChartData(date1, date2) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: '{{ path("company_ajax_dashboard") }}',
|
||||
data: 'date1=' + date1 + '&date2=' + date2,
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
arrayRecords = data.lineRecords;
|
||||
donughtRecords = data.donughtRecords;
|
||||
myDoughnutChart.data.datasets[0].data = donughtRecords;
|
||||
loadChartData();
|
||||
$('.fa-refresh').hide();
|
||||
},
|
||||
error: function (data) {
|
||||
$('.fa-refresh').hide();
|
||||
}
|
||||
});
|
||||
}#
|
||||
}
|
||||
|
||||
var ctx = document.getElementById("nb_visits");
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: dataLine,
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Date'
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0
|
||||
},
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Valeur'
|
||||
}
|
||||
}]
|
||||
{
|
||||
#
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
$('.fa-refresh').hide();
|
||||
getChartData(0, 0);
|
||||
configDatePicker = {
|
||||
applyBtnClass: 'btn btn-default',
|
||||
format: 'DD-MM-YYYY',
|
||||
separator: ' au ',
|
||||
endDate: new Date(),
|
||||
maxDays: 365
|
||||
}
|
||||
}
|
||||
});
|
||||
$('#choiceMonth').dateRangePicker(configDatePicker).bind('datepicker-apply', function (event, obj) {
|
||||
$('.fa-refresh').show();
|
||||
var month1 = obj.date1.getMonth();
|
||||
var day1 = obj.date1.getDate();
|
||||
var year1 = obj.date1.getFullYear();
|
||||
var month2 = obj.date2.getMonth();
|
||||
var day2 = obj.date2.getDate();
|
||||
var year2 = obj.date2.getFullYear();
|
||||
var date1 = (month1 + 1) + "/" + day1 + "/" + year1 + " 00:00:01";
|
||||
var date2 = (month2 + 1) + "/" + day2 + "/" + year2 + " 23:59:59";
|
||||
getChartData(date1, date2);
|
||||
});
|
||||
$('.apply-btn').attr('value', 'Valider');
|
||||
});#
|
||||
}
|
||||
|
||||
var dataDonught = {
|
||||
labels: [
|
||||
"Visites de talents",
|
||||
"Visites d'entreprises",
|
||||
"Visites d'internautes non inscrit"
|
||||
],
|
||||
datasets: [{
|
||||
data: donughtRecords,
|
||||
backgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
{
|
||||
#
|
||||
function setArrayValues() {
|
||||
arrayCurrentsLabel = [];
|
||||
arrayCurrentsAdsValues = [];
|
||||
arrayCurrentsCompanyValues = [];
|
||||
arrayRecords['labels'].forEach(function (element, index) {
|
||||
var date = element.split("-");
|
||||
var dateAffiche = date[2] + "-" + date[1] + "-" + date[0];
|
||||
arrayCurrentsLabel.push(dateAffiche);
|
||||
arrayCurrentsAdsValues.push(arrayRecords['datasetsAd'][index]);
|
||||
arrayCurrentsCompanyValues.push(arrayRecords['datasetsCompany'][index]);
|
||||
});
|
||||
myChart.data.labels = arrayCurrentsLabel;
|
||||
myChart.data.datasets[0].data = arrayCurrentsAdsValues;
|
||||
myChart.data.datasets[1].data = arrayCurrentsCompanyValues;
|
||||
|
||||
if (arrayCurrentsAdsValues.length > 0) {
|
||||
sumVisitsAds = arrayCurrentsAdsValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumVisitsAds = 0;
|
||||
}
|
||||
if (arrayCurrentsCompanyValues.length > 0) {
|
||||
sumCompanyValues = arrayCurrentsCompanyValues.reduce(function (memo, val) {
|
||||
let value = val || 0;
|
||||
if (value != null) {
|
||||
return memo + value;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
sumCompanyValues = 0;
|
||||
}
|
||||
|
||||
$('.countVisitsAds').html(sumVisitsAds);
|
||||
$('.countVisitsCompany').html(sumCompanyValues);
|
||||
}
|
||||
|
||||
var dataLine = {
|
||||
datasets: [{
|
||||
label: "Nombre de visite d'annonce par jour",
|
||||
fill: false,
|
||||
fontColor: "rgba(39,139,231,1)",
|
||||
backgroundColor: "rgba(39,139,231,1)",
|
||||
borderColor: "rgba(39,139,231,1)"
|
||||
}, {
|
||||
label: "Nombre de visite de votre page entreprise",
|
||||
fill: false,
|
||||
fontColor: "#F9C339",
|
||||
backgroundColor: "#F9C339",
|
||||
borderColor: "#F9C339"
|
||||
}]
|
||||
};
|
||||
|
||||
var ctx = document.getElementById("nb_visits");
|
||||
var myChart = new Chart(ctx, {
|
||||
type: 'line',
|
||||
data: dataLine,
|
||||
options: {
|
||||
legend: {
|
||||
display: false
|
||||
},
|
||||
scales: {
|
||||
xAxes: [{
|
||||
display: true,
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Date'
|
||||
}
|
||||
}],
|
||||
yAxes: [{
|
||||
ticks: {
|
||||
min: 0
|
||||
},
|
||||
scaleLabel: {
|
||||
display: true,
|
||||
labelString: 'Valeur'
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var dataDonught = {
|
||||
labels: [
|
||||
"Visites de talents",
|
||||
"Visites d'entreprises",
|
||||
"Visites d'internautes non inscrit"
|
||||
],
|
||||
hoverBackgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
]
|
||||
}]
|
||||
};
|
||||
var ctxDonught = document.getElementById("donught_visits");
|
||||
var myDoughnutChart = new Chart(ctxDonught, {
|
||||
type: 'doughnut',
|
||||
data: dataDonught,
|
||||
options: {
|
||||
legend: {
|
||||
display: false,
|
||||
},
|
||||
animation: {
|
||||
animateScale: true
|
||||
datasets: [{
|
||||
data: donughtRecords,
|
||||
backgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
],
|
||||
hoverBackgroundColor: [
|
||||
"#FF6384",
|
||||
"#36A2EB",
|
||||
"#FFCE56"
|
||||
]
|
||||
}]
|
||||
};
|
||||
var ctxDonught = document.getElementById("donught_visits");
|
||||
var myDoughnutChart = new Chart(ctxDonught, {
|
||||
type: 'doughnut',
|
||||
data: dataDonught,
|
||||
options: {
|
||||
legend: {
|
||||
display: false,
|
||||
},
|
||||
animation: {
|
||||
animateScale: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}); #}
|
||||
});#
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -80,7 +80,7 @@ twig:
|
||||
globals:
|
||||
push_public_key: "%push_params.public_key%"
|
||||
fairlane_cookie_consent: '@fairlane_cookie_consent.twig'
|
||||
version: '2.5.1'
|
||||
version: '2.5.4'
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,10 +24,15 @@ class MediaController extends Controller
|
||||
public function adminVideoModerationListAction()
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$medias = $em->getRepository('AppBundle:Media')->findByStatus('TO_MODERATE');
|
||||
|
||||
$medias = $em->getRepository('AppBundle:Media')->getMedias();
|
||||
if ($this->container->get( 'kernel' )->getEnvironment() == "dev") {
|
||||
$chemin="../../../../uploads/videos/";
|
||||
}else{
|
||||
$chemin="../../../uploads/videos/";
|
||||
}
|
||||
return $this->render('admin/media_list_moderation.html.twig', array(
|
||||
'medias' => $medias,
|
||||
'chemin' => $chemin,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -36,9 +36,27 @@ class CompanyController extends Controller
|
||||
$stats = $this->get("app.stats_manager");
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$ads = $em->getRepository('AppBundle:Ad')->findBy(array('company' => $this->getUser()->getCompany()));
|
||||
$arrayDate['dateBegin'] = new \DateTime('now -7 Day');
|
||||
$arrayDate['dateEnd'] = new \DateTime('now');
|
||||
$records7days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
|
||||
//dump($records7days);
|
||||
$arrayDate['dateBegin'] = new \DateTime('now -30 Day');
|
||||
$records30days = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), $arrayDate);
|
||||
//dump($records30days);
|
||||
$records = $stats->getCompanyDashboard($this->getUser()->getCompany()->getId(), null);
|
||||
//dump($records);
|
||||
$answersSended = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'SENDED');
|
||||
$answersDraft = $em->getRepository('AppBundle:Answer')->getAnswerByCompanyStatus($this->getUser()->getCompany()->getId(), 'DRAFT');
|
||||
$nbAnswersSended =count($answersSended);
|
||||
$nbAnswersDraft =count($answersDraft);
|
||||
|
||||
return $this->render('company/dashboard.html.twig', [
|
||||
'ads' => $ads,
|
||||
'records7days' => $records7days,
|
||||
'records30days' => $records30days,
|
||||
'records' => $records,
|
||||
'nbAnswersSended' => $nbAnswersSended,
|
||||
'nbAnswersDraft' => $nbAnswersDraft,
|
||||
'arrayByAds' => $records['arrayByAds'],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -407,6 +407,8 @@ class User extends BaseUser
|
||||
$linkedin="";
|
||||
$twitter="";
|
||||
if($this->getCompany()->getExtra()){
|
||||
//19/01 j'ai eneleve le initExtra de ExtraJsonTrait
|
||||
$this->getCompany()->initExtra();
|
||||
if(array_key_exists("phoneTalent", $this->getCompany()->getExtra())){
|
||||
if($this->getCompany()->getExtra()["phoneTalent"]){
|
||||
$phone= $this->getCompany()->getExtra()["phoneTalent"];
|
||||
|
||||
@@ -113,6 +113,26 @@ class AnswerRepository extends AbstractRepository
|
||||
->getResult();
|
||||
}
|
||||
|
||||
public function getAnswerByCompanyStatus($id, $status)
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('a')
|
||||
->select('a')
|
||||
->where('a.ad IN (
|
||||
SELECT p.id
|
||||
FROM AppBundle:Ad p
|
||||
WHERE p.company = :id
|
||||
)')
|
||||
->setParameter(':id', $id)
|
||||
->andWhere('a.status = :status')
|
||||
->setParameter(':status', $status)
|
||||
->orderBy('a.uTime','DESC');
|
||||
|
||||
return $qb
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
|
||||
|
||||
public function getAnswerByAdsShare( $adId)
|
||||
{
|
||||
@@ -318,4 +338,26 @@ class AnswerRepository extends AbstractRepository
|
||||
"countResult" => $countResult
|
||||
);
|
||||
}
|
||||
|
||||
public function getMedias()
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('a')
|
||||
->select(['a','video'])
|
||||
->leftJoin('a.video', 'video')
|
||||
->andWhere('video.status = :status')
|
||||
->setParameter(':status', "TO_MODERATE")
|
||||
->orderBy('video.id', 'DESC');
|
||||
|
||||
|
||||
$medias = $qb->getQuery()->getResult();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return $medias;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,44 @@
|
||||
|
||||
namespace AppBundle\Repository;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
|
||||
/**
|
||||
* MediaRepository
|
||||
*
|
||||
* This class was generated by the Doctrine ORM. Add your own custom
|
||||
* repository methods below.
|
||||
*/
|
||||
class MediaRepository extends \Doctrine\ORM\EntityRepository
|
||||
class MediaRepository extends AbstractRepository
|
||||
{
|
||||
public function getMedias()
|
||||
{
|
||||
$qb = $this
|
||||
->createQueryBuilder('m')
|
||||
->andWhere('m.status = :status')
|
||||
->setParameter(':status', "TO_MODERATE")
|
||||
->orderBy('m.id', 'DESC');
|
||||
|
||||
|
||||
$medias = $qb->getQuery()->getResult();
|
||||
$rawSql = "SELECT m.id as mediaid, m.title as title, m.original_url as original_url , u.* , a.id as answerId, a.send_time as sendtime, ad.title as adTitle
|
||||
FROM media AS m
|
||||
JOIN fos_user AS u ON (u.id=m.creator_id)
|
||||
LEFT JOIN answer AS a ON (a.video_id=m.id)
|
||||
LEFT JOIN ad AS ad ON (ad.id=a.ad_id)
|
||||
WHERE m.status='TO_MODERATE'
|
||||
ORDER by m.id DESC";
|
||||
|
||||
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
|
||||
$stmt->execute([]);
|
||||
|
||||
return $stmt->fetchAll();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//return $medias;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,8 +77,12 @@ class CompanyManager
|
||||
);
|
||||
}
|
||||
|
||||
$company->setExtra(null);
|
||||
$this->em->persist($company);
|
||||
$this->em->flush();
|
||||
$company->setExtra($extra);
|
||||
$company->upload();
|
||||
|
||||
//$company->uploadCv();
|
||||
}
|
||||
$this->em->persist($company);
|
||||
|
||||
@@ -66,8 +66,8 @@ trait ExtraJsonTrait
|
||||
*/
|
||||
public function getExtra()
|
||||
{
|
||||
|
||||
$this->initExtra();
|
||||
//19/01 : modif pour size et siren cote Symfony. Effet sur la web app?
|
||||
//$this->initExtra();
|
||||
return $this->extra;
|
||||
}
|
||||
|
||||
|
||||
@@ -96,4 +96,35 @@
|
||||
text-decoration : underline;
|
||||
|
||||
}
|
||||
|
||||
.text-card h3, .text-card span, .text-card h4{
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.card-background-1{
|
||||
background-color:#25D89A !important;
|
||||
border-radius:3px !important;
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
|
||||
}
|
||||
|
||||
.card-background-2{
|
||||
background-color:#1689fb !important;
|
||||
border-radius:3px !important;
|
||||
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
}
|
||||
|
||||
.card-background-3{
|
||||
background-color:#FF5A5F !important;
|
||||
border-radius:3px !important;
|
||||
padding:20px;
|
||||
min-height:180px;
|
||||
}
|
||||
|
||||
.vertical-border{
|
||||
border-right: 1px solid white;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset
|
||||
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
<!-- created with Free Online Sitemap Generator www.xml-sitemaps.com -->
|
||||
|
||||
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>1.00</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/offre-emploi-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/marque-employeur-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/candidatures-video</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/mentions-legales</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/cgu</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/politique-confidentialite</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/abonnement</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/resetting/request</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://recruteur.talentstube.com/register/</loc>
|
||||
<lastmod>2020-11-18T16:05:39+00:00</lastmod>
|
||||
<priority>0.80</priority>
|
||||
</url>
|
||||
|
||||
|
||||
</urlset>
|
||||
Reference in New Issue
Block a user