Compare commits

...

3 Commits

Author SHA1 Message Date
Thomas MONCHICOURT 2dd559fa64 Feat : intervention albéa @0h15 2018-03-30 17:04:26 +02:00
Thomas MONCHICOURT 90ae12995f Fix : admin set presentation on null 2018-03-27 15:16:11 +02:00
Thomas MONCHICOURT 7aa4a92cb6 Feat : Ajout listing user en admin #6108 @2h 2018-03-27 14:29:52 +02:00
9 changed files with 242 additions and 9 deletions
@@ -13,6 +13,8 @@
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/dist/css/AdminLTE.min.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/dist/css/skins/skin-blue.min.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="{{ asset('admin/AdminLTE/plugins/datatables/dataTables.bootstrap.css') }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.2/jquery-confirm.min.css">
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
{% block css %}
@@ -0,0 +1,107 @@
{% extends 'admin/base_admin.html.twig' %}
{% block contentHeader %}
<h1>
Utilisateurs
<small>Liste</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li class="active">Utilisateurs</li>
</ol>
{% endblock %}
{% block content %}
<div class="box box-primary">
<div class="box-body">
<table id="user_list_table" class="table table-hover table-bordered">
<thead>
<tr>
<th>Nom</th>
<th>Prénom</th>
<th class="col-md-3">Email</th>
<th>Roles</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for u in users %}
<tr>
<td>{{ u.lastname }}</td>
<td>{{ u.firstname }}</td>
<td>{{ u.email }}</td>
<td>
{% for r in u.roles %}
{% if r != "ROLE_USER" %}
<span class="badge bg-blue" style="font-weight: 400;">{{ r }}</span>
{% endif %}
{% endfor %}
</td>
<td>
<a class="delete-user" href="{{ path('admin_user_delete',{'id':u.id}) }}" data-toggle="tooltip"
title="Supprimer">
<i class="fa fa-trash"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
$(function () {
$('#user_list_table').DataTable({
"paging": true,
"lengthChange": true,
"searching": true,
"ordering": true,
"info": true,
"autoWidth": false,
"language": {
"url": "https://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
},
"columnDefs": [
{"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"},
]
});
});
$(document).ready(function () {
$('[data-toggle="popover"]').popover();
$(".delete-user").confirm({
title: "Êtes vous sûr de supprimer cet utilisateur ?",
content: "Supprimer cet utilisateur supprimera, son compte, son entreprise, ses réponses, médias",
type: 'red',
boxWidth: '30%',
useBootstrap: false,
buttons: {
confirm: {
text: 'Confirmer',
action: function(){
console.log(this.$target);
location.href = this.$target.attr('href');
return true;
}
},
cancel: {
text: 'Annuler',
}
}
});
});
</script>
{% endblock %}
@@ -35,13 +35,17 @@
<div class="col s12 m12 l8 xl9">
{% if ad.video and ad.status != "CLOSED" %}
<div class="row m-b-0" id="adVideo">
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
{% if ad.id == 36 %}
<img class="responsive-img" src="{{asset('/img/Albea_alternance_stage_vie_1.jpg')}}">
{% else %}
<div class="embed-responsive embed-responsive-16by9">
<div class="col s12">
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}"
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
allowfullscreen></iframe>
</div>
</div>
</div>
{% endif %}
{% if ad.isPromoted %}
<div class="isPromoted"><img src="{{asset('/img/offre-pourvue-gauche.png')}}" alt="promoted"></div>
{% endif %}
@@ -40,4 +40,5 @@ assetic:
- 'js/vendors/typeahead.js'
- 'js/company.js'
- 'js/backend.js'
- 'js/tags.js'
- 'js/tags.js'
- 'js/vendors/jquery-confirm.min.js'
@@ -3,6 +3,10 @@
namespace AppBundle\Controller\Admin;
use AppBundle\Entity\Company;
use AppBundle\Entity\Media;
use AppBundle\Entity\Answer;
use AppBundle\Entity\Message;
use AppBundle\Entity\Bookmark;
use AppBundle\Form\Admin\TalentAdminType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
@@ -43,4 +47,98 @@ class TalentController extends Controller
'talent' => $talent,
));
}
/**
* @Route("/admin/config/user/list", name="admin_config_user")
*/
public function adminUserListAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$t = $em->getRepository('AppBundle:User')->findByRole('ROLE_TALENT');
return $this->render('admin/users_list.html.twig', array(
'users' => $t,
));
}
/**
* @Route("/admin/config/user/{id}/delete", name="admin_user_delete")
*/
public function adminUserDeleteAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$t = $em->getRepository('AppBundle:User')->findByRole('ROLE_TALENT');
$userManager = $this->get('fos_user.user_manager');;
$user = $userManager->findUserBy(array('id' => $id));
if(\is_null($user)) {
// user not found, generate $notFoundResponse
$this->addFlash(
'notice',
' user not found !'
);
}
\assert(!\is_null($user));
$company = $user->getCompany();
if($company){
$company->setPresentationVideo(null);
}
$this->deleteRelation($user);
$userManager->deleteUser($user);
if($company){
$em->remove($company);
}
$em->flush();
return $this->redirectToRoute('admin_config_user');
}
public function deleteRelation($user) {
$em = $this->getDoctrine()->getManager();
$answers = $em->getRepository('AppBundle:Answer')->findBy(array('user' => $user));
$medias = $em->getRepository('AppBundle:Media')->findBy(array('creator'=> $user));
$sendMessage = $em->getRepository('AppBundle:Message')->findBy(array('sender'=> $user));
$recipMessage = $em->getRepository('AppBundle:Message')->findBy(array('recipient'=> $user));
$bookmarks = $em->getRepository('AppBundle:Bookmark')->findBy(array('creator'=> $user));
if ($sendMessage) {
foreach ($sendMessage as $key => $message) {
$message->setSender(null);
$message->setAnswer(null);
}
$em->flush();
}
if ($recipMessage) {
foreach ($recipMessage as $key => $message) {
$message->setRecipient(null);
$message->setAnswer(null);
}
$em->flush();
}
if ($bookmarks) {
foreach ($bookmarks as $key => $bookmark) {
$em->remove($bookmark);
}
$em->flush();
}
if ($answers) {
foreach ($answers as $key => $answer) {
$em->remove($answer);
}
$em->flush();
}
if ($medias) {
foreach ($medias as $key => $media) {
$em->remove($media);
}
$em->flush();
}
}
}
@@ -12,4 +12,14 @@ use Doctrine\ORM\EntityRepository;
*/
class UserRepository extends EntityRepository
{
public function findByRole($role)
{
$qb = $this->_em->createQueryBuilder();
$qb->select('u')
->from($this->_entityName, 'u')
->where('u.roles LIKE :roles')
->setParameter('roles', '%"'.$role.'"%');
return $qb->getQuery()->getResult();
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB