Файл: Проектирование реализации операций бизнес-процесса «Складской учёт» ( Аналитическая часть ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 15.05.2023

Просмотров: 257

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

);

return $this->redirectToRoute('site_otgruzs_edit',array('otgruz' => $otgruz->getId(), 'step' => 1));

}

$this->view['otgruz'] = null;

$this->forms['otgruz'] = $form->createView();

$this->navigation = array('active' => 'otgruzs');

return $this->render('AppBundle:Otgruzs:otgruz1.html.twig');

}

/**

* @param Otgruz $otgruz

* @return RedirectResponse|Response

* @Config\Route("/otgruzs/{otgruz}/edit/{step}", name = "site_otgruzs_edit")

* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})

*/

public function editAction(Otgruz $otgruz, $step)

{

if ($step > 4) {

$step = 4;

}

switch ($step) {

//общие данные

case 1:

$form = $this->createForm(new OtgruzFormType(), $otgruz);

if ($this->request->isMethod('POST')) {

$form->handleRequest($this->request);

if ($form->isSubmitted() && $form->isValid()) {

$otgruz->setUser($this->user);

$this->manager->persist($otgruz);

$this->manager->flush();

$this->addNotice('success',

'otgruzs.html.twig',

array('notice' => 'changed', 'caption' => $otgruz->getId())

);

return $this->redirectToRoute(

'site_otgruzs_edit',

array('otgruz' => $otgruz->getId(), 'step' => 1)

);

}

}

$this->view['otgruz'] = $otgruz;

$this->forms['otgruz'] = $form->createView();

break;

//список товаров

case 2:

$form = $this->createForm(new OtgruzProductFormType());

$products=$this->getRepository('OtgruzProduct')->createQueryBuilder('op')

->leftJoin('op.product','p')

->where('p.deleted <> 1')

->andWhere('op.otgruz = :otgruz')

->setParameters(array('otgruz'=>$otgruz))

->otgruzBy('p.category')->getQuery()->getResult();

if ($this->request->isXmlHttpRequest() && $this->request->isMethod('POST')) {

return $this->handleProductsAjaxRequest();

}

if ($this->request->isMethod('POST')) {

$form->handleRequest($this->request);

if ($form->isSubmitted() && $form->isValid()) {

/** @var OtgruzProduct $otgruzproduct */

$otgruzproduct = $form->getData();

$otgruzproduct->setOtgruz($otgruz);

$otgruzproduct->setPrice($otgruzproduct->getProduct()->getPrice());

$this->manager->persist($otgruzproduct);

$this->manager->flush();

$otgruz->refreshCurrency();

$this->manager->persist($otgruz);

$this->manager->flush();

return $this->redirectToRoute(

'site_otgruzs_edit',

array('otgruz' => $otgruz->getId(), 'step' => 2)

);

}

}

$this->view['otgruz'] = $otgruz;

$this->view['products'] = $products;

$this->forms['otgruzproduct'] = $form->createView();

$this->navigation = array('active' => 'otgruzs');

return $this->render('AppBundle:Otgruzs:otgruz2.html.twig');

break;

//список услуг

case 3:

$form = $this->createForm(new OtgruzServiceFormType());

$services=$this->getRepository('OtgruzService')->createQueryBuilder('os')

->leftJoin('os.service','s')

->where('s.deleted <> 1')

->andWhere('os.otgruz = :otgruz')

->setParameters(array('otgruz'=>$otgruz))

->otgruzBy('s.caption')->getQuery()->getResult();

if ($this->request->isMethod('POST')) {

$form->handleRequest($this->request);

if ($form->isSubmitted() && $form->isValid()) {

/** @var OtgruzService $otgruzservice */

$otgruzservice = $form->getData();

$otgruzservice->setOtgruz($otgruz);

$otgruzservice->setPrice($otgruzservice->getService()->getPrice());

$this->manager->persist($otgruzservice);

$this->manager->flush();

$otgruz->refreshCurrency();

$this->manager->persist($otgruz);

$this->manager->flush();

return $this->redirectToRoute(


'site_otgruzs_edit',

array('otgruz' => $otgruz->getId(), 'step' => 3)

);

}

}

$this->view['otgruz'] = $otgruz;

$this->view['services'] = $services;

$this->forms['otgruzservice'] = $form->createView();

$this->navigation = array('active' => 'otgruzs');

return $this->render('AppBundle:Otgruzs:otgruz3.html.twig');

break;

//доки

case 4:

$this->view['otgruz'] = $otgruz;

$this->navigation = array('active' => 'otgruzs');

return $this->render('AppBundle:Otgruzs:otgruz4.html.twig');

break;

}

$this->navigation = array('active' => 'otgruzs');

return $this->render('AppBundle:Otgruzs:otgruz'.$step.'.html.twig');

}

protected function handleProductsAjaxRequest()

{

$category = $this->request->get('category', null);

if (is_null($category)) return new JsonResponse();

$products=$this->getRepository('Product')->createQueryBuilder('p')

->select('p.id as id')

->where('p.category = :category')

->andWhere('p.deleted=0')

->setParameters(array('category'=> $category))

->getQuery()->getResult(Query::HYDRATE_ARRAY);

return new JsonResponse($products);

}

/**

* @param Otgruz $otgruz

* @return Response

* @Config\Route("/otgruzs/{otgruz}/remove", name = "site_otgruzs_remove")

* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})

*/

public function removeAction(Otgruz $otgruz)

{

$otgruz->setDeleted(true);

$this->manager->persist($otgruz);

$this->manager->flush();

return $this->redirectToRoute('site_otgruzs_index');

}

/**

* @param Otgruz $otgruz

* @return Response

* @Config\Route("/otgruzs/{otgruz}/changestatus/{status}", name = "site_otgruzs_changestatus")

* @Config\ParamConverter("otgruz", options = {"mapping": {"otgruz": "id"}})

*/

public function changestatusAction(Otgruz $otgruz, $status)

{

$oldstatus=$otgruz->getStatus()->getId();

/** @var OtgruzStatus $newstatus**/

$newstatus = $this->getRepository('OtgruzStatus')->findOneBy(array('id'=>$status));

$otgruz->setStatus($newstatus);

//отправляем уведомление пользователю

$descriptiontext='';

$notifusers=$otgruz->getSpecs();

switch ($status) {

case 2:

$descriptiontext="Вам был назначен новый заказ № ".$otgruz->getId().". Не забудьте подтвердить принятие в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";

break;

case 3:

//если перед этим был статус "Ждет подтверждения"

if ($oldstatus==4) {

$descriptiontext="Заказ № ".$otgruz->getId()." был вернут в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";

//отменяем выбор поставщика

foreach ($otgruz->getOtgruzproviders() as $otgruzprovider) {

$otgruzprovider->setSelected(false);

$this->manager->persist($otgruzprovider);

$this->manager->flush();

}

}

//иначе увеомление админу

else {

$descriptiontext="Пользователь ".$this->getUser()->getUserfio()." принял заказ № ".$otgruz->getId()." в работу. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a> ";

$notifusers=array();

/** @var User $notifuser**/

$notifuser = $this->getRepository('User')->findOneBy(array('username'=>'admin'));

array_push($notifusers,$notifuser );

}

break;

case 5: $descriptiontext="Выбор поставщика в заказе №".$otgruz->getId()." был утвержден. <a href='".$this->generateUrl('site_otgruzs_edit', array('otgruz'=>$otgruz->getId(), 'step'=>1))."'>Подробнее</a>";