From 394b533dd7411634866f204d6763fb1e59cd3041 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Tue, 3 Sep 2013 14:22:06 +0200 Subject: [PATCH] update customer model createOrUpdate method --- core/lib/Thelia/Model/Customer.php | 68 +++++++++++++++++++++--------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/core/lib/Thelia/Model/Customer.php b/core/lib/Thelia/Model/Customer.php index 8f3de28d1..9572b6441 100755 --- a/core/lib/Thelia/Model/Customer.php +++ b/core/lib/Thelia/Model/Customer.php @@ -3,6 +3,7 @@ namespace Thelia\Model; use Symfony\Component\Config\Definition\Exception\Exception; +use Thelia\Model\AddressQuery; use Thelia\Model\Base\Customer as BaseCustomer; use Thelia\Model\Exception\InvalidArgumentException; @@ -74,28 +75,46 @@ class Customer extends BaseCustomer implements UserInterface $con = Propel::getWriteConnection(CustomerTableMap::DATABASE_NAME); $con->beginTransaction(); try { + if ($this->isNew()) { + $address = new Address(); + + $address + ->setTitleId($titleId) + ->setFirstname($firstname) + ->setLastname($lastname) + ->setAddress1($address1) + ->setAddress2($address2) + ->setAddress3($address3) + ->setPhone($phone) + ->setCellphone($cellphone) + ->setZipcode($zipcode) + ->setCountryId($countryId) + ->setIsDefault(1) + ; + + $this->addAddress($address); + + } else { + $address = $this->getDefaultAddress(); + + $address + ->setTitleId($titleId) + ->setFirstname($firstname) + ->setLastname($lastname) + ->setAddress1($address1) + ->setAddress2($address2) + ->setAddress3($address3) + ->setPhone($phone) + ->setCellphone($cellphone) + ->setZipcode($zipcode) + ->setCountryId($countryId) + ->save($con) + ; + } $this->save($con); - $address = new Address(); - - $address - ->setTitleId($titleId) - ->setFirstname($firstname) - ->setLastname($lastname) - ->setAddress1($address1) - ->setAddress2($address2) - ->setAddress3($address3) - ->setPhone($phone) - ->setCellphone($cellphone) - ->setZipcode($zipcode) - ->setCountryId($countryId) - ->setIsDefault(1) - ->setCustomer($this) - ->save($con); - $con->commit(); - } catch(Exception $e) { $con->rollback(); throw $e; @@ -107,12 +126,23 @@ class Customer extends BaseCustomer implements UserInterface return uniqid(substr($this->getLastname(), 0, (strlen($this->getLastname()) >= 3) ? 3 : strlen($this->getLastname())), true); } + /** + * @return Address + */ + public function getDefaultAddress() + { + return AddressQuery::create() + ->filterByCustomer($this) + ->filterByIsDefault(1) + ->findOne(); + } + /** * create hash for plain password and set it in Customer object * * @param string $password plain password before hashing + * @throws Exception\InvalidArgumentException * @return $this|Customer - * @throws \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException */ public function setPassword($password) {