public function processRequest($request)
 {
     $db = new WPAM_Data_DataAccess();
     $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc'));
     if (isset($request['action']) && $request['action'] == 'saveInfo') {
         $validator = new WPAM_Validation_Validator();
         $validator->addValidator('ddBountyType', new WPAM_Validation_SetValidator(array('fixed', 'percent')));
         if ($request['ddBountyType'] === 'fixed') {
             $validator->addValidator('txtBountyAmount', new WPAM_Validation_MoneyValidator());
         } else {
             if ($request['ddBountyType'] === 'percent') {
                 $validator->addValidator('txtBountyAmount', new WPAM_Validation_NumberValidator());
             }
         }
         $affiliateHelper = new WPAM_Util_AffiliateFormHelper();
         $vr = $affiliateHelper->validateForm($validator, $request, $affiliateFields);
         if ($vr->getIsValid()) {
             $model = $affiliateHelper->getNewAffiliate();
             $affiliateHelper->setModelFromForm($model, $affiliateFields, $request);
             $affiliateHelper->setPaymentFromForm($model, $request);
             //send email etc.
             $userHandler = new WPAM_Util_UserHandler();
             if (get_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption) == 1) {
                 $userHandler->AutoapproveAffiliate($model, $request['ddBountyType'], $request['txtBountyAmount']);
             } else {
                 $userHandler->approveAffiliate($model, $request['ddBountyType'], $request['txtBountyAmount'], false);
             }
             return new WPAM_Pages_TemplateResponse('admin/affiliate_new_success');
         } else {
             return $this->getForm($affiliateFields, $request, $vr);
         }
     }
     return $this->getForm($affiliateFields, $request);
 }
 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 processRequest($request)
 {
     $db = new WPAM_Data_DataAccess();
     $affiliateFields = $db->getAffiliateFieldRepository()->loadMultipleBy(array('enabled' => true), array('order' => 'asc'));
     if (isset($request['action']) && $request['action'] == 'submit') {
         $form_validated = false;
         $affiliateHelper = new WPAM_Util_AffiliateFormHelper();
         $vr = $affiliateHelper->validateForm(new WPAM_Validation_Validator(), $request, $affiliateFields);
         if ($vr->getIsValid()) {
             $form_validated = true;
         }
         $output = apply_filters('wpam_validate_registration_form_submission', '', $request);
         if (!empty($output)) {
             $form_validated = false;
         }
         if ($form_validated) {
             $model = $affiliateHelper->getNewAffiliate();
             $affiliateHelper->setModelFromForm($model, $affiliateFields, $request);
             //Fire the action hook
             do_action('wpam_front_end_registration_form_submitted', $model, $request);
             //Check if automatic affiliate approval option is enabled
             if (get_option(WPAM_PluginConfig::$AutoAffiliateApproveIsEnabledOption) == 1) {
                 $userHandler = new WPAM_Util_UserHandler();
                 $userHandler->AutoapproveAffiliate($model);
                 return new WPAM_Pages_TemplateResponse('aff_app_submitted_auto_approved');
             }
             //Do the non auto approval process
             $db = new WPAM_Data_DataAccess();
             $id = $db->getAffiliateRepository()->insert($model);
             if ($id == 0) {
                 if (WPAM_DEBUG) {
                     echo '<pre>', var_export($model, true), '</pre>';
                 }
                 wp_die(__('Error submitting your details to the database. This is a bug, and your application was not submitted.', 'affiliates-manager'));
             }
             $mailer = new WPAM_Util_EmailHandler();
             //Notify admin that affiliate has registered
             $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
             $message = sprintf(__('New affiliate registration on your site %s:', 'affiliates-manager'), $blogname) . "\r\n\r\n";
             $message .= sprintf(__('Name: %s %s', 'affiliates-manager'), $request['_firstName'], $request['_lastName']) . "\r\n";
             $message .= sprintf(__('Email: %s', 'affiliates-manager'), $request['_email']) . "\r\n";
             $message .= sprintf(__('Company: %s', 'affiliates-manager'), $request['_companyName']) . "\r\n";
             $message .= sprintf(__('Website: %s', 'affiliates-manager'), $request['_websiteUrl']) . "\r\n\r\n";
             $message .= sprintf(__('View Application: %s', 'affiliates-manager'), admin_url('admin.php?page=wpam-affiliates&viewDetail=' . $id)) . "\r\n";
             $mailer->mailAffiliate(get_option('admin_email'), __('New Affiliate Registration', 'affiliates-manager'), $message);
             //Notify affiliate of their application
             $affsubj = sprintf(__('Affiliate application for %s', 'affiliates-manager'), $blogname);
             $affmessage = WPAM_MessageHelper::GetMessage('affiliate_application_submitted_email');
             $mailer->mailAffiliate($request['_email'], $affsubj, $affmessage);
             return new WPAM_Pages_TemplateResponse('affiliate_application_submitted');
         } else {
             return $this->getForm($affiliateFields, $request, $vr);
         }
     }
     //else
     return $this->getForm($affiliateFields);
 }
 protected function getPaymentMethodFormResponse($affiliate, $request = array(), $validationResult = NULL)
 {
     add_action('wp_footer', array($this, 'onFooter'));
     $response = new WPAM_Pages_TemplateResponse('affiliate_cp_payment_details_simple');
     $response->viewData['request'] = $request;
     $response->viewData['affiliate'] = $affiliate;
     $affiliateHelper = new WPAM_Util_AffiliateFormHelper();
     $response->viewData['paymentMethods'] = $affiliateHelper->getPaymentMethods();
     $response->viewData['validationResult'] = $validationResult;
     $response->viewData['nextStepUrl'] = $this->getLink(array('step' => 'submit_payment_details', 'action' => 'confirm'));
     //save for form validation in the footer
     $this->response = $response;
     return $response;
 }
 private function processSelectAffiliatesRequest($request)
 {
     $db = new WPAM_Data_DataAccess();
     $aff_db = $db->getAffiliateRepository();
     $response = new WPAM_Pages_TemplateResponse('admin/paypalpayments/select_affiliates');
     $where = array('paymentMethod' => 'paypal');
     $affiliateHelper = new WPAM_Util_AffiliateFormHelper();
     $affiliateHelper->addTransactionDateRange($where, $request, $response);
     $response->viewData['affiliates'] = $aff_db->loadAffiliateSummary($where, '0.01', array('balance' => 'desc'));
     $response->viewData['notShownCount'] = $aff_db->count(array('paymentMethod' => array('!=', 'paypal'), 'status' => array('IN', array('active', 'inactive'))));
     $response->viewData['minPayout'] = get_option(WPAM_PluginConfig::$MinPayoutAmountOption);
     return $response;
 }