コード例 #1
0
 public function loadLastCampaignChart()
 {
     $limit = Input::get('limit');
     $modelCampaign = new CampaignBaseModel();
     $listCampaign = $modelCampaign->getCampaignRecent($limit);
     $listCampaignID = array_column($listCampaign->toArray(), 'id');
     $listCampaignChart = array();
     $trackingSummaryModel = new TrackingSummaryBaseModel();
     if (!empty($listCampaignID)) {
         foreach ($listCampaignID as $campaign) {
             $listCampaignChart[$campaign] = $trackingSummaryModel->getFlightChart($campaign)->toArray();
         }
     }
     $this->data['listCampaign'] = $listCampaign;
     $this->data['listCampaignChart'] = $listCampaignChart;
     return View::make('campaignChart', $this->data)->render();
 }
コード例 #2
0
 /**
  *     add/update agency
  *     @param  integer $id
  */
 function showUpdate($campaignID = 0, $id = 0)
 {
     $this->data['campaign'] = CampaignBaseModel::find($campaignID);
     if (Request::isMethod('get')) {
         $arrWhere = array('campaign_id' => $campaignID, 'id' => $id);
         $this->data['data'] = $this->model->where($arrWhere)->first();
     } else {
         if ($this->postUpdate($campaignID, $id)) {
             return Redirect::to("{$this->moduleURL}{$campaignID}/view/{$this->data['id']}");
         }
     }
     if ($campaignID && $id) {
         $this->loadLeftMenu('menu.conversionUpdate');
     } else {
         $this->loadLeftMenu('menu.conversionList');
     }
     $this->layout->content = View::make('showUpdate', $this->data);
 }
