1: <?php
  2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35: 
 36: 
 37: Yii::import('application.models.X2Model');
 38: 
 39:  40:  41:  42:  43: 
 44: class Opportunity extends X2Model {
 45:      46:  47:  48: 
 49:     public static function model($className=__CLASS__) { return parent::model($className); }
 50: 
 51:      52:  53: 
 54:     public function tableName() { return 'x2_opportunities'; }
 55: 
 56:     public function behaviors() {
 57:         return array_merge(parent::behaviors(),array(
 58:             'X2LinkableBehavior'=>array(
 59:                 'class'=>'X2LinkableBehavior',
 60:                 'module'=>'opportunities'
 61:             ),
 62:             'ERememberFiltersBehavior' => array(
 63:                 'class' => 'application.components.ERememberFiltersBehavior',
 64:                 'defaults'=>array(),
 65:                 'defaultStickOnClear'=>false
 66:             )
 67:         ));
 68:     }
 69: 
 70:      71:  72:  73: 
 74:     public function beforeSave() {
 75:         if(isset($this->associatedContacts))
 76:             $this->associatedContacts = self::parseContacts($this->associatedContacts);
 77: 
 78:         return parent::beforeSave();
 79:     }
 80: 
 81:     public static function getNames() {
 82:         $arr = Opportunity::model()->findAll();
 83:         $names = array(0=>'None');
 84:         foreach($arr as $opportunity)
 85:             $names[$opportunity->id] = $opportunity->name;
 86: 
 87:         return $names;
 88:     }
 89: 
 90:     public static function parseUsers($userArray){
 91:         return implode(', ',$userArray);
 92:     }
 93: 
 94:     public static function parseUsersTwo($arr){
 95:         $str="";
 96:         if(is_array($arr)){
 97:             $arr=array_keys($arr);
 98:             $str=implode(', ',$arr);
 99:         }
100: 
101:         return $str;
102:     }
103: 
104:     public static function parseContacts($contactArray){
105:         if(is_array($contactArray)){
106:             return implode(' ',$contactArray);
107:         }else{
108:             return $contactArray;
109:         }
110:     }
111: 
112:     public static function parseContactsTwo($arr){
113:         $str="";
114:         foreach($arr as $id=>$contact){
115:             $str.=$id." ";
116:         }
117:         return $str;
118:     }
119: 
120:     public static function getOpportunityLinks($accountId) {
121: 
122:         $allOpportunities = X2Model::model('Opportunity')->findAllByAttributes(array('accountName'=>$accountId));
123: 
124:         $links = array();
125:         foreach($allOpportunities as $model) {
126:             $links[] = CHtml::link($model->name,array('/opportunities/opportunities/view','id'=>$model->id));
127:         }
128:         return implode(', ',$links);
129:     }
130: 
131:     public static function editContactArray($arr, $model) {
132: 
133:         $rels=Relationships::model()->findAllByAttributes(array('firstType'=>'Contacts','secondType'=>'Opportunity','secondId'=>$model->id));
134:         $pieces=array();
135:         foreach($rels as $relationship){
136:             $contact=X2Model::model('Contacts')->findByPk($relationship->firstId);
137:             if(isset($contact)){
138:                 $pieces[$relationship->firstId]=$contact->name;
139:             }
140:         }
141:         unset($arr[0]);
142:         foreach($pieces as $id=>$contact){
143:             if(isset($arr[$id])){
144:                 unset($arr[$id]);
145:             }
146:         }
147: 
148:         return $arr;
149:     }
150: 
151:     public static function editUserArray($arr, $model) {
152: 
153:         $pieces=explode(', ',$model->assignedTo);
154:         unset($arr['Anyone']);
155:         unset($arr['admin']);
156:         foreach($pieces as $user){
157:             if(array_key_exists($user,$arr)){
158:                 unset($arr[$user]);
159:             }
160:         }
161:         return $arr;
162:     }
163: 
164:     public static function editUsersInverse($arr) {
165: 
166:         $data=array();
167: 
168:         foreach($arr as $username){
169:             if($username!='' && !is_numeric($username))
170:                 $data[]=User::model()->findByAttributes(array('username'=>$username));
171:             elseif(is_numeric($username))
172:                 $data[]=Groups::model()->findByPK($username);
173:         }
174: 
175:         $temp=array();
176:         if(isset($data)){
177:             foreach($data as $item){
178:                 if(isset($item)){
179:                     if($item instanceof User)
180:                         $temp[$item->username]=$item->firstName.' '.$item->lastName;
181:                     else
182:                         $temp[$item->id]=$item->name;
183:                 }
184:             }
185:         }
186:         return $temp;
187:     }
188: 
189:     public static function editContactsInverse($arr) {
190:         $data=array();
191: 
192:         foreach($arr as $id){
193:             if($id!='')
194:                 $data[]=X2Model::model('Contacts')->findByPk($id);
195:         }
196:         $temp=array();
197: 
198:         foreach($data as $item){
199:             $temp[$item->id]=$item->firstName.' '.$item->lastName;
200:         }
201:         return $temp;
202:     }
203: 
204:     public function search($resultsPerPage=null, $uniqueId=null) {
205:         $criteria=new CDbCriteria;
206:         
207:         $parameters=array('limit'=>ceil(Profile::getResultsPerPage()));
208:         $criteria->scopes=array('findAll'=>array($parameters));
209: 
210:         return $this->searchBase($criteria, $resultsPerPage);
211:     }
212: 
213:     public function searchAdmin() {
214:         $criteria=new CDbCriteria;
215: 
216:         return $this->searchBase($criteria);
217:     }
218: 
219: 
220: }
221: