public function actionData()
 {
     $transport_id = (int) Yii::app()->request->getPost('id');
     $pass = Yii::app()->request->getPost('pass', '');
     $dataRequest = Yii::app()->request->getPost('data', '');
     $data = json_decode($dataRequest, false);
     if ($transport_id && $pass && is_array($data)) {
         Yii::app()->getModule('cabinet');
         $transport = Transport::model()->findByPk($transport_id);
         if (!is_null($transport)) {
             $tracking = Tracking::model();
             $checkPass = $tracking->getPasswordForAPI($transport);
             if (0 == strcmp($pass, $checkPass)) {
                 $res = $tracking->saveTrackData($transport_id, $data);
                 echo CJSON::encode(['status' => $res ? 'success' : 'failed']);
                 Yii::log("actionData success", "info");
             } else {
                 echo CJSON::encode(['status' => 'failed', 'data' => "wrong pass for transport_id=[{$transport_id}]"]);
             }
         } else {
             echo CJSON::encode(['status' => 'failed', 'data' => "Transport not found [{$transport_id}]"]);
         }
     } else {
         echo CJSON::encode(['status' => 'failed', 'data' => "Wrong params transport_id=[{$transport_id}],pass=[{$pass}]"]);
     }
     Yii::app()->end();
 }
 public function actionDelete($id)
 {
     $model = Transport::model()->findByPk($id);
     if (!Yii::app()->user->checkAccess('admin') && ((Yii::app()->getUser()->getProfile()->modules->head != UserModules::DIRECTOR_COMPANY || Yii::app()->user->getProfile()->company_id != $model->user->company_id) && (Yii::app()->getUser()->getProfile()->modules->transport != '1' || $model->user_id != Yii::app()->user->id) || Yii::app()->user->getProfile()->company->active == '0')) {
         throw new CHttpException(403);
     }
     if ($model === null) {
         throw new CHttpException(404, 'Указанная запись не найдена');
     }
     $model->deleteByPk($id);
     $this->redirect('/cabinet/avtopark');
     throw new CHttpException(404, 'The requested page does not exist.');
 }
Exemple #3
0
<?php