コード例 #3
0
 /**
  *     handle form add/update agency
  *     @param  integer $id
  */
 function postUpdate($id = 0)
 {
     // if (Input::get('type') == 'adnetwork') {
     //     Input::merge(
     //             array(
     //                 'publisher_site_id' => 0,
     //                 'publisher_ad_zone_id' => 0
     //             )
     //     );
     // }
     // check validate
     $validate = Validator::make(Input::all(), $this->model->getUpdateRules(), $this->model->getUpdateLangs());
     if ($validate->passes()) {
         $section = Input::get('publisher_site');
         $zone = Input::get('publisher_ad_zone');
         $campaignId = Input::get('campaign_id');
         $costAfterAgencyCommission = str_replace(',', '', Input::get('cost_after_agency_commission'));
         $publisherCost = str_replace(',', '', Input::get('publisher_cost'));
         $totalInventory = Input::get('total_inventory');
         $baseMediaCost = Input::get('base_media_cost');
         $mediaCost = Input::get('media_cost');
         $costAfterDiscount = Input::get('cost_after_discount');
         $discount = Input::get('discount');
         $agencyCommission = Input::get('agency_commission');
         $advalueCommission = Input::get('advalue_commission');
         $realBaseMediaCost = Input::get('real_base_media_cost');
         $realMediaCost = Input::get('real_media_cost');
         $retargeting_show = Input::get('retargeting_show');
         $retargeting_url = Input::get('retargeting_url');
         $retargeting_number = Input::get('retargeting_number');
         $listKeyword = Input::get('list_keyword', array());
         //use retargeting
         $retargeting = Input::get('use_retargeting', 2);
         if ($retargeting == 1) {
             $operator = Input::get('operator');
             $audience_id = Input::get('audience_id');
             if ($operator != '' && $audience_id != '') {
                 $audience = json_encode(array('operator' => $operator, 'audience_id' => $audience_id));
             } else {
                 $audience = "";
             }
         } else {
             $audience = "";
         }
         $updateData = array('campaign_id' => $campaignId, 'type' => Input::get('type'), 'status' => Input::get('status'), 'name' => Input::get('name'), 'category_id' => Input::get('category_id'), 'publisher_site_id' => Input::get('publisher_site_id'), 'publisher_ad_zone_id' => Input::get('publisher_ad_zone_id'), 'date' => json_encode(Input::get('date')), 'hour' => json_encode(Input::get('time')), 'end_hour' => Input::get('end_hour'), 'ad_id' => Input::get('ad_id'), 'day' => Input::get('day'), 'country' => json_encode(Input::get('selected_country')), 'province' => json_encode(Input::get('selected_province')), 'age' => json_encode(Input::get('selected_age')), 'sex' => Input::get('sex'), 'cost_type' => Input::get('cost_type'), 'event' => Input::get('event'), 'use_retargeting' => Input::get('use_retargeting', 2), 'total_inventory' => Input::get('total_inventory'), 'value_added' => Input::get('value_added'), 'base_media_cost' => $baseMediaCost, 'media_cost' => $mediaCost, 'real_media_cost' => $realMediaCost, 'real_base_media_cost' => $realBaseMediaCost, 'discount' => $discount, 'cost_after_discount' => Input::get('cost_after_discount'), 'total_cost_after_discount' => str_replace(',', '', Input::get('total_cost_after_discount')), 'agency_commission' => $agencyCommission, 'cost_after_agency_commission' => $costAfterAgencyCommission, 'advalue_commission' => $advalueCommission, 'publisher_cost' => $publisherCost, 'retargeting_url' => $retargeting_url, 'retargeting_show' => $retargeting_show, 'retargeting_number' => $retargeting_number, 'updated_by' => $this->user->id, 'filter' => trim(Input::get('keyword')), 'audience' => $audience);
         // store sale id from campaign
         $campaign = CampaignBaseModel::find($campaignId);
         $updateData['sale_id'] = $campaign->sale_id;
         // if (empty($section) || empty($zone)) {
         //     $updateData['name'] = 'Run of Network - ' . strtoupper(Input::get('cost_type'));
         // } else {
         //     $updateData['name'] = $section . ' - ' . $zone;
         // }
         // publisher base cost
         // $updateData['publisher_base_cost'] = $publisherCost / $totalInventory;
         // total profit
         $updateData['total_profit'] = $costAfterAgencyCommission - $publisherCost;
         // company profit
         $updateData['sale_profit'] = ($realMediaCost - $realBaseMediaCost) * $totalInventory;
         // sale profit
         $updateData['company_profit'] = $updateData['total_profit'] - $updateData['sale_profit'];
         $adModel = new AdBaseModel();
         $ad = null;
         if (Input::get('ad_id')) {
             $ad = $adModel->find(Input::get('ad_id'));
             $updateData['ad_format_id'] = $ad->ad_format_id;
         }
         //--Start--Phuong-VM add 05-05-2015
         $provinceList = Input::get('province');
         $provinceSelectedList = Input::get('selected_province');
         //--End--Phuong-VM add 05-05-2015
         if ($id == 0) {
             // INSERT
             if (!empty($ad)) {
                 $ad->is_select = 1;
                 $ad->save();
             }
             $updateData['created_by'] = $this->user->id;
             if ($item = $this->model->create($updateData)) {
                 $this->data['id'] = $item->id;
                 // if( $item->type == 'premium' ){
                 //     $flightWebsite = new FlightWebsiteBaseModel;
                 //     $this->cloneToFlightPublisher($item, $flightWebsite);
                 // }
                 foreach (Input::get('date') as $date) {
                     $flight_date = new FlightDateBaseModel();
                     $flight_date->flight_id = $item->id;
                     $flight_date->start = date('Y-m-d', strtotime($date['start']));
                     $flight_date->end = date('Y-m-d', strtotime($date['end']));
                     $flight_date->diff = $date['diff'];
                     //--Start--Phuong-VM add 08-05-2015
                     if (isset($date['time']) && !empty($date['time'])) {
                         $flight_date->hour = json_encode($date['time']);
                     }
                     $flight_date->frequency_cap = $date['frequency_cap'];
                     $flight_date->frequency_cap_time = $date['frequency_cap_time'];
                     $flight_date->daily_inventory = $date['daily_inventory'];
                     $flight_date->created_by = $flight_date->updated_by = $this->user->id;
                     //--End--Phuong-VM add 08-05-2015
                     $flight_date->save();
                 }
                 Session::flash('flash-message', 'Create Flight Success !');
                 (new Delivery())->renewCache('flight', $item->id);
                 //INPUT LOGS
                 $dataLog = array('title' => 'Create Flight ID: ' . $item->id, 'content' => json_encode($updateData), 'type_task' => Request::segment(4));
                 $this->inputLogs($dataLog);
                 return TRUE;
             }
         } else {
             // UPDATE
             // GET CURRENT ITEM
             $item = $this->model->find($id);
             if ($updateData['use_retargeting'] == 2) {
                 $updateData['retargeting_url'] = NULL;
                 $updateData['retargeting_show'] = NULL;
                 $updateData['retargeting_number'] = NULL;
             }
             if ($updateData['retargeting_show'] == 2) {
                 $updateData['retargeting_number'] = NULL;
             }
             if (!empty($ad)) {
                 if ($item->ad_id != $ad->id) {
                     $ad->is_select = 1;
                     $ad->save();
                     $oldAd = $adModel->find($item->ad_id);
                     if ($oldAd) {
                         $oldAd->is_select = 0;
                         $oldAd->save();
                     }
                 }
             }
             $arrTmp = FlightDateBaseModel::where('flight_id', $id)->select('id')->get()->toArray();
             $oldFlightDate = array();
             foreach ($arrTmp as $oldDate) {
                 $oldFlightDate[$oldDate['id']] = $oldDate['id'];
             }
             foreach (Input::get('date') as $date) {
                 $flight_date = new FlightDateBaseModel();
                 //if(!isset($date['id'])){
                 if (isset($date['id'])) {
                     $flight_date = $flight_date->find($date['id']);
                     unset($oldFlightDate[$date['id']]);
                     $flight_date->updated_by = $this->user->id;
                 } else {
                     $flight_date->created_by = $flight_date->updated_by = $this->user->id;
                 }
                 $flight_date->flight_id = $id;
                 $flight_date->start = date('Y-m-d', strtotime($date['start']));
                 $flight_date->end = date('Y-m-d', strtotime($date['end']));
                 $flight_date->diff = $date['diff'];
                 //--Start--Phuong-VM add 08-05-2015
                 if (!empty($date['time'])) {
                     $flight_date->hour = json_encode($date['time']);
                 } else {
                     $flight_date->hour = '';
                 }
                 $flight_date->frequency_cap = $date['frequency_cap'];
                 $flight_date->frequency_cap_time = $date['frequency_cap_time'];
                 $flight_date->daily_inventory = $date['daily_inventory'];
                 //--End--Phuong-VM add 08-05-2015
                 $flight_date->save();
                 //}
             }
             if (!empty($oldFlightDate)) {
                 FlightDateBaseModel::destroy($oldFlightDate);
             }
             if ($item) {
                 (new Delivery())->removeCache('flight', $id);
                 if ($item->update($updateData)) {
                     // if( $item->type == 'premium' ){
                     //     $flightWebsite = FlightWebsiteBaseModel::where(array(
                     //         'publisher_id'  =>  $item->publisher_id,
                     //         'flight_id'     =>  $item->id,
                     //         'type'          =>  'premium'
                     //     ))->first();
                     //     if( empty($flightWebsite) ){
                     //         $flightWebsite = new FlightWebsiteBaseModel;
                     //     }
                     //     $this->cloneToFlightPublisher($item, $flightWebsite);
                     // }
                     (new Delivery())->renewCache('flight', $item->id);
                     Session::flash('flash-message', 'Update Flight Success !');
                     //INPUT LOGS
                     $dataLog = array('title' => 'Update Flight ID: ' . $item->id, 'content' => json_encode($updateData), 'type_task' => Request::segment(4));
                     $this->inputLogs($dataLog);
                     return TRUE;
                 }
             }
             (new Delivery())->renewCache('flight', $id);
         }
     } else {
         $this->data['errors'] = $validate->messages();
     }
     return FALSE;
 }
