public function getTaskEditForm($action) { $form = new Form('task_edit_form', $action); $dictionary = new Dictionary(); $form->addField((new FieldText('theme', 'Тема'))->addRule(new NotEmpty()))->addField((new FieldTextArea('body', 'Задание'))->addRule(new NotEmpty()))->addField(new FieldTextArea('users', ''))->addField((new FieldTextArea('users_widget', 'Исполнители', array('readonly' => true)))->addRule(new NotEmpty()))->addField(new FieldDateTime('dateLimit', 'Крайний срок'))->addField(new FieldDropDawnList('hardLevel', 'Сложность', $dictionary->taskLevels()->getList()))->addField(new FieldDropDawnList('speedLevel', 'Срочность', $dictionary->taskSpeeds()->getList()))->addField(new FieldSubmit('submit', 'Сохранить', array(), 'Сохранить')); return $form; }
protected function execute(InputInterface $input, OutputInterface $output) { /** * @var EntityManager $em */ $em = (new OrmProvider())->getEntityManager(); /** * @var GroupRepository $groupRepository */ $groupRepository = $em->getRepository('LW\\Model\\Entity\\Group'); $dict = new Dictionary(); $users['director'] = $this->generateUser('ivanov_vu', 'ivanov_vu@test', 'ivanov_vu', $dict->userRoles()->ROLE_BOSS[0], 'Иванов', 'Василий', 'Юрьевич', 'Директор'); $users['department_chief'] = $this->generateUser('vasiliev_va', 'vasiliev_va@test', 'vasiliev_va', $dict->userRoles()->ROLE_BOSS[0], 'Васильев', 'Владимир', 'Алексеевич', 'Начальник отдела рекламы'); $users['designer'] = $this->generateUser('rasstrelnikov_sv', 'rasstrelnikov_sv@test', 'rasstrelnikov_sv', $dict->userRoles()->ROLE_WORKER[0], 'Расстрельников', 'Сергей', 'Викторович', 'Дизайнер'); $users['copywriter'] = $this->generateUser('tverskaya_aa', 'tverskaya_aa@test', 'tverskaya_aa', $dict->userRoles()->ROLE_WORKER[0], 'Тверская', 'Алена', 'Александровна', 'Копирайтер'); $users['system_administrator'] = $this->generateUser('admin', 'kolelov_in@test', '_admin_', $dict->userRoles()->ROLE_WORKER[0], 'Колелов', 'Иван', 'Николаевич', 'Системный администратор'); $groups['organisation'] = $this->generateGroup('ООО Наша фирма'); $groups['chief'] = $this->generateGroup('Директор'); $groups['department_advertising'] = $this->generateGroup('Отдел рекламы'); $groups['chief_department'] = $this->generateGroup('Начальник отдела'); $groups['worker_department'] = $this->generateGroup('Работники'); foreach ($users as $user) { $em->persist($user); } foreach ($groups as $group) { $group->setInnerOrder($groupRepository->getNextNumberByOwner(0)); $em->persist($group); } $em->flush(); $request = new Request(); $router = new Router($request); $manager = new Manager($em, $router); $manager->addUsersToGroup($groups['chief']->getId(), array($users['director']->getId())); $manager->addUsersToGroup($groups['chief_department']->getId(), array($users['department_chief']->getId())); $manager->addUsersToGroup($groups['worker_department']->getId(), array($users['copywriter']->getId(), $users['designer']->getId())); $manager->moveNode($groups['chief']->getId(), $groups['organisation']->getId(), 1); $manager->moveNode($groups['department_advertising']->getId(), $groups['chief']->getId(), 1); $manager->moveNode($groups['chief_department']->getId(), $groups['department_advertising']->getId(), 1); $manager->moveNode($groups['worker_department']->getId(), $groups['chief_department']->getId(), 1); $output->writeln('Successful!'); }
public function buildModel() { $dictonary = new Dictionary(); $roles = $dictonary->taskRoles(); $states = $dictonary->taskStates(); $model = array($roles->CREATOR[0] => array($states->CREATED[0] => array($states->CANCELED[0]), $states->ON_REVIEW[0] => array($states->CANCELED[0], $states->RETURNED[0], $states->COMPLETED[0])), $roles->EXECUTOR[0] => array($states->CREATED[0] => array($states->RUNNING[0]), $states->RUNNING[0] => array($states->ON_REVIEW[0]), $states->RETURNED[0] => array($states->RUNNING[0]))); return $model; }
private function buildControlsModel($roles, Dictionary $dictionary, Task $task, TaskManager $manager) { $buttons = array(); if (in_array($dictionary->taskRoles()->CREATOR[0], $roles)) { $url = $this->router->getUrlByRoute('task_edit', array('id' => $task->getId()), false); $buttons[] = array('caption' => 'Править', 'url' => $url); } $states = $dictionary->taskStates(); $statesList = $states->getList(); $statesList[$states->COMPLETED[0]] = 'Завершить задвчу'; $statesList[$states->ON_REVIEW[0]] = 'Отправить на рассмотрение'; $statesList[$states->CANCELED[0]] = 'Отменить'; $statesList[$states->RETURNED[0]] = 'Вернуть на доработку'; $statesList[$states->RUNNING[0]] = 'Начать выполнение'; $model = $manager->buildModel(); foreach ($roles as $role) { if (!array_key_exists($role, $model)) { continue; } if (!array_key_exists($task->getState(), $model[$role])) { continue; } foreach ($model[$role][$task->getState()] as $rule) { $url = $this->router->getUrlByRoute('task_change_state', array('id' => $task->getId(), 'state' => $rule), false); $buttons[] = array('caption' => $statesList[$rule], 'url' => $url); } } return $buttons; }