if ('Reis' == $Response->model || 'Cargo' == $Response->model) {
    $assets = dirname(__FILE__) . '/../assets';
    $baseUrl = Yii::app()->assetManager->publish($assets);
    Yii::app()->getClientScript()->registerCssFile($baseUrl . '/gpsview.css');
    $countTracking = Transport::model()->getTrackingCount();
    //$Reis = Reis::model()->findByPk($Response->external_id);
    if ($countTracking) {
        ?>
<script>
    function processChoiceTransportForGPSItem() {
        $.ajax({
            url: '/cabinet/avtopark/trackinglist',
            data: {
                '<?php 
        echo Yii::app()->request->csrfTokenName;
        ?>
': '<?php 
        echo Yii::app()->request->csrfToken;
        ?>
'
            },
            dataType: 'json',
            method: 'post',
            success: function(data) {
                //console.log("processChoiceTransportForGPSItem.success",data);
                if ( 'success' == data.status && $.isArray( data.data ) ) {
                    view = createChoiceTransportForGPSView( data.data );
                    var $el = $('#id_choice_transport_for_gps');
                    if ( ! $el.length ) {
 public function actionGetDataForFillForm()
 {
     if (Yii::app()->user->checkAccess('avtopark')) {
         $transport_id = (int) Yii::app()->request->getPost('id');
         // получить массив полей формы
         $data = Yii::app()->request->getPost('data');
         if (is_array($data) && count($data)) {
             // проверить что транспорт принадлежить компании
             $company_id = Yii::app()->getUser()->getProfile()->company_id;
             $arrTmp = [];
             foreach ($data as $v) {
                 if (!isset($arrTmp[$v['name']])) {
                     $arrTmp[$v['name']] = $v['value'];
                 } else {
                     Yii::log("actionGetDataForFillForm data already have key=[{$v['name']}]", "info");
                 }
             }
             $Transport = Transport::model();
             $TransportItem = $Transport->findByPk($transport_id);
             if (!is_null($TransportItem)) {
                 $arrRel = $Transport->relations();
                 $arrRelData = [];
                 foreach ($Transport->getRelationList() as $vrel) {
                     // данные из других таблиц брать по getRelationList
                     if (isset($arrRel[$vrel])) {
                         $resTmp = $TransportItem->{$vrel};
                         if (is_array($resTmp)) {
                             $arrRelData[$vrel] = [];
                             foreach ($resTmp as $vrelItem) {
                                 $arrRelData[$vrel][] = $vrelItem->getPrimaryKey();
                             }
                         } else {
                             $arrRelData[$vrel] = $resTmp->getPrimaryKey();
                         }
                     }
                 }
                 $criteria = new CDbCriteria();
                 $criteria->addCondition("t.transport_id=:transport_id");
                 $criteria->with = ['user' => ['joinType' => 'INNER JOIN', 'condition' => 'user.company_id = :company_id']];
                 $criteria->params = [':company_id' => $company_id, ':transport_id' => $transport_id];
                 $transportItemTmp = $Transport->find($criteria);
                 if (!is_null($transportItemTmp)) {
                     $transportItem = $transportItemTmp->attributes;
                     $transportItem['transport_type_id'] = Reis::getReplaceMyTransportTypeToReis($transportItem['type_id']);
                     unset($transportItem['type_id']);
                     unset($transportItem['notice']);
                     unset($transportItem['create']);
                     unset($transportItem['update']);
                     // надо вернуть массив с ключ-значение, которое будет проставленно в форму
                     foreach ($arrTmp as $k => $v) {
                         $kTmp = preg_replace('/^(Reis\\[)(.+?)(\\])$/ui', '$2', $k);
                         if (array_key_exists($kTmp, $transportItem)) {
                             $arrTmp[$k] = $transportItem[$kTmp];
                         } else {
                             if (isset($arrRelData[$kTmp])) {
                                 // видимо данные из relation таблиц
                                 $arrTmp[$k] = $arrRelData[$kTmp];
                             } else {
                                 unset($arrTmp[$k]);
                             }
                         }
                     }
                     echo CJSON::encode(['status' => 'success', 'data' => $arrTmp]);
                 } else {
                     echo CJSON::encode(['status' => 'failed', 'data' => "not found"]);
                 }
             }
         } else {
             echo CJSON::encode(['status' => 'failed', 'data' => "wrong data"]);
         }
     } else {
         echo CJSON::encode(['status' => 'failed', 'data' => "access denied"]);
     }
     Yii::app()->end();
 }
 public function actionTrackingSendRandomData()
 {
     if (!Yii::app()->getUser()->getIsGuest()) {
         $num = mt_rand(5, 10);
         $data = [];
         $lat = 55.751244;
         $lng = 37.618423;
         $time = time();
         for ($i = 0; $i < $num; ++$i) {
             $tmp = ['lat' => null, 'lng' => null, 'time' => null];
             $dir = 0 == mt_rand(1, 1000) % 2 ? -1 : 1;
             $delta = (double) mt_rand(1, 20) / (double) 1000000;
             $lat += $delta * $dir;
             $tmp['lat'] = $lat;
             $dir = 0 == mt_rand(1, 1000) % 2 ? -1 : 1;
             $delta = (double) mt_rand(1, 20) / (double) 1000000;
             $lng += $delta * $dir;
             $tmp['lng'] = $lng;
             $time -= 10;
             $tmp['time'] = $time;
             $data[] = $tmp;
         }
         Yii::app()->getModule('cabinet');
         Yii::app()->getModule('tracking');
         $Transport = \Transport::model()->findByAttributes(['user_id' => 1, 'tracking_on' => 1]);
         $transport_id = $Transport->transport_id;
         $pass = \Tracking::model()->getPasswordForAPI($Transport);
         //$transport_id = 1;
         //$pass = '******';
         $post = ['id' => $transport_id, 'pass' => $pass, 'data' => json_encode($data)];
         $ch = curl_init();
         try {
             //curl_setopt($ch, CURLOPT_URL, "http://cargotogo.com/tracking/data");
             curl_setopt($ch, CURLOPT_URL, "http://" . $_SERVER['HTTP_HOST'] . "/tracking/data");
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
             //curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json'] );
             curl_setopt($ch, CURLOPT_POST, 1);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
             $response = curl_exec($ch);
             if (FALSE === $response) {
                 $str_log = '';
                 $str_log = "CURL error=[" . curl_error($ch) . "]";
                 $str_log .= ",HTTP_CODE=[" . curl_getinfo($ch, CURLINFO_HTTP_CODE) . "]";
                 $str_log .= ",Last URL=[" . curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) . "]";
                 $str_log .= ",last headers=[" . curl_getinfo($ch, CURLINFO_HEADER_OUT) . "]";
                 echo "ERROR : " . $str_log;
             } else {
                 echo "SUCCESS : [{$response}]";
             }
         } finally {
             curl_close($ch);
         }
     }
     Yii::app()->end();
 }
<?php

switch ($data['modelName']) {
    case "Transport":
        Transport::disableDefaultScope();
        $model = Transport::model('Transport')->findByPk($data['key']);
        echo $this->renderPartial('application.views.transport._view', array('data' => $model));
        break;
    case "Cargo":
        Cargo::disableDefaultScope();
        $model = Cargo::model()->findByPk($data['key']);
        echo $this->renderPartial('application.views.cargo._view', array('data' => $model));
        break;
    case "Tender":
        $model = Tender::model()->findByPk($data['key']);
        echo $this->renderPartial('application.views.tender._view', array('data' => $model));
        break;
    case "User":
        $model = User::model()->findByPk($data['key']);
        echo $this->renderPartial('application.views.user._view', array('data' => $model));
        break;
    default:
        echo "Не правильные данные обратитесь к администратору.";
}
 private function deleteTransport(\User $user)
 {
     $data = 'user_id = :user_id';
     $param = array(':user_id' => $user->id);
     $count = Transport::model()->count($data, $param);
     $transports = Transport::model()->findAll($data, $param);
     foreach ($transports as $transport) {
         $this->deleteFile($transport->transport_id, 'Transport');
         //$this->deleteTransportRelation($transport->transport_id);
         $this->deleteRelation($transport->transport_id, "transport_id", "site_transport_relations");
     }
     if ($this->debug) {
         echo "    ... Transport  : del " . $count . " \n";
     } else {
         Transport::model()->deleteAll($data, $param);
     }
 }
 public function actionDelete($id)
 {
     $user = User::model()->find(array('condition' => 'id = :id', 'params' => array(':id' => $id)));
     if (isset($user)) {
         if (!Yii::app()->user->checkAccess('admin') && (Yii::app()->getUser()->getProfile()->modules->head != UserModules::DIRECTOR_COMPANY || Yii::app()->user->getProfile()->company_id != $user->company_id || Yii::app()->user->id == $id)) {
             throw new CHttpException(403);
         }
         $users = User::getUserList($id);
         $model = new ModuleAccess();
         if (isset($_POST['ModuleAccess'])) {
             $userId = $_POST['ModuleAccess']['user'];
             Transport::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Product::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Cargo::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Reis::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Sklad::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Custom::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             Insurance::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             SpecialTechnique::model()->updateAll(array('user_id' => $userId), 'user_id=' . $id);
             if ($user->delete()) {
                 $this->redirect('/cabinet/staff/list');
             }
         }
         $this->render('delete', array('model' => $model, 'user' => $user, 'users' => $users));
     }
 }