Esempio n. 1
0
 /**
  * Получение одного проекта
  * 
  * @param  array $aParams массив входящих данных
  * @return array $aResult ответ
  */
 protected function x____projects_get($aParams = array())
 {
     $this->_validDevice($aParams);
     $sId = __paramValue('int', $aParams['id'], null, true);
     if (!empty($sId)) {
         require_once ABS_PATH . '/classes/projects.php';
         $oPrj = new new_projects();
         $aProject = $oPrj->GetPrjCust($sId);
         $aAttaches = $oPrj->getAllAttach($sId);
         if (!empty($aProject)) {
             if ($aProject['is_banned'] || $aProject['is_blocked']) {
                 // работодатель или проест заблокированы
                 $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
             }
             $aResult = array('item' => $this->_getProjectData($aProject));
             $nUid = get_uid(false);
             $aSpecs = new_projects::getSpecs($sId);
             if (is_array($aSpecs) && $aSpecs) {
                 $aResult['item']['category_id'] = $aSpecs[0]['category_id'];
                 $aResult['item']['subcategory_id'] = $aSpecs[0]['subcategory_id'];
             }
             $aResult['item']['attaches'] = array();
             if ($aAttaches) {
                 foreach ($aAttaches as $attach) {
                     $aResult['item']['attaches'][] = array("url" => WDCPREFIX . '/' . $attach['path'], "file" => $attach['name']);
                 }
             }
             $aResult['item']['responses'] = array();
             if ($aProject['kind'] == 7) {
                 // конкурс
                 require_once ABS_PATH . '/classes/contest.php';
                 $oContest = new contest($sId, $nUid, is_emp(), $aProject['user_id'] == $nUid, false, is_pro());
                 $oContest->GetOffers();
                 if (is_array($oContest->offers) && $oContest->offers) {
                     foreach ($oContest->offers as $aOne) {
                         $aResult['item']['responses'][] = $this->_getContestOfferData($aOne);
                     }
                 }
             } else {
                 // проект
                 require_once ABS_PATH . '/classes/projects_offers.php';
                 require_once ABS_PATH . '/classes/projects_offers_dialogue.php';
                 $oPrjOffers = new projects_offers();
                 $obj_dialogue = new projects_offers_dialogue();
                 $nOffersCnt = 0;
                 if (is_emp()) {
                     // залогинен работодатель
                     $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, $aProject['user_id'] == $nUid, 'date', $aProject['user_id'] == $nUid ? 'a' : 'nor');
                 } else {
                     $aOffers = $oPrjOffers->GetPrjOffers($nOffersCnt, $sId, 'ALL', 0, $nUid, false, null, 'nor');
                 }
                 // Диалоги по предложениям к данному проекту и все остальное
                 if (is_array($aOffers) && $aOffers) {
                     foreach ($aOffers as $key => $value) {
                         $aOffers[$key]['exec_id'] = $aProject['exec_id'];
                         $aOffers[$key]['emp_uid'] = $aProject['user_id'];
                         $aOffers[$key]['dialogue'] = $obj_dialogue->GetDialogueForOffer($value['id']);
                         $aResult['item']['responses'][] = $this->_getProjectOfferData($aOffers[$key]);
                     }
                 }
                 $aResult['item']['responses_count'] = $nOffersCnt;
                 $aResult['item']['is_responses_exists'] = $oPrjOffers->OfferExist($sId, $nUid) ? 1 : 2;
                 // Наличие предложения данного юзера по данному проекту
                 if ($aResult['item']['is_responses_exists'] == 1) {
                     // Предложение данного пользователя по данному проекту
                     $user_offer = $oPrjOffers->GetPrjOffer($sId, $nUid);
                     $user_offer['exec_id'] = $aProject['exec_id'];
                     $user_offer['emp_uid'] = $aProject['user_id'];
                     // Диалог по предложению данного пользователя
                     $user_offer['dialogue'] = $obj_dialogue->GetDialogueForOffer($user_offer['id']);
                     $aResult['item']['responses'][] = $this->_getProjectOfferData($user_offer);
                 }
             }
         } else {
             $this->error(EXTERNAL_ERR_PROJECT_NOT_FOUND);
         }
     } else {
         $this->error(EXTERNAL_ERR_EMPTY_PROJECT_ID);
     }
     return $aResult;
 }