예제 #1
0
 public function updateHeatmapCredits($memberId)
 {
     $memberCreditsExp = MemberCredits::get()->filter(array('ProductID' => array(1, 2, 3), 'MemberID' => $memberId, 'ExpireDate:GreaterThan' => date('Y-m-d H:i:s')))->subtract(MemberCredits::get()->filter(array('ProductID' => array(1, 2, 3), 'MemberID' => $memberId, 'Credits:LessThan' => 1)))->sort(array('ExpireDate' => 'ASC'))->First();
     if ($memberCreditsExp) {
         $memberCreditsExp->Credits = $memberCreditsExp->Credits - 1;
         $memberCreditsExp->write();
         return true;
     }
     $memberCreditsNonExp = MemberCredits::get()->filter(array('ProductID' => array(4, 5, 6, 7), 'MemberID' => $memberId))->subtract(MemberCredits::get()->filter(array('ProductID' => array(4, 5, 6, 7), 'MemberID' => $memberId, 'Credits:LessThan' => 1)))->sort(array('Created' => 'ASC'))->First();
     if ($memberCreditsNonExp) {
         $memberCreditsNonExp->Credits = $memberCreditsNonExp->Credits - 1;
         $memberCreditsNonExp->write();
         return true;
     }
     return false;
 }
예제 #2
0
파일: Page.php 프로젝트: hemant-chakka/awss
 public function updateSubscriptionsRoutine()
 {
     //Get InfusionSoft Api
     $app = $this->getInfusionSoftApi();
     $date = date('Y-m-d', strtotime("-1 days"));
     $subscriptions = Subscription::get()->filter(array('Status' => 1, 'ExpireDate:LessThan' => $date));
     if ($subscriptions) {
         foreach ($subscriptions as $subscription) {
             //Get user details
             $subscriptionId = $subscription->SubscriptionID;
             $isContactId = $subscription->Member()->ISContactID;
             $isProductId = $subscription->Product()->ISProductID;
             $emailAddress = $subscription->Member()->Email;
             $productId = $subscription->ProductID;
             $member = $subscription->Member();
             $subscriptionPayStatus = $this->getSubscriptionPayStatus($subscriptionId, $isContactId, $isProductId);
             if ($subscriptionPayStatus) {
                 //Update the subscription
                 $nextBillDate = $this->getSubscriptionNextBillDate($subscription->SubscriptionID);
                 $renewalExpireDate = date('Y-m-d H:i:s', strtotime($nextBillDate));
                 $renewalStartDate = date('Y-m-d H:i:s', strtotime($renewalExpireDate . "-30 days"));
                 $subscription->StartDate = $renewalStartDate;
                 $subscription->ExpireDate = $renewalExpireDate;
                 $subscription->IsTrial = 0;
                 $subscription->SubscriptionCount += 1;
                 $subscription->write();
                 //Get current credit card
                 $creditCard = $this->getCurrentCreditCard($member->ID);
                 //Create billing history record
                 $billingHistory = new MemberBillingHistory();
                 $billingHistory->MemberID = $member->ID;
                 $billingHistory->CreditCardID = $creditCard->ID;
                 $billingHistory->ProductID = $productId;
                 $billingHistory->SubscriptionID = $subscription->ID;
                 $billingHistory->write();
                 //Update member credits
                 $memberCredits = MemberCredits::get()->filter(array('MemberID' => $member->ID, 'SubscriptionID' => $subscription->ID))->first();
                 $memberCredits->Credits = $subscription->Product()->Credits;
                 $memberCredits->ExpireDate = $renewalExpireDate;
                 $memberCredits->write();
                 //Update Infusionsoft contact
                 $isTagId = $this->getISTagIdByProduct($productId);
                 $app->grpRemove($isContactId, $isTagId);
                 $app->grpAssign($isContactId, $isTagId);
                 // Update subscription contacts
                 $app->grpRemove($isContactId, 2216);
                 $returnFields = array('_AWofmonths');
                 $conDat = $app->loadCon($isContactId, $returnFields);
                 $conDat = array('_AWofmonths' => $conDat['_AWofmonths'] + 1, '_AttentionWizard' => 'Paid and Current', 'ContactType' => 'AW Customer', '_AWcanceldate' => null);
                 $app->updateCon($isContactId, $conDat);
                 // Remove previous cancel tags
                 $app->grpRemove($isContactId, 2226);
                 $app->grpRemove($isContactId, 2758);
                 $app->grpRemove($isContactId, 2682);
                 $app->grpRemove($isContactId, 2680);
                 $app->grpRemove($isContactId, 2694);
                 $app->grpRemove($isContactId, 3019);
             } else {
                 //Set the subscription to inactive
                 $result = $this->setSubscriptionStatus($subscription->SubscriptionID, 'Inactive');
                 if (is_int($result)) {
                     //Update Infusionsoft contact
                     //get the current date
                     $curdate = $app->infuDate(date('j-n-Y'));
                     // Custom fields populated
                     $conDat = array('_AttentionWizard' => 'Cancelled due to card decline', '_AWcanceldate' => $curdate);
                     $app->updateCon($isContactId, $conDat);
                     // Remove tag trial member
                     $app->grpRemove($isContactId, 2216);
                     if ($this->isTrialMember($member->ID)) {
                         // Add Cancel after trial tag
                         $app->grpAssign($isContactId, 2226);
                         // Add CXL Card declined tag
                         $app->grpAssign($isContactId, 2682);
                     } else {
                         // Add CXL Card declined tag
                         $app->grpAssign($isContactId, 2682);
                     }
                     // Note is added
                     if ($this->isTrialMember($member->ID)) {
                         $conActionDat = array('ContactId' => $isContactId, 'ActionType' => 'UPDATE', 'ActionDescription' => "Cancelled AW Trial", 'CreationDate' => $curdate, 'CreationNotes' => "Credit card charge failed", 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
                     } else {
                         $conActionDat = array('ContactId' => $isContactId, 'ActionType' => 'UPDATE', 'ActionDescription' => "Payment declined by Auth.net - account cancelled", 'CreationDate' => $curdate, 'CreationNotes' => "Credit card charge failed", 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
                     }
                     $conActionID = $app->dsAdd("ContactAction", $conActionDat);
                     //Set the subscription inactive on site
                     $subscription->Status = 0;
                     $subscription->write();
                     //Send a notification email to support
                     $email = new Email();
                     $email->setSubject("AW Notification - auto payment failed");
                     $email->setFrom('*****@*****.**');
                     $email->setTo('*****@*****.**');
                     $email->setTemplate('PaymentFailedEmail');
                     $email->populateTemplate(array('emailAddress' => $emailAddress, 'subscriptionId' => $subscription->SubscriptionID));
                     $email->send();
                 }
             }
         }
     }
 }