private function importGp(array $data) { if (!($gp = Gp::model()->findbyAttributes(array('nat_id' => $data['code'])))) { if ($data['status'] != 'A') { return; } $gp = new Gp(); $gp->nat_id = $data['code']; $gp->obj_prof = $data['code']; } if (!$gp->save()) { throw new Exception("Failed to save GP: " . print_r($gp->errors, true)); } $contact = $gp->contact; $contact->primary_phone = $data['phone']; if (preg_match("/^([\\S]+)\\s+([A-Z]{1,4})\$/i", trim($data['name']), $m)) { $contact->title = 'Dr'; $contact->first_name = $m[2]; $contact->last_name = $this->tidy($m[1]); } else { $contact->last_name = $data['name']; } if (!$contact->save()) { throw new Exception("Failed to save contact: " . print_r($contact->errors, true)); } if (!($address = $contact->address)) { $address = new Address(); $address->contact_id = $contact->id; } $this->importAddress($address, array($data['addr1'], $data['addr2'], $data['addr3'], $data['addr4'], $data['addr5'])); $address->postcode = $data['postcode']; $address->country_id = $this->country_id; if (!$address->save()) { throw new Exception("Failed to save address: " . print_r($address->errors, true)); } }