public function saveCandidateDistrictList($con = null)
 {
     if (!$this->isValid()) {
         throw $this->getErrorSchema();
     }
     if (!isset($this->widgetSchema['candidate_district_list'])) {
         // somebody has unset this widget
         return;
     }
     if (is_null($con)) {
         $con = $this->getConnection();
     }
     $q = Doctrine_Query::create()->delete()->from('CandidateDistrict r')->where('r.candidate_id = ?', current($this->object->identifier()))->execute();
     $values = $this->getValue('candidate_district_list');
     if (is_array($values)) {
         foreach ($values as $value) {
             $obj = new CandidateDistrict();
             $obj->candidate_id = current($this->object->identifier());
             $obj->district_id = $value;
             $obj->save();
         }
     }
 }
 public function getCandidateEntityByCrpId($id)
 {
     if (!count($candidates = $this->getOsCandidatesById($id))) {
         return null;
     }
     //try to find entity by fec_id
     $fecIds = array();
     foreach ($candidates as $candidate) {
         if (!$candidate['fec_id'] || !$candidate['name_last']) {
             continue;
         }
         if ($entity = $this->getCandidateEntityByFecId($candidate['fec_id'], $candidate['name_last'])) {
             return $entity;
         }
         $fecIds[] = $candidate['fec_id'];
     }
     $candidate = $candidates[0];
     if ($this->debugMode) {
         print "+ Creating new entity for person " . $id . " (" . $candidate['name'] . ")\n";
     }
     $entity = new Entity();
     $entity->addExtension('Person');
     $entity->addExtension('PoliticalCandidate');
     $entity->name_last = $candidate['name_last'];
     $entity->name_first = $candidate['name_first'];
     $entity->name_middle = $candidate['name_middle'];
     $entity->name_suffix = $candidate['name_suffix'];
     $entity->crp_id = $id;
     foreach ($fecIds as $fecId) {
         $map = array('P' => 'pres_fec_id', 'S' => 'senate_fec_id', 'H' => 'house_fec_id');
         $code = substr($fecId, 0, 1);
         if (@($field = $map[$code])) {
             $entity->{$field} = $fecId;
         }
     }
     $entity->save();
     if (!($district = PoliticalDistrictTable::getFederalDistrict($state, $district))) {
         if ($state = AddressStateTable::retrieveByText($state)) {
             $district = new PoliticalDistrict();
             $district->state_id = $state['id'];
             $district->federal_district = $district;
             $district->save();
         }
     }
     if ($district) {
         $pc = $entity->getExtensionObject('PoliticalCandidate');
         $cd = new CandidateDistrict();
         $cd->candidate_id = $pc->id;
         $cd->district_id = $district->id;
         $cd->save();
     }
     return $entity;
 }