/**
  * Установка причины отказа от заявки.
  *
  * @todo Добавить вывод нотификаций!
  * @return array
  */
 public function actionSelect()
 {
     if (Yii::$app->getRequest()->getIsAjax() && Yii::$app->getRequest()->post()) {
         Yii::$app->getResponse()->format = Response::FORMAT_JSON;
         $leadId = Yii::$app->getRequest()->post('leadId');
         $refuseTypeId = Yii::$app->getRequest()->post('refuseTypeId');
         /** @var \common\models\User $user */
         $user = Yii::$app->getUser()->getIdentity();
         $lead = Lead::findOne(['lead_id' => $leadId, 'company_id' => $user->getCompanyId(), 'is_deleted' => false]);
         if (!$lead) {
             return ['status' => false];
         }
         // @todo Вынести сохранение причины отказа в компонент.
         $refuseType = Yii::$app->getRequest()->post('refuseType');
         if (!empty($refuseType)) {
             $leadRefuseType = new LeadRefuseType();
             $leadRefuseType->setUserId($user->getId());
             $leadRefuseType->setCompanyId($user->getCompanyId());
             $leadRefuseType->setType($refuseType);
             $leadRefuseType->save();
             $refuseTypeId = $leadRefuseType->getLeadRefuseTypeId();
         }
         $leadRefuse = new LeadRefuse();
         $leadRefuse->setLeadId($leadId);
         $leadRefuse->setLeadRefuseTypeId($refuseTypeId);
         $leadRefuse->setUserId($user->getId());
         $leadRefuse->save();
         return ['status' => true];
     }
 }
Пример #2
0
 /**
  * Сохранение заявки.
  *
  * @return Lead|bool
  */
 public function save()
 {
     if ($this->leadId) {
         $lead = Lead::findOne(['lead_id' => $this->leadId]);
     } else {
         $lead = new Lead();
     }
     if ($lead->getStatus() && $lead->getStatus() != $this->getStatus()) {
         $lead->setChangeStatusUserId($this->userId);
     }
     $lead->setLandingId($this->landingId);
     $lead->setFormId($this->formId);
     $lead->setUserId($this->userId);
     $lead->setCompanyId($this->companyId);
     $lead->setStatus($this->status);
     $lead->setPrice($this->price);
     $leadData = [];
     foreach ($this->data as $fieldName => $fieldValue) {
         $leadData[] = ['name' => $fieldName, 'label' => $fieldValue['label'], 'value' => $fieldValue['value']];
     }
     $lead->setData(json_encode($leadData));
     $lead->save();
     return $lead ?: false;
 }
Пример #3
0
 /**
  * Изменение статуса
  */
 public function actionChangestatus()
 {
     if (Yii::$app->getRequest()->getIsAjax() && Yii::$app->getRequest()->post()) {
         Yii::$app->getResponse()->format = Response::FORMAT_JSON;
         $params = Yii::$app->getRequest()->post();
         if (empty($params['userId']) || empty($params['leadId']) || empty($params['selectedStatus'])) {
             return ['status' => false];
         }
         /** @var \common\models\User $user */
         $user = User::findIdentity($params['userId']);
         /** @var \common\models\Lead $lead */
         $lead = Lead::findOne(['lead_id' => $params['leadId'], 'company_id' => $user->getCompanyId(), 'is_deleted' => false]);
         if (!$lead) {
             return ['status' => false];
         }
         $lead->setStatus($params['selectedStatus']);
         $lead->setChangeStatusUserId($params['userId']);
         $status = $lead->save();
         $this->leadLogger->write($lead, LeadActionLog::ACTION_CHANGE_STATUS);
         return ['status' => $status, 'selectedStatus' => $params['selectedStatus'], 'result' => ChangeLeadStatusWidget::widget(['userId' => $params['userId'], 'leadId' => $params['leadId'], 'status' => $params['selectedStatus']])];
     }
     $this->redirect('/lead/index');
 }