Example #1
0
 /**
  *  check over inventory limit of requested flight
  */
 public function checkOverInventory($flight, $flightWebsite, $event)
 {
     $RawTrackingSummarry = new RawTrackingSummary();
     $rate = $flight->cost_type == 'cpm' ? 1000 : 1;
     $flightWebsiteInventoryOvr = $flightWebsite->value_added * $rate;
     $flightInventoryOvr = $flight->value_added * $rate;
     $flightRateOvr = 0;
     //Check flight co setup over report
     if ($flightInventoryOvr <= 0) {
         return self::RESPONSE_TYPE_FLIGHT_VALUE_ADDED;
     }
     //Check flight webiste co setup over report
     if ($flightWebsiteInventoryOvr < 0) {
         return self::RESPONSE_TYPE_FLIGHT_WEBSITE_VALUE_ADDED;
     }
     $flightRateOvr = $this->changePercentage($flight->value_added, $flight->total_inventory);
     // tổng số over inventory của flight (all time)
     $flightInventoryAllTimeOvr = $RawTrackingSummarry->getTotalInventory($flight->id, $event, true);
     $flightInventoryAllTime = $RawTrackingSummarry->getTotalInventory($flight->id, $event);
     $flightRateAllTimeOvr = $this->changePercentage($flightInventoryAllTimeOvr, $flightInventoryAllTime);
     if ($flightInventoryAllTime <= 0 && $flightRateAllTimeOvr >= $flightRateOvr || $flightInventoryAllTimeOvr >= $flightInventoryOvr) {
         return self::RESPONSE_TYPE_INVENTORY_LIMIT;
     }
     if ($flightWebsiteInventoryOvr == 0) {
         $fwRateOvr = $flightRateOvr;
     } else {
         $fwRateOvr = $this->changePercentage($flightWebsite->value_added, $flightWebsite->total_inventory);
     }
     if ($flightWebsiteInventoryOvr > $flightInventoryOvr || $flightWebsiteInventoryOvr == 0) {
         $flightWebsiteInventoryOvr = $flightInventoryOvr;
     }
     $totalAdZoneInventoryOvr = $RawTrackingSummarry->getTotalAdZoneInventory($flight->id, $flightWebsite->id, $event, true);
     $totalAdZoneInventory = $RawTrackingSummarry->getTotalAdZoneInventory($flight->id, $flightWebsite->id, $event);
     $fwRateAllTimeOvr = $this->changePercentage($totalAdZoneInventoryOvr, $totalAdZoneInventory);
     if ($totalAdZoneInventory <= 0 || $fwRateAllTimeOvr >= $fwRateOvr || $totalAdZoneInventoryOvr >= $flightWebsiteInventoryOvr) {
         return self::RESPONSE_TYPE_AD_ZONE_INVENTORY_LIMIT;
     }
     return TRUE;
 }