Exemple #1
0
 public function executeAddRelationshipCategory($request)
 {
     $this->checkEntity($request, false, false);
     $this->entity2 = Doctrine::getTable('Entity')->find($request->getParameter('entity2_id'));
     $this->forward404Unless($this->entity2);
     $ext1 = $this->entity->getPrimaryExtension();
     $ext2 = $this->entity2->getPrimaryExtension();
     $this->categories = RelationshipCategoryTable::getByExtensionsQuery($ext1, $ext2)->execute();
     $this->reference_form = new ReferenceForm();
     $rel = new Relationship();
     $rel->Entity1 = $this->entity;
     $rel->Entity2 = $this->entity2;
     $this->reference_form->setSelectObject($rel);
     if ($request->isMethod('post')) {
         $refParams = $request->getParameter('reference');
         $this->reference_form->bind($refParams);
         if ($this->reference_form->isValid()) {
             //lobbying will need to be handled seperately
             if ($request->getParameter('category_id') == RelationshipTable::LOBBYING_CATEGORY) {
                 switch ($request->getParameter('lobbying_scenario')) {
                     case 'direct':
                         $r = new Relationship();
                         $r->Entity1 = $this->entity;
                         $r->Entity2 = $this->entity2;
                         $r->setCategory('Lobbying');
                         break;
                     case 'direct_reverse':
                         $r = new Relationship();
                         $r->Entity1 = $this->entity2;
                         $r->Entity2 = $this->entity;
                         $r->setCategory('Lobbying');
                         break;
                     case 'service':
                         $r = new Relationship();
                         $r->Entity1 = $this->entity;
                         $r->Entity2 = $this->entity2;
                         $r->setCategory('Transaction');
                         $r->description1 = 'Lobbying Client';
                         $r->description2 = $this->entity2['primary_ext'] == 'Org' ? 'Lobbying Firm' : 'Lobbyist';
                         break;
                     case 'service_reverse':
                         $r = new Relationship();
                         $r->Entity1 = $this->entity2;
                         $r->Entity2 = $this->entity;
                         $r->setCategory('Transaction');
                         $r->description1 = 'Lobbying Client';
                         $r->description2 = $this->entity['primary_ext'] == 'Org' ? 'Lobbying Firm' : 'Lobbyist';
                         break;
                     default:
                         $request->setError('lobbying_scenario', "You must pick a type of lobbying relationship to create");
                         return sfView::SUCCESS;
                         break;
                 }
                 $r->saveWithRequiredReference($refParams);
                 LsCache::clearRelationshipCacheById($r->id);
                 $this->redirect($r->getInternalUrl('edit', array('ref' => 'auto')));
             }
             if ($category = Doctrine::getTable('RelationshipCategory')->find($request->getParameter('category_id'))) {
                 //save relationship and reference
                 $r = new Relationship();
                 $r->Entity1 = $this->entity;
                 $r->Entity2 = $this->entity2;
                 $r->setCategory($category->name);
                 $r->switchEntityOrderIfNecessary();
                 $r->saveWithRequiredReference($refParams);
                 LsCache::clearRelationshipCacheById($r->id);
                 //redirect to edit page
                 $this->redirect($r->getInternalUrl('edit', array('ref' => 'auto')));
             } else {
                 $request->setError('category_id', "You must select a category");
             }
         } else {
             if (!($categoryId = $request->getParameter('category_id'))) {
                 $request->setError('category_id', "You must select a category");
             }
         }
     }
 }