Диплом: Автоматизация управления проектами в студии APPCRAFT

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
129
}
}
<?php
namespace AppBundle\Controller;
use AppBundle\Entity\Competition;
use AppBundle\Entity\Competitor;
use AppBundle\Entity\Status;
use AppBundle\Form\Type\UserFormType;
use AppBundle\Form\Type\UserFilterFormType;
use AppBundle\Entity\Role;
use AppBundle\Entity\User;
use Sensio\Bundle\FrameworkExtraBundle\Configuration as Config;
use Symfony\Component\Form\FormError;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoder;
use Symfony\Component\Security\Core\Security;
class UsersController extends InitializableController
{
/**
* @return RedirectResponse|Response
* @Config\Route("/users", name = "site_users_index")
*/
public function indexAction()
{
if (!($this->authChecker->isGranted(Role::TEACHER))) {
130
return $this->redirectToRoute('homepage');
}
else {
$form=$this->createForm(new UserFilterFormType());
$username = null;
$email=null;
$phone=null;
$role=null;
$form->handleRequest($this->request);
$usersquery = $this->getRepository('User')-
>createQueryBuilder('u')
->leftJoin('u.roles', 'r')
->where('u.deleted <> 1')
->orderBy('u.id', 'DESC');
if ($form->isSubmitted() && $form->isValid()) {
$username = $form->get('username')->getData();
$email = $form->get('email')->getData();
$phone = $form->get('phone')->getData();
$role = $form->get('role')->getData();
}
if (!empty($username)) {
$usersquery->andWhere('LOWER(u.username) LIKE
LOWER(:username) ')->setParameter('username', '%' . trim($username)
. '%');
}
131
if (!empty($email)) {
$usersquery->andWhere('LOWER(u.email) LIKE
LOWER(:email) ')->setParameter('email', '%' . trim($username) .
'%');
}
if (!empty($phone)) {
$usersquery->andWhere('LOWER(u.phone) LIKE
LOWER(:phone) ')->setParameter('phone', '%' . trim($username) .
'%');
}
if (!empty($role)) {
$usersquery->andWhere('r.id = :role')-
>setParameter('role', $role);
}
$users=$usersquery->getQuery()->getResult();
$this->view['users'] = $users;
$this->view['form'] = $form->createView();
$this->navigation = array('active' => 'users');
return $this-
>render('AppBundle:Users:index.html.twig');
}
}
/**
* @return RedirectResponse|Response
* @Config\Route("/users/add", name = "site_users_add")
*/
132
public function addAction()
{
if (!($this->authChecker->isGranted(Role::TEACHER))) {
return $this->redirectToRoute('homepage');
}
else {
$user = new User();
$user->getRolesCollection()->add($this-
>getRepository('Role')->findOneByRole(Role::USER));
$form = $this->createForm(new UserFormType(), $user);
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$valid = true;
$sames = $this->getRepository('User')-
>createQueryBuilder('u')
->select('COUNT(u.id) AS id')
->where('u.username = :username')
->setParameters(array('username' => $user-
>getUsername()))
->getQuery()->getSingleScalarResult();
if ($sames > 0) {
$form->get('username')->addError(new
FormError('Пользователь с таким логином уже существует.'));
$valid = false;
}
if (is_null($form->get('password')->getData())) {
$form->get('password')->addError(new
FormError('Пожалуйста, укажите пароль пользователя.'));
$valid = false;
}
133
if ($valid) {
/** @var UserPasswordEncoder $encoder */
$encoder = $this-
>get('security.password_encoder');
$user->setSalt(User::generateSalt())
->setPassword($encoder-
>encodePassword($user, $user->getPassword()));
$this->manager->persist($user);
$this->manager->flush();
$this->addNotice('success',
'users.html.twig',
array('notice' => 'user_added', 'username'
=> $user->getUsername())
);
return $this-
>redirectToRoute('site_users_index');
}
}
$this->forms['user'] = $form->createView();
$this->view['user']=null;
$this->navigation = array('active' => 'users');
return $this-
>render('AppBundle:Users:user1.html.twig');
}
}
/**
* @param User $user
* @return RedirectResponse|Response
134
* @Config\Route("/users/{user}/edit/{step}", name =
"site_users_edit", defaults={ "step": "1"})
* @Config\ParamConverter("user", options = {"mapping":
{"user": "id"}})
*/
public function editAction(User $user, $step=1)
{
if (!($this->authChecker->isGranted(Role::TEACHER))) {
return $this->redirectToRoute('homepage');
}
if (($user->isGrantedBy('ROLE_ADMIN') or $user-
>isGrantedBy('ROLE_TEACHER')) and !($this->authChecker-
>isGranted(Role::ADMIN)) ) {
return $this->redirectToRoute('site_users_index');
}
if ($step > 2) {
$step = 2;
}
switch ($step) {
//общие данные
case 1:
$password = $user->getPassword();
$form = $this->createForm(new UserFormType(),
$user);
$form->handleRequest($this->request);
if ($form->isSubmitted() && $form->isValid()) {
$valid = true;
$sames = $this->getRepository('User')-
>createQueryBuilder('u')
->select('COUNT(u.id) AS id')
135
->where('u.username = :username')
->andWhere('u.id <> :id')
->setParameters(array('username' => $user-
>getUsername(), 'id' => $user->getId()))
->getQuery()->getSingleScalarResult();
if ($sames > 0) {
$form->get('username')->addError(new
FormError('Пользователь с таким логином уже существует.'));
$valid = false;
}
if ($valid) {
if (!is_null($form->get('password')-
>getData())) {
/** @var UserPasswordEncoder $encoder
*/
$encoder = $this-
>get('security.password_encoder');
$user->setSalt(User::generateSalt())
->setPassword($encoder-
>encodePassword($user, $user->getPassword()));
} else {
$user->setPassword($password);
}
$this->manager->persist($user);
$this->manager->flush();
$this->addNotice('success',
'users.html.twig',
array('notice' => 'user_changed',
'username' => $user->getUsername())
136
);
return $this-
>redirectToRoute('site_users_index');
}
}
$this->forms['user'] = $form->createView();
break;
case 2:
break;
}
$this->view['user'] = $user;
$this->navigation = array('active' => 'users');
return $this-
>render('AppBundle:Users:user'.$step.'.html.twig');
}
/**
* @param User $user
* @return Response
* @Config\Route("/users/{user}/remove", name =
"site_users_remove")
* @Config\ParamConverter("user", options = {"mapping":
{"user": "id"}})
*/
public function removeAction(User $user)
{
$user->setDeleted(true);
$this->manager->persist($user);
137
$this->manager->flush();
return $this->redirectToRoute('site_users_index');
}
}

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)