コード例 #4
0
 /**
  *     handle form add/update agency
  *     @param  integer $id 
  */
 function postUpdate($id = 0)
 {
     if (Input::get('category_id') == 0) {
         Input::merge(array('publisher_id' => 0, 'publisher_site_id' => 0, 'publisher_ad_zone_id' => 0));
     }
     // check validate
     $validate = Validator::make(Input::all(), $this->model->getUpdateRules(), $this->model->getUpdateLangs());
     if ($validate->passes()) {
         $section = Input::get('publisher_site');
         $zone = Input::get('publisher_ad_zone');
         $campaignId = Input::get('campaign_id');
         $costAfterAgencyCommission = str_replace(',', '', Input::get('cost_after_agency_commission'));
         $publisherCost = str_replace(',', '', Input::get('publisher_cost'));
         $totalInventory = Input::get('total_inventory');
         $baseMediaCost = Input::get('base_media_cost');
         $mediaCost = Input::get('media_cost');
         $costAfterDiscount = Input::get('cost_after_discount');
         $discount = Input::get('discount');
         $agencyCommission = Input::get('agency_commission');
         $advalueCommission = Input::get('advalue_commission');
         $realBaseMediaCost = Input::get('real_base_media_cost');
         $realMediaCost = Input::get('real_media_cost');
         $updateData = array('campaign_id' => $campaignId, 'category_id' => Input::get('category_id'), 'publisher_id' => Input::get('publisher_id'), 'publisher_site_id' => Input::get('publisher_site_id'), 'publisher_ad_zone_id' => Input::get('publisher_ad_zone_id'), 'flight_objective' => Input::get('flight_objective'), 'allow_over_delivery_report' => Input::get('allow_over_delivery_report'), 'remark' => Input::get('remark'), 'date' => json_encode(Input::get('date')), 'day' => Input::get('day'), 'cost_type' => Input::get('cost_type'), 'total_inventory' => Input::get('total_inventory'), 'value_added' => Input::get('value_added'), 'base_media_cost' => $baseMediaCost, 'media_cost' => $mediaCost, 'real_media_cost' => $realMediaCost, 'real_base_media_cost' => $realBaseMediaCost, 'discount' => $discount, 'cost_after_discount' => Input::get('cost_after_discount'), 'total_cost_after_discount' => str_replace(',', '', Input::get('total_cost_after_discount')), 'agency_commission' => $agencyCommission, 'cost_after_agency_commission' => $costAfterAgencyCommission, 'advalue_commission' => $advalueCommission, 'publisher_cost' => $publisherCost, 'updated_by' => $this->user->id);
         // store sale id from campaign
         $campaign = CampaignBaseModel::find($campaignId);
         $updateData['sale_id'] = $campaign->sale_id;
         if (empty($section) || empty($zone)) {
             $updateData['name'] = 'Run of Network - ' . strtoupper(Input::get('cost_type'));
         } else {
             $updateData['name'] = $section . ' - ' . $zone;
         }
         // publisher base cost
         $updateData['publisher_base_cost'] = $publisherCost / $totalInventory;
         // total profit
         $updateData['total_profit'] = $costAfterAgencyCommission - $publisherCost;
         // company profit
         $updateData['sale_profit'] = ($realMediaCost - $realBaseMediaCost) * $totalInventory;
         // sale profit
         $updateData['company_profit'] = $updateData['total_profit'] - $updateData['sale_profit'];
         if ($id == 0) {
             // INSERT
             $updateData['created_by'] = $this->user->id;
             if ($item = $this->model->create($updateData)) {
                 $this->data['id'] = $item->id;
                 return TRUE;
             }
         } else {
             // UPDATE
             // GET CURRENT ITEM
             $item = $this->model->find($id);
             if ($item) {
                 if ($this->model->where("id", $id)->update($updateData)) {
                     return TRUE;
                 }
             }
         }
     } else {
         $this->data['errors'] = $validate->messages();
     }
     return FALSE;
 }
コード例 #5
0
 public function reportExportConversion()
 {
     $this->layout = null;
     $input = Input::all();
     if (!empty($input['cid'])) {
         $cids = $input['cid'];
         $campaignID = $input['campaign_id'];
         $trackingConversionModel = new TrackingConversionBaseModel();
         $campaign = CampaignBaseModel::find($campaignID);
         if (!empty($campaign) && '' != $campaign->name) {
             $listConversionSummary = $trackingConversionModel->getConversionSummary($campaignID);
             $excel = Excel::create("Report_Conversion_Of_{$campaign->name}");
             $excel = $this->reportExportConversionCampaign($excel, array('campaign' => $campaign, 'listConversionSummary' => $listConversionSummary));
         } else {
             $excel = Excel::create('report_conversion');
         }
         foreach ($cids as $cid) {
             $conversion = ConversionBaseModel::find($cid);
             $listConversionTracking = $trackingConversionModel->where('conversion_id', $cid)->get();
             if (!empty($listConversionTracking)) {
                 $excel = $this->reportExportConversionDetail($excel, array('conversion' => $conversion, 'listConversionTracking' => $listConversionTracking));
             }
         }
         $excel->export('xls');
     }
 }