Пример #1
0
 public static function GetEntityList($entityTypeID, $userID, $sortOrder, array $filter, $navParams = false)
 {
     $entityTypeID = (int) $entityTypeID;
     $userID = (int) $userID;
     $userIDs = array(0);
     if ($userID > 0) {
         $userIDs[] = $userID;
     }
     $lb = null;
     if ($entityTypeID === CCrmOwnerType::Lead) {
         $lb = CCrmLead::CreateListBuilder();
     } else {
         if ($entityTypeID === CCrmOwnerType::Deal) {
             $lb = CCrmDeal::CreateListBuilder();
         } else {
             if ($entityTypeID === CCrmOwnerType::Contact) {
                 $lb = CCrmContact::CreateListBuilder();
             } else {
                 if ($entityTypeID === CCrmOwnerType::Company) {
                     $lb = CCrmCompany::CreateListBuilder();
                 }
             }
         }
     }
     if (!$lb) {
         return null;
     }
     $fields = $lb->GetFields();
     $entityAlias = $lb->GetTableAlias();
     $join = 'LEFT JOIN ' . CCrmActivity::USER_ACTIVITY_TABLE_NAME . ' UA ON UA.USER_ID IN (' . implode(',', $userIDs) . ') AND UA.OWNER_ID = ' . $entityAlias . '.ID AND UA.OWNER_TYPE_ID = ' . $entityTypeID;
     $fields['ACTIVITY_USER_ID'] = array('FIELD' => 'MAX(UA.USER_ID)', 'TYPE' => 'int', 'FROM' => $join);
     $fields['ACTIVITY_SORT'] = array('FIELD' => 'MAX(UA.SORT)', 'TYPE' => 'string', 'FROM' => $join);
     $lb->SetFields($fields);
     $sortOrder = strtoupper($sortOrder);
     if ($sortOrder !== 'DESC' && $sortOrder !== 'ASC') {
         $sortOrder = 'ASC';
     }
     $options = array('PERMISSION_SQL_TYPE' => 'FROM', 'PERMISSION_SQL_UNION' => 'DISTINCT');
     return $lb->Prepare(array('ACTIVITY_USER_ID' => 'DESC', 'ACTIVITY_SORT' => $sortOrder, 'ID' => $sortOrder), $filter, array('ID'), $navParams, array('ID'), $options);
 }
Пример #2
0
 /**
  * @return \CCrmEntityListBuilder
  */
 protected static function createEntityListBuilder()
 {
     return \CCrmContact::CreateListBuilder();
 }