Диплом: Автоматизация документооборота организации ООО "АРСтрой"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
92
);
CREATE TABLE User
( id AUTOINCREMENT INTEGER NOT NULL,
fio VARCHAR(255) NOT NULL,
login VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
departmentid INTEGER NOT NULL,
staffid INTEGER NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE Users_role
( userid INTEGER NOT NULL,
roleid INTEGER NOT NULL,
PRIMARY KEY (roleid, userid)
);
93
Приложение 2 Исходный код программных модулей
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Class User
* @package AppBundle\Entity
* @ORM\Entity
* @ORM\Table(name = "users")
*/
class User extends AbstractEntity implements UserInterface, \Serializable
{ /**
* @var string
* @ORM\Column(name = "password", type = "string")
*/
protected $password;
/**
* @var ArrayCollection|Role[]
* @ORM\ManyToMany(targetEntity = "AppBundle\Entity\Role", inversedBy =
"users")
* @ORM\JoinTable(name = "user_roles",
* joinColumns = {@ORM\JoinColumn(name = "userid", referencedColumnName
= "id")},
* inverseJoinColumns = {@ORM\JoinColumn(name = "roleid",
referencedColumnName = "id")}
* )
*/
protected $roles;
/**
* @var string
* @ORM\Column(name = "salt", type = "string")
*/
protected $salt;
/**
* @var string
* @ORM\Column(name = "username", type = "string", unique = true)
*/
protected $username;
/**
* @var string
* @ORM\Column(name = "userfio", type = "string")
*/
protected $userfio;
/**
* @var string
94
* @ORM\Column(name = "email", type = "string")
*/
protected $email;
/**
* @var string
* @ORM\Column(name = "phone", type = "string")
*/
protected $phone;
/**
* @var boolean
* @ORM\Column(name = "deleted", type = "boolean")
*/
protected $deleted;
/**
* @var ArrayCollection|Movement[]
* @ORM\OneToMany(targetEntity = "AppBundle\Entity\Movement", mappedBy =
"user", cascade = {"persist", "remove"})
*/
protected $movements;
public function __construct()
{
parent::__construct();
$this->roles = new ArrayCollection();
$this->movements = new ArrayCollection();
$this->salt = self::generateSalt();
$this->deleted = false;
}
public function eraseCredentials()
{
return $this;
}
/**
* @return string
*/
public static function generateSalt()
{
$symbols = '0123456789abcdef';
$salt = '';
foreach (range(1, 32) as $i) $salt .= $symbols[mt_rand(0, 15)];
return $salt;
// return openssl_random_pseudo_bytes(32);
}
/**
* @return string
*/
public function getPassword()
{
return $this->password;
95
}
/**
* @return array|Role[]
*/
public function getRoles()
{
return $this->roles->toArray();
}
/**
* @return ArrayCollection|Role[]
*/
public function getRolesCollection()
{
return $this->roles;
}
/**
* @return string
*/
public function getSalt()
{
return $this->salt;
}
/**
* @return string
*/
public function getUsername()
{
return $this->username;
}
public function serialize()
{
return serialize(array(
'id' => $this->id,
'username' => $this->username,
'password' => $this->password,
'salt' => $this->salt
));
}
/**
* @param string $password
* @return $this
*/
public function setPassword($password)
{
$this->password = $password;
return $this;
}
public function setRoles($roles)
96
{
$this->roles->clear();
foreach ($roles as $role) $this->roles->add($role);
return $this;
}
/**
* @param string $salt
* @return $this
*/
public function setSalt($salt)
{
$this->salt = $salt;
return $this;
}
/**
* @param string $username
* @return $this
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
public function unserialize($serialized)
{
$unserialized = unserialize($serialized);
$this->id = $unserialized['id'];
$this->username = $unserialized['username'];
$this->password = $unserialized['password'];
$this->salt = $unserialized['salt'];
return $this;
}
/**
* @return boolean
*/
public function isDeleted()
{
return $this->deleted;
}
/**
* @param boolean $deleted
*/
public function setDeleted($deleted)
{
$this->deleted = $deleted;
}
/**
* @return string
97
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string $email
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return string
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* @return string
*/
public function getUserfio()
{
return $this->userfio;
}
/**
* @param string $userfio
*/
public function setUserfio($userfio)
{
$this->userfio = $userfio;
}
/**
* @return Movement[]|ArrayCollection
*/
public function getMovements()
{
return $this->movements;
}
/**
98
* @param Movement[]|ArrayCollection $movements
*/
public function setMovements($movements)
{
$this->movements = $movements;
}
}
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Class Department
* @package AppBundle\Entity
* @ORM\Entity
* @ORM\Table(name = "department")
*/
class Department extends AbstractEntity
{
/**
* @var string
* @ORM\Column(name = "caption", type = "string")
*/
protected $caption;
/**
* @var boolean
* @ORM\Column(name = "main", type = "boolean")
*/
protected $deleted;
/**
* @var ArrayCollection|Worker[]
* @ORM\OneToMany(targetEntity = "AppBundle\Entity\Worker", mappedBy =
"department", cascade = {"persist", "remove"})
*/
protected $workers;
public function __construct()
{
parent::__construct();
$this->deleted = false;
$this->workers = new ArrayCollection();
}
/**
* @return string
*/
public function getCaption()
{
return $this->caption;
99
}
/**
* @param string $caption
*/
public function setCaption($caption)
{
$this->caption = $caption;
}
/**
* @return boolean
*/
public function isDeleted()
{
return $this->deleted;
}
/**
* @param boolean $deleted
*/
public function setDeleted($deleted)
{
$this->deleted = $deleted;
}
/**
* @return Worker[]|ArrayCollection
*/
public function getWorkers()
{
$workers= array();
foreach ($this->workers as $worker) {
if (!($worker->isDismis())){
array_push($workers,$worker);
}
}
return $workers;
}
/**
* @param Worker[]|ArrayCollection $workers
*/
public function setWorkers($workers)
{
$this->workers = $workers;
}
}
<?php
namespace AppBundle\Controller;
use AppBundle\Form\Type\UserFormType;
use AppBundle\Form\Type\UserFilterFormType;
use AppBundle\Entity\Role;
100
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::ADMIN))) {
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) . '%');
}
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) . '%');
}
101
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")
*/
public function addAction()
{
if (!($this->authChecker->isGranted(Role::ADMIN))) {
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;
}
if ($valid) {
/** @var UserPasswordEncoder $encoder */
$encoder = $this->get('security.password_encoder');
$user->setSalt(User::generateSalt())

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

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