/** * @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; }
public function testOwner() { $contact = $this->getMockBuilder('OroCRM\\Bundle\\ContactBundle\\Entity\\Contact')->disableOriginalConstructor()->getMock(); $address = new ContactAddress(); $address->setOwner($contact); $this->assertSame($contact, $address->getOwner()); }