/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Delivery::find(); $subquery = DeliveryDetail::find()->select('delivery_id, SUM(count) as detail_count')->groupBy('delivery_id'); $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['time' => SORT_DESC]]]); /* *set the count search */ $dataProvider->sort->attributes['detailCount'] = ['asc' => ['detailSum.detail_count' => SORT_ASC], 'desc' => ['detailSum.detail_count' => SORT_DESC], 'label' => Yii::t('app', 'Count')]; $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } if (isset($this->time) && $this->time != '') { $date_explode = explode(" to ", $this->time); $date1 = trim($date_explode[0]); $date2 = trim($date_explode[1]); $date2 = date("Y-m-d", strtotime("+1 day", strtotime($date2))); $query->andFilterWhere(['between', 'delivery.time', $date1, $date2]); } $query->joinwith('customer'); $query->andFilterWhere(['id' => $this->id, 'detailSum.detail_count' => $this->detailCount]); $query->andFilterWhere(['like', 'state', $this->state]); $query->andFilterWhere(['like', 'money', $this->money]); $query->andFilterWhere(['like', 'profit', $this->profit]); $query->andFilterWhere(['like', 'customer.name', $this->customer_id]); return $dataProvider; }
public function actionSave($id) { $data = Yii::$app->request->post(); $delivery = Delivery::findOne($id); $delivery->name = $data['name']; $delivery->address = $data['address']; $delivery->location = $data['location']; $delivery->comment = $data['comment']; $delivery->save(); }
public function actionUpdate($id) { $model = Orders::findOne($id); if ($model->load(Yii::$app->request->post())) { $model->editTimestamp = date('Y-m-d H:i:s'); $model->editName = Yii::$app->user->identity->full_name; $model->save(); return true; } return $this->renderAjax('form', ['model' => $model, 'clients' => ArrayHelper::map(Clients::find()->all(), 'id', 'name'), 'delivery' => ArrayHelper::map(Delivery::find()->all(), 'id', 'name'), 'action' => 'create']); }
/** * Execute the console command. * * @return mixed */ public function fire() { $now = Carbon::now(); $model = Delivery::where('delivery_type_id', 2)->whereNull('datepublish')->whereBetween('datestart', [$now->subMinutes(2)->format('Y-m-d H:i:s'), $now->addMinute(3)->format('Y-m-d H:i:s')])->get(); $data = $model->toArray(); $driver = Driver::whereFlagactive(1)->get(); Log::warning($now->format('Y-m-d H:i:s')); Log::warning($now->subMinutes(2)->format('Y-m-d H:i:s')); Log::warning($now->addMinute(3)->format('Y-m-d H:i:s')); Log::info('Cron funcionando'); if (!empty($driver) && count($data) > 0) { foreach ($driver as $value) { foreach ($data as $objDelivery) { Notification::create(array('type_id' => Notification::PUSH, 'platform_id' => Platform::ANDROID, 'user_id' => $value->id, 'app_id' => Config::get('app.APP_ID'), 'token' => \md5(\uniqid(\time())), 'description' => "{\"delivery_id\":\"{$objDelivery['id']}\",\"description\":\"Nuevo delivery\"}", 'appname' => Config::get('app.APP_NAME'), 'dbconfig' => Config::get('app.DB_CONFIG'), 'params' => "{\"delivery_id\":\"{$objDelivery['id']}\",\"description\":\"Nuevo delivery\"}", 'tosend' => $value->uuid, 'to' => 'Test', 'from' => 'Cligo', 'flagsend' => 0, 'flagactive' => 1)); $del = Delivery::find($objDelivery['id']); $del->datepublish = Carbon::now()->format('Y-m-d H:i:s'); $del->save(); Log::info("Notificacion enviada del delivery id: {$objDelivery['id']}"); } } } }
/** * @return \yii\db\ActiveQuery */ public function getDeliveries() { return $this->hasMany(Delivery::className(), ['customer_id' => 'id']); }
public function getApiAd() { $this->layout = null; $response = null; $responseType = ''; $deliveryStatus = ''; $requestType = Input::get('rt', Delivery::REQUEST_TYPE_AD); $flightWebsiteID = Input::get('fpid', ''); $zoneID = Input::get('zid', 0); $data = Input::all(); $trackingModel = new Tracking(); $deliveryModel = new Delivery(); $isOverReport = $data['ovr'] = false; $showBanner = showBanner(); if ($showBanner !== FALSE) { $flightWebsiteID = $showBanner; } $responseData = []; $hostReferer = $trackingModel->getRequestReferer(); $responseType = $trackingModel->checkPreProcess($requestType, $hostReferer, $zoneID); //read redis 1 $data['ref'] = $hostReferer; $adZone = $deliveryModel->getAdzone($zoneID); if ($adZone) { $platform = ''; $flightWebsites = $deliveryModel->getAvailableAds($adZone->publisher_site_id, $adZone->ad_format_id, $flightWebsiteID, $platform); if ($flightWebsites) { //sort available flights base on priority and retargeting //TO DO retargeting $flightWebsites = $deliveryModel->sortAvailableFlightWebsites($flightWebsites); //lấy ad từ list thỏa điều kiện để trả về $deliveryInfo = $deliveryModel->getFullFlightInfo($flightWebsites, $adZone->publisher_site_id, $adZone->ad_format_id); $redis = new RedisBaseModel(env('REDIS_HOST', '127.0.0.1'), env('REDIS_PORT_6', '6379'), false); foreach ($flightWebsites as $k => $flightWebsite) { if (!empty($flightWebsite) && !empty($deliveryInfo['flightDates'][$flightWebsite->flight_id]) && !empty($deliveryInfo['flights'][$flightWebsite->flight_id])) { $flightDates = $deliveryInfo['flightDates'][$flightWebsite->flight_id]; $flight = $deliveryInfo['flights'][$flightWebsite->flight_id]; $ad = $deliveryInfo['ads'][$flight->ad_id]; $arrPlatform = json_decode($ad->platform); if (!empty($arrPlatform) && in_array('mobile_app', $arrPlatform) || isLocal()) { $checkFlightDate = $deliveryModel->checkFlightDate($flightDates, $flight); //flight date ok if ($checkFlightDate) { $deliveryStatus = $deliveryModel->deliveryAd($ad, $flightWebsite, $flight, $flightDates); if ($deliveryStatus == Delivery::DELIVERY_STATUS_OK || $deliveryStatus == Delivery::DELIVERY_STATUS_OVER_REPORT) { //Check retargeting if (!empty($flight->audience)) { $check = false; $audience = json_decode($flight->audience, true); if (!empty($audience['audience_id'])) { if (isset($_COOKIE["yoAu_{$audience['audience_id']}"]) && !empty($_COOKIE["uuid"])) { if ($_COOKIE["yoAu_{$audience['audience_id']}"] === '1' || substr($_COOKIE["yoAu_{$audience['audience_id']}"], 0, 2) === '1.') { $check = true; } } if ($audience['operator'] === 'not in') { $check = !$check; } } if ($check === false) { $deliveryStatus == Delivery::RESPONSE_TYPE_AUDIENCE_LIMIT; continue; } } //trả về ad này $serveAd = $ad; $data['aid'] = $ad->id; $data['fpid'] = $flightWebsite->id; //over report if ($deliveryStatus == Delivery::DELIVERY_STATUS_OVER_REPORT) { $data['ovr'] = $isOverReport = true; } $responseType = Delivery::RESPONSE_TYPE_ADS_SUCCESS; break; } } else { $deliveryStatus = Delivery::RESPONSE_TYPE_FLIGHTDATE_NOT_AVAILABLE; } } else { $deliveryStatus = Delivery::PLATFORM_TYPE_INVALID; } } } } if ($responseType != Delivery::RESPONSE_TYPE_ADS_SUCCESS) { $responseType = Delivery::RESPONSE_TYPE_NOT_AVAILABLE; } } if (empty($responseType)) { $responseType = Delivery::RESPONSE_TYPE_INVALID; } elseif ($responseType == Delivery::RESPONSE_TYPE_ADS_SUCCESS) { (new RawTrackingSummary())->addSummary('ads_request', $data['fpid'], $adZone->id, $adZone->ad_format_id, $flightWebsite->flight_id, $flightWebsite->id, $flight->ad_id, $flight->campaign_id, $flightWebsite->publisher_base_cost, $isOverReport); if (!empty($serveAd)) { pr($serveAd); $responseData['w'] = intval($serveAd->width); $responseData['h'] = intval($serveAd->height); $responseData['mime'] = !empty($serveAd->mime) ? $serveAd->mime : ''; if ($serveAd->ad_type === 'html') { $responseData['adm'] = urlencode($serveAd->html_source); } else { $responseData['adm'] = urlencode($serveAd->source_url); } $responseData['pos'] = !empty($serveAd->position) ? $serveAd->position : ''; $arrTrackingImpression = []; $arrTrackingImpression[] = urlencode(urlTracking('impression', $data['aid'], $data['fpid'], $zoneID, '', '', $data['ovr'], '') . '&plf=mobile_app'); if (!empty($serveAd->third_impression_track)) { $thirdImpressionTrackArr = explode("\n", $serveAd->third_impression_track); if (!empty($thirdImpressionTrackArr)) { foreach ($thirdImpressionTrackArr as $item) { $arrTrackingImpression[] = urlencode($this->replaceParam($item)); } } } $responseData['nimp'] = $arrTrackingImpression; $arrTrackingClick = []; $arrTrackingClick[] = urlencode(urlTracking('click', $data['aid'], $data['fpid'], $zoneID, '', '', $data['ovr'], '') . '&plf=mobile_app'); if (!empty($serveAd->third_click_track)) { $thirdClickTrackArr = explode("\n", $serveAd->third_click_track); if (!empty($thirdClickTrackArr)) { foreach ($thirdClickTrackArr as $item) { $arrTrackingClick[] = urlencode($this->replaceParam($item)); } } } $responseData['nclk'] = $arrTrackingClick; $responseData['lpage'] = urlencode($this->replaceParam($serveAd->destination_url)); $responseData['xml'] = null; } } pr($responseData); pr($deliveryStatus); pr($responseType, 1); return response()->json($responseData); }
/** * @return \yii\db\ActiveQuery */ public function getDelivery() { return $this->hasOne(Delivery::className(), ['id' => 'delivery_id']); }
private function createStudio($StudioForm, \app\modules\users\models\User $User) { if ($StudioForm->load(Yii::$app->request->post()) && $StudioForm->validate()) { // TODO обернуть в транзакцию $Studio = new Studio(); $Studio->type = $StudioForm->type; $Studio->name = $StudioForm->name; $User->country_id = $StudioForm->countryId; $User->city_id = $StudioForm->cityId; $Studio->currency_id = $StudioForm->currencyId; $Studio->custom_delivery = $StudioForm->custom_delivery; $Studio->custom_payment = $StudioForm->custom_payment; $Studio->slogan = $StudioForm->slogan; $Studio->description = $StudioForm->description; // Сохраним студию назначив ее пользователю $User->link('studio', $Studio); // Когда у Студии будет id (после записи), назначим связи многие ко многим // TODO попробовать сразу подать массив в link, т.к. запрос на каждую итерацию $deliveryObjects = Delivery::findAll($StudioForm->deliveryList); foreach ($deliveryObjects as $delivery) { $Studio->link('delivery', $delivery); } $paymentObjects = Payment::findAll($StudioForm->paymentList); foreach ($paymentObjects as $payment) { $Studio->link('payment', $payment); } // Назначим новую роль пользователю (atelierOwner или storeOwner) $User->assignRole($Studio->type . 'Owner'); // Рендерим страницу магазина или ателье return $this->redirect(['index']); } $StudioForm->fillCountry($User); $StudioForm->fillCity($User); return $this->render('create', ['studioForm' => $StudioForm]); }
public function initVast($ad, $flightPublisherID, $publisherAdZoneID, $checksum, $isOverReport = false, $referrer = '') { if ($ad && $flightPublisherID && $publisherAdZoneID) { $trackingModel = new Tracking(); $deliverModel = new Delivery(); $this->id = $ad->id; $this->flight_publisher_id = $flightPublisherID; $this->publisher_ad_zone_id = $publisherAdZoneID; $this->linear = $ad->video_linear; $this->width = $ad->width; $this->height = $ad->height; $this->duration = $ad->video_duration; $this->type_vast = $ad->video_type_vast; //$this->vast_version = $ad->vast_version; $this->skipads = $ad->skipads; $this->file = $ad->source_url; $this->title = $ad->name; if (empty($ad->vast_include)) { $this->wrapper_tag = $this->replaceParam($ad->video_wrapper_tag); } else { $vastTagUrl = urlencode($this->replaceParam($ad->video_wrapper_tag)); $this->wrapper_tag = AD_SERVER_FILE . 'get-vast-tag?vast_tag=' . $vastTagUrl . '&skip=' . $ad->skipads . '&aid=' . $ad->id; } $this->bitrate = $ad->video_bitrate; $this->url = $ad->destination_url; $this->ad_format = $ad->ad_format_id; $this->referrer = $referrer; $this->third_party_tracking = $ad->third_party_tracking; $this->third_impression_track = $ad->third_impression_track; $this->third_click_track = $ad->third_click_track; $this->checksum = $checksum; $this->ovr = $isOverReport; $adFormat = $deliverModel->getAdFormat($ad->ad_format_id); $this->ad_format_name = isset($adFormat->name) ? str_replace(' ', '_', $adFormat->name) : ''; $this->name = isset($ad->name) ? str_replace(' ', '', strtolower($ad->name)) : ''; $this->publisher_domain = $trackingModel->getRequestReferer(); $campaignInfo = $deliverModel->getCamPaignInfoByPublisher($publisherAdZoneID, $flightPublisherID, $ad->ad_format_id); if ($campaignInfo) { $this->flight_name = isset($campaignInfo['flight_name']) ? $campaignInfo['flight_name'] : ''; $this->category_name = isset($campaignInfo['category_name']) ? $campaignInfo['category_name'] : ''; } return true; } return false; }
/** * Получить связанные со студией способы доставки * @return \yii\db\ActiveQuery */ public function getDelivery() { return $this->hasMany(Delivery::className(), ['id' => 'delivery_id'])->viaTable('studio_delivery', ['studio_id' => 'id']); }
function getStatusInventory($data) { $endadate = strtotime($data->end_date); $startdate = strtotime($data->start_date); $now = strtotime(date('Y-m-d', time())); $Delivery = new Delivery(); $statusInventory = 'play'; $statusInventoryMsg = "Running"; $event = Tracking::getTrackingEventType($this->cost_type); if ($startdate <= $now && $endadate >= $now) { $status = $Delivery->checkInventory($this, 0, $event, json_decode($this->date)); if ((string) $status == 'inventory_limited' || (string) $status == 'ad_zone_daily_inventory_limited') { $statusInventory = 'stop'; $statusInventoryMsg = $status; } } else { if ($startdate > $now) { $statusInventory = 'stop'; $statusInventoryMsg = "Campaignnotstart"; } else { $statusInventory = 'stop'; $statusInventoryMsg = "End_Campaign"; } } $statusI['status'] = $statusInventory; $statusI['msg'] = 'text.' . $statusInventoryMsg; return $statusI; }
public static function deliveryArr() { return ArrayHelper::map(Delivery::find()->asArray()->all(), 'id', 'name'); }
<div class="form-group"> <?php echo AutoComplete::widget(['name' => 'State', 'id' => 'ddd', 'clientOptions' => ['source' => Url::to(['clients/search']), 'select' => new JsExpression("function( event, ui ) {\n \$('#orders-clientid').val(ui.item.id);\n }")], 'options' => ['class' => 'form-control clients-main-search']]); ?> </div> <?php } elseif ($attr == 'city') { ?> <?php echo $form->field($model, $attr)->label(false); ?> <?php } elseif ($attr == 'deliveryId') { ?> <?php echo $form->field($model, $attr)->dropDownList(\app\models\Delivery::deliveryArr())->label(false); ?> <?php } elseif ($attr == 'payment') { ?> <?php echo $form->field($model, $attr)->dropDownList($model->paymentArr)->label(false); ?> <?php } elseif ($attr == 'driverId') { ?> <?php echo $form->field($model, $attr)->dropDownList(\app\models\Drivers::driversArr())->label(false); ?> <?php }
/** * Finds the Delivery model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param integer $id * @return Delivery the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Delivery::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
public function validateDeliveryList($attribute, $params) { $deliveryList = Delivery::findAll($this->deliveryList); if (count($deliveryList) != count($this->deliveryList)) { // TODO добавить отправку уведомления об ошибке с данными на email разработчику $this->addError('deliveryList', "Ошибка выбора способа доставки."); } }