/**
  * "Success" form handler
  *
  * @param RFPRequest $rfpRequest
  */
 protected function onSuccess(RFPRequest $rfpRequest)
 {
     $status = $this->form->get('status')->getData();
     $noteMessage = trim($this->form->get('note')->getData());
     $rfpRequest->setStatus($status);
     if (!empty($noteMessage)) {
         $note = new Note();
         $note->setTarget($rfpRequest)->setMessage(htmlspecialchars_decode($this->templating->render('OroB2BRFPBundle:Request:note.html.twig', ['status' => $status->getLabel(), 'note' => $noteMessage])));
         $this->manager->persist($note);
     }
     $this->manager->flush();
 }
Beispiel #2
0
 /**
  * Test toString
  */
 public function testToString()
 {
     $id = 42;
     $firstName = 'Grzegorz';
     $lastName = 'Brzeczyszczykiewicz';
     $request = new Request();
     $request->setFirstName($firstName)->setLastName($lastName);
     $reflectionProperty = new \ReflectionProperty(get_class($request), 'id');
     $reflectionProperty->setAccessible(true);
     $reflectionProperty->setValue($request, $id);
     $this->assertEquals(sprintf('%s: %s %s', $id, $firstName, $lastName), (string) $request);
 }
 /**
  * {@inheritdoc}
  */
 public function load(ObjectManager $om)
 {
     $deletedRequestStatus = $om->getRepository('OroB2BRFPBundle:RequestStatus')->findOneBy(['name' => LoadRequestStatusData::NAME_DELETED]);
     if (!$deletedRequestStatus instanceof RequestStatus) {
         throw new \LogicException('$deletedRequestStatus must be instance of RequestStatus');
     }
     foreach ($this->requests as $rawRequest) {
         $request = new Request();
         $request->setFirstName($rawRequest['first_name'])->setLastName($rawRequest['last_name'])->setEmail($rawRequest['email'])->setPhone($rawRequest['phone'])->setCompany($rawRequest['company'])->setRole($rawRequest['role'])->setBody($rawRequest['body'])->setStatus($deletedRequestStatus);
         $om->persist($request);
     }
     $om->flush();
 }
 /**
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     $status = $manager->getRepository('OroB2BRFPBundle:RequestStatus')->findOneBy([], ['id' => 'ASC']);
     if (!$status) {
         return;
     }
     foreach ($this->requests as $rawRequest) {
         $request = new Request();
         $request->setFirstName($rawRequest['first_name'])->setLastName($rawRequest['last_name'])->setEmail($rawRequest['email'])->setPhone($rawRequest['phone'])->setCompany($rawRequest['company'])->setRole($rawRequest['role'])->setBody($rawRequest['body'])->setStatus($status);
         $manager->persist($request);
     }
     $manager->flush();
 }
 /**
  * @param ShoppingList $inputData
  * @param Request $expectedData
  *
  * @dataProvider processValidDataProvider
  */
 public function testProcessValidShoppingList(ShoppingList $inputData, Request $expectedData)
 {
     $this->form->expects(static::once())->method('setData')->with($inputData);
     $this->request->setMethod('POST');
     $this->form->expects(static::once())->method('submit')->with($this->request);
     $this->form->expects(static::once())->method('isValid')->willReturn(true);
     $this->manager->expects(static::once())->method('flush');
     static::assertNull($this->handler->getRfpRequest());
     static::assertTrue($this->handler->process($inputData));
     $rfpRequest = $this->handler->getRfpRequest();
     if ($rfpRequest) {
         $rfpRequest->setCreatedAt($expectedData->getCreatedAt())->setUpdatedAt($expectedData->getUpdatedAt());
     }
     static::assertEquals($expectedData, $rfpRequest);
 }
 public function testBuildWithoutUnit()
 {
     $sku = 'TEST';
     $qty = 3;
     $data = [ProductDataStorage::ENTITY_ITEMS_DATA_KEY => [[ProductDataStorage::PRODUCT_SKU_KEY => $sku, ProductDataStorage::PRODUCT_QUANTITY_KEY => $qty]]];
     $request = new RFPRequest();
     $product = $this->getProductEntity($sku);
     $this->assertMetadataCalled();
     $this->assertRequestGetCalled();
     $this->assertStorageCalled($data);
     $this->assertProductRepositoryCalled($product);
     /** @var \PHPUnit_Framework_MockObject_MockObject|FormBuilderInterface $builder */
     $builder = $this->getMock('Symfony\\Component\\Form\\FormBuilderInterface');
     $this->extension->buildForm($builder, ['data' => $request]);
     $this->assertEmpty($request->getRequestProducts());
 }
 /**
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     /** @var RequestStatus $status */
     $status = $manager->getRepository('OroB2BRFPBundle:RequestStatus')->findOneBy([], ['id' => 'ASC']);
     if (!$status) {
         return;
     }
     /** @var Organization $organization */
     $organization = $this->getUser($manager)->getOrganization();
     foreach ($this->requests as $key => $rawRequest) {
         $request = new Request();
         $request->setFirstName($rawRequest['first_name'])->setLastName($rawRequest['last_name'])->setEmail($rawRequest['email'])->setPhone($rawRequest['phone'])->setCompany($rawRequest['company'])->setRole($rawRequest['role'])->setBody($rawRequest['body'])->setStatus($status)->setOrganization($organization);
         if (!empty($rawRequest['account'])) {
             $request->setAccount($this->getReference($rawRequest['account']));
         }
         if (!empty($rawRequest['accountUser'])) {
             $request->setAccountUser($this->getReference($rawRequest['accountUser']));
         }
         $manager->persist($request);
         $this->addReference($key, $request);
     }
     $manager->flush();
 }
 /**
  * "Success" form handler
  *
  * @param ShoppingList $entity
  * @return bool
  */
 protected function onSuccess(ShoppingList $entity)
 {
     $rfpRequest = new RFPRequest();
     $rfpRequest->setFirstName($this->user->getFirstName())->setLastName($this->user->getLastName())->setEmail($this->user->getEmail())->setPhone('')->setRole('')->setBody('')->setCompany($this->user->getOrganization() ? $this->user->getOrganization()->getName() : '')->setAccountUser($this->user)->setAccount($this->user->getAccount())->setStatus($this->requestStatus);
     foreach ($entity->getLineItems() as $shoppingListLineItem) {
         $requestProduct = new RequestProduct();
         $requestProduct->setProduct($shoppingListLineItem->getProduct());
         $requestProductItem = new RequestProductItem();
         $requestProductItem->setQuantity($shoppingListLineItem->getQuantity())->setProductUnit($shoppingListLineItem->getUnit());
         $requestProduct->addRequestProductItem($requestProductItem);
         $rfpRequest->addRequestProduct($requestProduct);
     }
     try {
         $this->manager->persist($rfpRequest);
         $this->manager->flush();
         $this->rfpRequest = $rfpRequest;
     } catch (DBALException $e) {
         $this->exception = $e;
         return false;
     }
     return true;
 }
 /**
  * @param Request $request
  * @param ObjectManager $manager
  */
 protected function processRequestProducts(Request $request, ObjectManager $manager)
 {
     $products = $this->getProducts($manager);
     $currencies = $this->getCurrencies();
     for ($i = 0; $i < rand(1, 10); $i++) {
         $product = $products[rand(0, count($products) - 1)];
         $unitPrecisions = $product->getUnitPrecisions();
         if (!count($unitPrecisions)) {
             continue;
         }
         $requestProduct = new RequestProduct();
         $requestProduct->setProduct($product);
         $requestProduct->setComment(sprintf('Notes %s', $i));
         for ($j = 0; $j < rand(1, 10); $j++) {
             $productUnit = $unitPrecisions[rand(0, count($unitPrecisions) - 1)]->getUnit();
             $currency = $currencies[rand(0, count($currencies) - 1)];
             $requestProductItem = new RequestProductItem();
             $requestProductItem->setPrice(Price::create(rand(1, 100), $currency))->setQuantity(rand(1, 100))->setProductUnit($productUnit);
             $requestProduct->addRequestProductItem($requestProductItem);
         }
         $request->addRequestProduct($requestProduct);
     }
 }
 /**
  * @param RFPRequest $rfpRequest
  * @return array|RedirectResponse
  */
 protected function update(RFPRequest $rfpRequest)
 {
     /* @var $handler UpdateHandler */
     $handler = $this->get('oro_form.model.update_handler');
     // set default status after edit
     if ($rfpRequest->getId()) {
         $rfpRequest->setStatus($this->getDefaultRequestStatus());
     }
     $securityFacade = $this->getSecurityFacade();
     return $handler->handleUpdate($rfpRequest, $this->createForm(RequestType::NAME, $rfpRequest), function (RFPRequest $rfpRequest) use($securityFacade) {
         if ($securityFacade->isGranted('ACCOUNT_VIEW', $rfpRequest)) {
             $route = $securityFacade->isGranted('ACCOUNT_EDIT', $rfpRequest) ? 'orob2b_rfp_frontend_request_update' : 'orob2b_rfp_frontend_request_view';
             return ['route' => $route, 'parameters' => ['id' => $rfpRequest->getId()]];
         }
         return ['route' => 'orob2b_rfp_frontend_request_create', 'parameters' => []];
     }, function (RFPRequest $rfpRequest) use($securityFacade) {
         if ($securityFacade->isGranted('ACCOUNT_VIEW', $rfpRequest)) {
             return ['route' => 'orob2b_rfp_frontend_request_view', 'parameters' => ['id' => $rfpRequest->getId()]];
         }
         return ['route' => 'orob2b_rfp_frontend_request_create', 'parameters' => []];
     }, $this->get('translator')->trans('orob2b.rfp.controller.request.saved.message'));
 }
 /**
  * @Route("/change_status/{id}", name="orob2b_rfp_request_change_status", requirements={"id"="\d+"})
  * @Template
  * @Acl(
  *      id="orob2b_rfp_request_update",
  *      type="entity",
  *      class="OroB2BRFPBundle:Request",
  *      permission="EDIT"
  * )
  *
  * @param RFPRequest $rfpRequest
  * @param Request $request
  * @throws NotFoundHttpException
  * @return array
  */
 public function changeStatusAction(RFPRequest $rfpRequest, Request $request)
 {
     if (!$request->get('_widgetContainer')) {
         throw $this->createNotFoundException();
     }
     $form = $this->createForm(RequestChangeStatusType::NAME, ['status' => $rfpRequest->getStatus()]);
     $handler = new RequestChangeStatusHandler($form, $request, $this->getDoctrine()->getManagerForClass($this->container->getParameter('orob2b_rfp.entity.request.class')), $this->container->get('templating'));
     $formAction = $this->get('router')->generate('orob2b_rfp_request_change_status', ['id' => $rfpRequest->getId()]);
     return ['entity' => $rfpRequest, 'saved' => $handler->process($rfpRequest), 'form' => $form->createView(), 'formAction' => $formAction];
 }
 /**
  * @param string $firstName
  * @param string $lastName
  * @param string $email
  * @param string $body
  * @param string $company
  * @param string $role
  * @return Request
  */
 protected function getRequest($firstName = null, $lastName = null, $email = null, $body = null, $company = null, $role = null)
 {
     $request = new Request();
     $request->setFirstName($firstName)->setLastName($lastName)->setEmail($email)->setBody($body)->setCompany($company)->setRole($role);
     return $request;
 }