public static function handle_commission_tracking_hook($args)
 {
     /*
      * The args array must have the following 3 details
      * $args['txn_id']
      * $args['amount']
      * $args['aff_id']
      */
     WPAM_Logger::log_debug('handle_commission_tracking_hook() - Txn ID : ' . $args['txn_id'] . ', Amount: ' . $args['amount'] . ', Affiliate ID: ' . $args['aff_id']);
     WPAM_Commission_Tracking::award_commission($args);
 }
 protected function doOverviewHome($request, $affiliate)
 {
     $db = new WPAM_Data_DataAccess();
     $accountSummary = $db->getTransactionRepository()->getAccountSummary($affiliate->affiliateId);
     $args = array();
     $args['aff_id'] = $affiliate->affiliateId;
     //show total clicks for today
     $args['start_date'] = date("Y-m-d H:i:s", strtotime('today'));
     $args['end_date'] = date("Y-m-d H:i:s", strtotime('tomorrow'));
     $today_clicks = WPAM_Click_Tracking::get_total_clicks($args);
     //show total number of transactions for today
     $today_transaction_count = WPAM_Commission_Tracking::get_transaction_count($args);
     //show total commission for today
     $today_total_commission = WPAM_Commission_Tracking::get_total_commission_amount($args);
     //show total clicks for this month
     $args['start_date'] = date("Y-m-d H:i:s", strtotime(date("Y-m-01")));
     $args['end_date'] = date("Y-m-d H:i:s", strtotime(date("Y-m-01", strtotime("+1 month"))));
     $monthly_clicks = WPAM_Click_Tracking::get_total_clicks($args);
     //show total number of transactions for this month
     $monthly_transaction_count = WPAM_Commission_Tracking::get_transaction_count($args);
     //show total commission for this month
     $monthly_total_commission = WPAM_Commission_Tracking::get_total_commission_amount($args);
     $response = new WPAM_Pages_TemplateResponse('affiliate_cp_home');
     $response->viewData['accountStanding'] = $accountSummary->standing;
     $response->viewData['commissionRateString'] = $this->getCommissionRateString($affiliate);
     $response->viewData['monthVisitors'] = $monthly_clicks;
     //$eventSummary->visits;
     $response->viewData['monthClosedTransactions'] = $monthly_transaction_count;
     //$eventSummary->purchases;
     $response->viewData['monthRevenue'] = $monthly_total_commission;
     //$monthAccountSummary->credits;
     $response->viewData['todayVisitors'] = $today_clicks;
     //$todayEventSummary->visits;
     $response->viewData['todayClosedTransactions'] = $today_transaction_count;
     //$todayEventSummary->purchases;
     $response->viewData['todayRevenue'] = $today_total_commission;
     //$todayAccountSummary->credits;
     if (get_option(WPAM_PluginConfig::$AffEnableImpressions)) {
         $response->viewData['monthImpressions'] = $db->getImpressionRepository()->getImpressionsForRange(strtotime(date("Y-m-01")), strtotime(date("Y-m-01", strtotime("+1 month"))), $affiliate->affiliateId);
         $response->viewData['todayImpressions'] = $db->getImpressionRepository()->getImpressionsForRange(strtotime('today'), strtotime('tomorrow'), $affiliate->affiliateId);
     }
     return $response;
 }
 public function WooCommerceRefundTransaction($order_id)
 {
     WPAM_Logger::log_debug('WooCommerce integration - order refunded. Order ID: ' . $order_id);
     //$order = new WC_Order($order_id);
     $txn_id = $order_id;
     WPAM_Commission_Tracking::refund_commission($txn_id);
 }
 protected function getDetailForm($affiliateFields, $model, $request = null, $validationResult = null)
 {
     //add widget_form_error js to affiliate_detail page
     add_action('admin_footer', array($this, 'onFooter'));
     $db = new WPAM_Data_DataAccess();
     $response = new WPAM_Pages_TemplateResponse('admin/affiliate_detail');
     $response->viewData['affiliateFields'] = $affiliateFields;
     $response->viewData['affiliate'] = $model;
     $where = array('affiliateId' => $model->affiliateId);
     $affiliateHelper = new WPAM_Util_AffiliateFormHelper();
     $affiliateHelper->addTransactionDateRange($where, $request, $response);
     $response->viewData['transactions'] = $db->getTransactionRepository()->loadMultipleBy($where, array('dateCreated' => 'desc'));
     $response->viewData['showBalance'] = true;
     $response->viewData['paymentMethods'] = $affiliateHelper->getPaymentMethods();
     $response->viewData['paymentMethod'] = isset($request['ddPaymentMethod']) ? $request['ddPaymentMethod'] : $model->paymentMethod;
     $response->viewData['paypalEmail'] = isset($request['txtPaypalEmail']) ? $request['txtPaypalEmail'] : $model->paypalEmail;
     $response->viewData['bountyType'] = isset($request['ddBountyType']) ? $request['ddBountyType'] : $model->bountyType;
     $response->viewData['bountyAmount'] = isset($request['txtBountyAmount']) ? $request['txtBountyAmount'] : $model->bountyAmount;
     $this->addBalance($response->viewData['transactions'], $db->getTransactionRepository()->getBalance($model->affiliateId, empty($request['from']) ? NULL : $request['from']), 'desc');
     $accountStanding = $db->getTransactionRepository()->getAccountSummary($model->affiliateId);
     $response->viewData['accountStanding'] = $accountStanding->standing;
     $response->viewData['accountCredits'] = $accountStanding->credits;
     $response->viewData['accountDebits'] = $accountStanding->debits;
     $response->viewData['accountAdjustments'] = $accountStanding->adjustments;
     $response->viewData['user'] = new WP_User($model->userId);
     if ($request !== null) {
         $response->viewData['request'] = $request;
     }
     if ($validationResult !== null) {
         //die(print_r($validationResult, true));
         $response->viewData['validationResult'] = $validationResult;
     }
     $response->viewData['affiliateFields'] = $affiliateFields;
     $response->viewData['creatives'] = $db->getCreativesRepository()->loadAllActiveNoDeletes();
     if (get_option(WPAM_PluginConfig::$AffEnableImpressions)) {
         $where = array('sourceAffiliateId' => $model->affiliateId);
         $response->viewData['impressions'] = $db->getImpressionRepository()->loadMultipleByLimit($where, array('dateCreated' => 'desc'), 100);
         $creativeNames = array();
         foreach ($response->viewData['impressions'] as $impression) {
             if (!array_key_exists($impression->sourceCreativeId, $creativeNames)) {
                 $creativeNames[$impression->sourceCreativeId] = $db->getCreativesRepository()->load($impression->sourceCreativeId)->name;
             }
         }
         $response->viewData['creativeNames'] = $creativeNames;
         $where = array('sourceAffiliateId' => $model->affiliateId);
         $response->viewData['impressionCount'] = $db->getImpressionRepository()->count($where);
     }
     //$summary = $db->getEventRepository()->getSummary ( $model->affiliateId );
     $args = array();
     $args['aff_id'] = $model->affiliateId;
     $total_clicks = WPAM_Click_Tracking::get_all_time_total_clicks($args);
     $total_transaction_count = WPAM_Commission_Tracking::get_all_time_transaction_count($args);
     $response->viewData['visitCount'] = $total_clicks;
     //$summary->visits;
     $response->viewData['purchaseCount'] = $total_transaction_count;
     //$summary->purchases;
     //save for form validation in the footer
     $this->response = $response;
     return $response;
 }
 public function handleCheckoutWithRefKey($purchaseLogId, $purchaseAmount, $strRefKey)
 {
     //TODO start - we only need this to block of code to keep backwards compatibility. later when we will directly get affiliate ID from cookie it can be deleted
     $db = new WPAM_Data_DataAccess();
     $binConverter = new WPAM_Util_BinConverter();
     $affiliate = NULL;
     global $wpdb;
     // keeping this block and "($affiliate !== NULL)" seperate to
     // help indicate any problems
     // (purchase log recorded w/o a purchase event)
     if (!empty($strRefKey)) {
         $query = "SELECT * FROM " . WPAM_TRACKING_TOKENS_TBL . " WHERE trackingKey = %s";
         $trackingToken = $wpdb->get_row($wpdb->prepare($query, $strRefKey));
         if ($trackingToken != null) {
             $trackingTokenId = $trackingToken->trackingTokenId;
             $query = "SELECT * FROM " . WPAM_TRACKING_TOKENS_PURCHASE_LOGS_TBL . " WHERE trackingTokenId = %s AND purchaseLogId = %s";
             $ttpl = $wpdb->get_row($wpdb->prepare($query, $trackingTokenId, $purchaseLogId));
             if ($ttpl != null) {
             } else {
                 $table = WPAM_TRACKING_TOKENS_PURCHASE_LOGS_TBL;
                 $data = array();
                 $data['trackingTokenId'] = $trackingTokenId;
                 $data['purchaseLogId'] = $purchaseLogId;
                 $wpdb->insert($table, $data);
                 //this will be handled further down if the affiliate is set and the purchase was successful
                 //$db->getEventRepository()->quickInsert(time(), $strRefKey, 'purchase');
             }
         }
     }
     //TODO end
     $args = array();
     $args['txn_id'] = $purchaseLogId;
     $args['amount'] = $purchaseAmount;
     if (is_numeric($strRefKey)) {
         //$strRefKey contains affiliate ID from the new cookie system (wpam_id)
         $args['aff_id'] = $strRefKey;
     }
     WPAM_Commission_Tracking::award_commission($args);
 }