/**
  * @param Contact $contact
  * @param ContactAddress $address
  * @return array
  * @throws BadRequestHttpException
  */
 protected function update(Contact $contact, ContactAddress $address)
 {
     $responseData = array('saved' => false, 'contact' => $contact);
     if ($this->getRequest()->getMethod() == 'GET' && !$address->getId()) {
         $address->setFirstName($contact->getFirstName());
         $address->setLastName($contact->getLastName());
         if (!$contact->getAddresses()->count()) {
             $address->setPrimary(true);
         }
     }
     if ($address->getOwner() && $address->getOwner()->getId() != $contact->getId()) {
         throw new BadRequestHttpException('Address must belong to contact');
     } elseif (!$address->getOwner()) {
         $contact->addAddress($address);
     }
     // Update contact's modification date when an address is changed
     $contact->setUpdatedAt(new \DateTime('now', new \DateTimeZone('UTC')));
     if ($this->get('orocrm_contact.form.handler.contact_address')->process($address)) {
         $this->getDoctrine()->getManager()->flush();
         $responseData['entity'] = $address;
         $responseData['saved'] = true;
     }
     $responseData['form'] = $this->get('orocrm_contact.contact_address.form')->createView();
     return $responseData;
 }
Beispiel #2
0
 public function testOwner()
 {
     $contact = $this->getMockBuilder('OroCRM\\Bundle\\ContactBundle\\Entity\\Contact')->disableOriginalConstructor()->getMock();
     $address = new ContactAddress();
     $address->setOwner($contact);
     $this->assertSame($contact, $address->getOwner());
 }