public function adsProcess()
 {
     $responseType = '';
     $expandFields = array();
     $zoneID = Input::get('zid', 0);
     $publisherID = Input::get('pid', 0);
     $requestType = Input::get('type', Delivery::REQUEST_TYPE_AD);
     $trackingModel = new Tracking();
     $deliveryModel = new Delivery();
     $flightDateModel = new FlightDateBaseModel();
     //ghi log trước khi xử lý
     $logPreProcess = $trackingModel->logPreProcess($requestType);
     if ($logPreProcess) {
         //kiểm tra referrer
         $hostReferer = $trackingModel->getRequestReferer();
         if (empty($zoneID)) {
             $responseType = Delivery::RESPONSE_TYPE_INVALID;
         } elseif (empty($hostReferer)) {
             $responseType = Delivery::RESPONSE_TYPE_EMPTY_REFERRER;
         } elseif ($trackingModel->countLatestRequest(1) < Delivery::ANTI_CHEAT_MAX_REQUEST_PER_1MIN && $trackingModel->countLatestRequest(5) < Delivery::ANTI_CHEAT_MAX_REQUEST_PER_5MIN) {
             $responseType = Delivery::RESPONSE_TYPE_ANTI_MANY_REQUEST;
         }
         //pre validate ok
         if (empty($responseType)) {
             //default invalid
             if ($zoneID && $publisherID) {
                 $adZone = PublisherAdZoneBaseModel::find($zoneID);
                 if ($adZone && $adZone->publisher) {
                     if ($adZone->publisher_id == $publisherID) {
                         $flightPublishers = FlightPublisherBaseModel::where('publisher_id', $publisherID)->with('flightDate', function ($query) {
                             $today = date('Y-m-d');
                             $query->where('start', '<=', $today)->where('end', '>=', $today);
                         })->where('publisher_ad_zone_id', $zoneID)->orderBy('order', 'asc')->get();
                         if ($flightPublishers) {
                             if ($requestType == Delivery::REQUEST_TYPE_AD) {
                                 //lấy ad từ list thỏa điều kiện để trả về
                                 foreach ($flightPublishers as $k => $flightPublisher) {
                                     if ($flightPublisher->flightDate) {
                                         $runningInventory = $trackingModel->runningInventory($flightPublisher->id);
                                         if ($flightPublisher->total_inventory < $runningInventory) {
                                             $deliveryStatus = $deliveryModel->deliveryAd($flightPublisher->ad, $flightPublisher->flight);
                                             if ($deliveryStatus == Delivery::DELIVERY_STATUS_OK) {
                                                 //trả về ad này
                                                 $serveAd = $flightPublisher->ad;
                                                 $expandFields = array('flight_id' => $flightPublisher->flight_id, 'ad_format_id' => $flightPublisher->ad_format_id, 'ad_id' => $flightPublisher->ad_id, 'campaign_id' => $flightPublisher->campaign_id, 'publisher_ad_zone_id' => $flightPublisher->publisher_ad_zone_id, 'flight_publisher_id' => $flightPublisher->id, 'publisher_id' => $flightPublisher->publisher_id, 'flight_publisher_id' => $flightPublisher->id);
                                                 break;
                                             }
                                         }
                                     }
                                 }
                                 //endforeach
                             } elseif ($requestType == Delivery::REQUEST_TYPE_TRACKING_BEACON) {
                                 //tracking beacon TO DO, now : do nothing
                                 if ($trackingModel->isKnownVisitor()) {
                                 } else {
                                     $responseType = Delivery::RESPONSE_TYPE_EMPTY_REFERRER;
                                 }
                             }
                         }
                     }
                     //serve Ad
                     if (!empty($serveAd)) {
                     } else {
                     }
                 }
             }
         }
     }
     if (empty($responseType)) {
         $responseType = Delivery::RESPONSE_TYPE_INVALID;
     }
     //ghi log process
     $trackingModel->logAfterProcess($responseType, $expandFields);
     return $deliveryModel->emptyAd();
 }
 public function getAdzone()
 {
     $model = new PublisherAdZoneBaseModel();
     $website_ids = Input::get('webiste', array());
     $listAdZone = $model->whereIn('publisher_site_id', $website_ids)->orderBy('publisher_site_id')->orderBy('id')->lists('name', 'id');
     return Response::json($listAdZone);
 }
 public function showPublisher()
 {
     $start_date = Input::get('start_date') ? date("Y-m-d", strtotime(Input::get('start_date'))) : date('Y-m-d');
     $end_date = Input::get('end_date') ? date("Y-m-d", strtotime(Input::get('end_date'))) : date('Y-m-d');
     $website = Input::get('website');
     $adformat = Input::get('adformat');
     $this->data['lists_website'] = PublisherSiteBaseModel::where("status", '=', 1)->get();
     $this->data['lists_adfortmat'] = AdFormatBaseModel::get();
     $tracking = DB::connection('mongodb')->collection('trackings_summary')->where("created_d", '>=', $start_date)->where("created_d", '<=', $end_date);
     if ($website != "") {
         $tracking = $tracking->where('w', '=', (int) $website);
     }
     if ($adformat != "") {
         $tracking = $tracking->where('af', '=', (int) $adformat);
     }
     $tracking = $tracking->get();
     $list_site = array();
     $list_zone = array();
     $data_ok = array();
     if (!empty($tracking)) {
         foreach ($tracking as $tract) {
             if (isset($tract['ads_request'])) {
                 if (!isset($list_site[$tract['w']])) {
                     $site = PublisherSiteBaseModel::find($tract['w']);
                     if ($site) {
                         $list_site[$tract['w']] = $site;
                     } else {
                         continue;
                     }
                 }
                 if (!isset($list_zone[$tract['az']])) {
                     $adzone = PublisherAdZoneBaseModel::find($tract['az']);
                     if ($adzone) {
                         $list_zone[$tract['az']] = $adzone;
                     } else {
                         continue;
                     }
                 }
                 if (isset($tract['f'])) {
                     $data_ok[$tract['w']][$tract['az']]['ads'][] = $tract['ads_request'];
                 } else {
                     $data_ok[$tract['w']][$tract['az']]['noads'][] = $tract['ads_request'];
                 }
             }
         }
     }
     $this->data['list_zone'] = $list_zone;
     $this->data['list_site'] = $list_site;
     $this->data['data_ok'] = $data_ok;
     $this->data['start_date'] = date("m/d/Y", strtotime($start_date));
     $this->data['end_date'] = date("m/d/Y", strtotime($end_date));
     $this->data['website'] = $website;
     $this->data['adformat'] = $adformat;
     $this->layout->content = View::make('publisher', $this->data);
 }
 function saveCodeSingleFlight($pid = 0, $wid = 0, $zid = 0, $fwid = 0)
 {
     $adZoneModel = new PublisherAdZoneBaseModel();
     $item = $adZoneModel->where('id', $zid)->first();
     if ($item) {
         View::addLocation(base_path() . '/backend/theme/' . $this->theme . '/views/partials');
         $view = "code" . $item->adFormat->code_view;
         //$view = Config::get("ad_format_code.$item->ad_format_id");
         $data['wid'] = $item->publisher_site_id;
         $data['zid'] = $zid;
         $data['pid'] = $pid;
         $data['fwid'] = $fwid;
         $data['el_id'] = $item->element_id;
         $data['width'] = $item->width;
         $data['height'] = $item->height;
         $contents = View::make($view . 'Save', $data);
         $response = Response::make($contents, '200');
         $response->header('Content-Description', 'File Transfer');
         $response->header('Content-Type', 'application/octet-stream');
         $response->header('Content-Disposition', "attachment; filename={$item->site->name}_{$item->adFormat->name}_{$fwid}.txt");
         $response->header('Content-Transfer-Encoding', 'binary');
         $response->header('Expires', '0');
         $response->header('Cache-Control', 'must-revalidate');
         $response->header('Pragma', 'public');
         return $response;
     }
 }