/**
     * @param IQuerySpecification $specification
     * @return IQueryResult
     */
    public function handle(IQuerySpecification $specification)
    {
        $params = $specification->getSpecificationParams();
        $current_date = @$params['name_pattern'];
        $current_date = Convert::raw2sql($current_date);
        $sql = <<<SQL
        SELECT TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country
        FROM TrainingCourse
        INNER JOIN CompanyService  ON CompanyService.ID  = TrainingCourse.TrainingServiceID AND CompanyService.ClassName='TrainingService'
        INNER JOIN TrainingCourseSchedule ON TrainingCourseSchedule.CourseID = TrainingCourse.ID
        LEFT JOIN TrainingCourseScheduleTime ON TrainingCourseScheduleTime.LocationID = TrainingCourseSchedule.ID
        WHERE CompanyService.Active = 1
        AND
        (
          ((DATE('{$current_date}') < TrainingCourseScheduleTime.StartDate AND DATE('{$current_date}') < TrainingCourseScheduleTime.EndDate) OR (TrainingCourse.Online=1 AND TrainingCourseScheduleTime.StartDate IS NULL AND TrainingCourseScheduleTime.EndDate IS NULL))
        )
        GROUP BY TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country
        ORDER BY TrainingCourseSchedule.City, TrainingCourseSchedule.State, TrainingCourseSchedule.Country ASC;
SQL;
        $results = DB::query($sql);
        $locations = array();
        for ($i = 0; $i < $results->numRecords(); $i++) {
            $record = $results->nextRecord();
            $city = $record['City'];
            $state = $record['State'];
            $country = Geoip::countryCode2name($record['Country']);
            if (!empty($state)) {
                $value = sprintf('%s, %s, %s', $city, $state, $country);
            } else {
                $value = sprintf('%s, %s', $city, $country);
            }
            array_push($locations, new SearchDTO($value, $value));
        }
        return new OpenStackImplementationNamesQueryResult($locations);
    }
 public function getCountryName()
 {
     $country = '';
     if ($this->Country) {
         $country = Geoip::countryCode2name($this->Country);
     }
     return $country;
 }
    /**
     * @param IQuerySpecification $specification
     * @return IQueryResult
     */
    public function handle(IQuerySpecification $specification)
    {
        $params = $specification->getSpecificationParams();
        $filter = '';
        if (!empty($term)) {
            $term = @$params['name_pattern'];
            $term = Convert::raw2sql($term);
            $countries = Geoip::getCountryDropDown();
            $matched_countries = array_filter($countries, function ($el) use($term) {
                return strpos(strtolower($el), strtolower($term)) !== false;
            });
            $country_filter = '';
            if (count($matched_countries)) {
                foreach ($matched_countries as $code => $name) {
                    $country_filter .= " OR Country = '{$code}' ";
                }
            } else {
                $country_filter = " OR Country LIKE '%{$term}%' ";
            }
            $filter = "AND City LIKE '%{$term}%' {$country_filter}";
        }
        $locations = array();
        $class_name = $this->getClassName();
        $sql = <<<SQL
        SELECT City,Country,State FROM DataCenterLocation
        INNER JOIN CompanyService ON CompanyService.ID = DataCenterLocation.CloudServiceID
\t\tWHERE CompanyService.ClassName = '{$class_name}'
\t\t{$filter}
\t\tGROUP BY City,Country,State
\t\tORDER BY City,State, Country ASC

SQL;
        $results = DB::query($sql);
        for ($i = 0; $i < $results->numRecords(); $i++) {
            $record = $results->nextRecord();
            $city = $record['City'];
            $state = $record['State'];
            $country = Geoip::countryCode2name($record['Country']);
            if (!empty($state)) {
                $value = sprintf('%s, %s, %s', $city, $state, $country);
            } else {
                $value = sprintf('%s, %s', $city, $country);
            }
            array_push($locations, new SearchDTO($value, $value));
        }
        return new OpenStackImplementationNamesQueryResult($locations);
    }
 public function getDataCenterLocationsJson()
 {
     $locations = array();
     $query = new QueryObject();
     $query->addAndCondition(QueryCriteria::equal("Active", true));
     list($list, $size) = $this->public_cloud_repository->getAll($query, 0, 1000);
     foreach ($list as $public_cloud) {
         foreach ($public_cloud->getDataCentersLocations() as $location) {
             $json_data = array();
             $json_data['color'] = $location->getDataCenterRegion()->getColor();
             $json_data['country'] = Geoip::countryCode2name($location->getCountry());
             $json_data['city'] = $location->getCity();
             $json_data['lat'] = $location->getLat();
             $json_data['lng'] = $location->getLng();
             $json_data['product_name'] = $public_cloud->getName();
             $json_data['product_url'] = $this->buildCloudLink($public_cloud->getCompany()->URLSegment . '/' . strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $public_cloud->getName()))));
             $json_data['owner'] = $public_cloud->getCompany()->getName();
             array_push($locations, $json_data);
         }
     }
     return json_encode($locations);
 }
 public static function getDataCenterLocationsJson(ICloudService $cloud)
 {
     $locations = array();
     foreach ($cloud->getDataCentersLocations() as $location) {
         $json_data = array();
         $json_data['country'] = Geoip::countryCode2name($location->getCountry());
         $json_data['city'] = $location->getCity();
         $json_data['lat'] = $location->getLat();
         $json_data['lng'] = $location->getLng();
         $json_data['color'] = $location->getDataCenterRegion()->getColor();
         $json_data['endpoint'] = $location->getDataCenterRegion()->getEndpoint();
         $json_data['zone'] = $location->getDataCenterRegion()->getName();
         $json_data['availability_zones'] = array();
         $json_data['product_name'] = $cloud->getName();
         $json_data['owner'] = $cloud->getCompany()->getName();
         foreach ($location->getAvailabilityZones() as $az) {
             $json_data_az = array();
             $json_data_az['name'] = $az->getName();
             array_push($json_data['availability_zones'], $json_data_az);
         }
         array_push($locations, $json_data);
     }
     return json_encode($locations);
 }
Esempio n. 6
0
 public function getCountryFriendlyName()
 {
     return Geoip::countryCode2name($this->getCountry());
 }
Esempio n. 7
0
 public function UpdateBillingAddress($data, $form)
 {
     $member = Member::currentUser();
     $isConID = $member->ISContactID;
     //Get InfusionSoft Api
     $creditCardType = Controller::curr()->getISCreditCardType($data['CreditCardType']);
     $app = Controller::curr()->getInfusionSoftApi();
     if (!isset($data['CreditCardNumber']) || $data['CreditCardNumber'] != $data['CreditCardNumberCopy'] && !is_numeric($data['CreditCardNumber'])) {
         Controller::curr()->setMessage('Error', 'The credit card is invalid!');
         return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2'));
     }
     if ($data['CreditCardNumber'] == $data['CreditCardNumberCopy']) {
         $cardNumber = $data['CreditCardNumberCur'];
     } else {
         $cardNumber = $data['CreditCardNumber'];
     }
     // Validate credit card
     $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $cardNumber, 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear'], 'CVV2' => $data['CreditCardCVV']);
     $result = $app->validateCard($card);
     if ($result['Valid'] != 'true') {
         Controller::curr()->setMessage('Error', 'The credit card is invalid!');
         return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2'));
     }
     // Get country text from code
     $country = Geoip::countryCode2name($data['Country']);
     if ($data['CreditCardNumber'] == $data['CreditCardNumberCopy']) {
         //Get the credit card
         $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumberCur'], 'MemberID' => $member->ID))->First();
         //Update the credit card on InfusionSoft
         $ccData = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']);
         $app->dsUpdate("CreditCard", $creditCard->ISCCID, $ccData);
         //Update the credit card on site
         $creditCard->CreditCardType = $data['CreditCardType'];
         $creditCard->NameOnCard = $data['NameOnCard'];
         $creditCard->CreditCardCVV = $data['CreditCardCVV'];
         $creditCard->ExpiryMonth = $data['ExpiryMonth'];
         $creditCard->ExpiryYear = $data['ExpiryYear'];
         $creditCard->Company = $data['Company'];
         $creditCard->StreetAddress1 = $data['StreetAddress1'];
         $creditCard->StreetAddress2 = $data['StreetAddress2'];
         $creditCard->City = $data['City'];
         $creditCard->State = $data['State'];
         $creditCard->PostalCode = $data['PostalCode'];
         $creditCard->Country = $data['Country'];
         $creditCard->Current = 1;
         $creditCard->write();
     } else {
         //Find if the credit card exist
         $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumber'], 'MemberID' => $member->ID))->First();
         if ($creditCard) {
             //Get current credit card, un-mark it as current
             Controller::curr()->unsetCurrentCreditCard($member->ID);
             $ccID = $creditCard->ISCCID;
             //Update the credit card on InfusionSoft
             $ccData = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']);
             $app->dsUpdate("CreditCard", $ccID, $ccData);
             //Update the credit card on site
             $creditCard->CreditCardType = $data['CreditCardType'];
             $creditCard->NameOnCard = $data['NameOnCard'];
             $creditCard->CreditCardCVV = $data['CreditCardCVV'];
             $creditCard->ExpiryMonth = $data['ExpiryMonth'];
             $creditCard->ExpiryYear = $data['ExpiryYear'];
             $creditCard->Company = $data['Company'];
             $creditCard->StreetAddress1 = $data['StreetAddress1'];
             $creditCard->StreetAddress2 = $data['StreetAddress2'];
             $creditCard->City = $data['City'];
             $creditCard->State = $data['State'];
             $creditCard->PostalCode = $data['PostalCode'];
             $creditCard->Country = $data['Country'];
             $creditCard->Current = 1;
             $creditCard->write();
         } else {
             // Add the credit card on InfusionSoft
             $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']);
             $ccID = $app->dsAdd("CreditCard", $ccData);
             //Get current credit card un-mark it as current
             Controller::curr()->unsetCurrentCreditCard($member->ID);
             // Store Credit card on site and mark it as current
             $newCreditCard = new CreditCard();
             $newCreditCard->CreditCardType = $data['CreditCardType'];
             $newCreditCard->CreditCardNumber = $data['CreditCardNumber'];
             $newCreditCard->NameOnCard = $data['NameOnCard'];
             $newCreditCard->CreditCardCVV = $data['CreditCardCVV'];
             $newCreditCard->ExpiryMonth = $data['ExpiryMonth'];
             $newCreditCard->ExpiryYear = $data['ExpiryYear'];
             $newCreditCard->Company = $data['Company'];
             $newCreditCard->StreetAddress1 = $data['StreetAddress1'];
             $newCreditCard->StreetAddress2 = $data['StreetAddress2'];
             $newCreditCard->City = $data['City'];
             $newCreditCard->State = $data['State'];
             $newCreditCard->PostalCode = $data['PostalCode'];
             $newCreditCard->Country = $data['Country'];
             $newCreditCard->Current = 1;
             $newCreditCard->ISCCID = $ccID;
             $newCreditCard->MemberID = $member->ID;
             $newCreditCard->write();
         }
         //Update the user active Infusionsoft subscription Credit Card
         $subscription = Subscription::get()->filter(array('MemberID' => $member->ID, 'Status' => 1))->first();
         if ($subscription) {
             $subData = array('CC1' => $ccID);
             $app->dsUpdate("RecurringOrder", $subscription->SubscriptionID, $subData);
         }
     }
     //Update Member
     $member->FirstName = $data['FirstName'];
     $member->Surname = $data['LastName'];
     $member->write();
     // Update billing address on InfusionSoft
     $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country);
     $conID = $app->updateCon($isConID, $conDat);
     Controller::curr()->setMessage('Success', 'Credit Card and Billing Address successfully updated.');
     return Controller::curr()->redirect(Controller::curr()->Link('#tabs-2'));
 }
 function EwayURL()
 {
     // 1) Main Informations
     $order = $this->Order();
     //$items = $order->Items();
     $member = $order->Member();
     // 2) Main Settings
     if ($this->config()->get('test_mode') == 'yes') {
         $inputs['CustomerID'] = $this->config()->get('test_customer_id');
         $inputs['UserName'] = $this->config()->get('test_customer_username');
     } else {
         $inputs['CustomerID'] = $this->config()->get('customer_id');
         $inputs['UserName'] = $this->config()->get('customer_username');
     }
     if ($this->config()->get('test_mode') == 'yes' && isset($_REQUEST["PaymentTypeTest"])) {
         $amount = round($this->Amount->getAmount()) + intval($_REQUEST["PaymentTypeTest"]) / 100;
     } else {
         $amount = $this->Amount->getAmount();
     }
     $inputs['Amount'] = number_format($amount, 2, '.', '');
     //$decimals = 2, $decPoint = '.' , $thousands_sep = ''
     $inputs['Currency'] = $this->Amount->getCurrency();
     $inputs['ReturnURL'] = $inputs['CancelURL'] = Director::absoluteBaseURL() . EwayPayment_Handler::complete_link($this);
     $inputs['CompanyName'] = $this->config()->get('company_name');
     $inputs['MerchantReference'] = $inputs['MerchantInvoice'] = $order->ID;
     //$inputs['InvoiceDescription'] =
     $inputs['PageTitle'] = $this->config()->get('page_title');
     $inputs['PageDescription'] = 'Please fill the details below to complete your order.';
     if ($logo = $this->config()->get('company_logo')) {
         $inputs['CompanyLogo'] = Director::absoluteBaseURL() . $logo;
     }
     // 7) Prepopulating Customer Informations
     $address = $this->Order()->BillingAddress();
     $inputs['CustomerFirstName'] = $address->FirstName;
     $inputs['CustomerLastName'] = $address->Surname;
     $inputs['CustomerAddress'] = "{$address->Address} {$address->Address2}";
     $inputs['CustomerPostCode'] = $address->PostalCode;
     $inputs['CustomerCity'] = $address->City;
     $inputs['CustomerCountry'] = class_exists("Geoip") ? Geoip::countryCode2name($address->Country) : $address->Country;
     $inputs['CustomerPhone'] = $address->Phone;
     $inputs['CustomerEmail'] = $address->Email;
     $inputs['CustomerState'] = $address->RegionCode;
     if ($this->config()->get('test_mode') == 'yes') {
         $inputs['CompanyName'] = "TEST FOR " . $inputs['CompanyName'];
         debug::log(print_r($inputs, 1));
         debug::log($this->config()->get('url'));
     }
     return $this->config()->get('url') . '?' . http_build_query($inputs);
 }
Esempio n. 9
0
 function doPrepaidSignup()
 {
     $data = $_POST;
     //Check for existing member email address
     if ($member = DataObject::get_one("Member", "`Email` = '" . Convert::raw2sql($data['Email']) . "'")) {
         return "inlineMsg1";
     }
     $currentYear = date('Y');
     $currentMonth = date('n');
     //Stop sign-up when the credit card is expired
     if ($data['ExpirationYear'] < $currentYear) {
         return "inlineMsg6";
     }
     if ($data['ExpirationYear'] == $currentYear) {
         if ($data['ExpirationMonth'] < $currentMonth) {
             return "inlineMsg6";
         }
     }
     //Get InfusionSoft Api
     $app = $this->getInfusionSoftApi();
     // Get country text from code
     $country = Geoip::countryCode2name($data['Country']);
     // Create IndusionSoft contact
     $returnFields = array('Id');
     $conInfo = $app->findByEmail($data['Email'], $returnFields);
     if (count($conInfo)) {
         $isConID = $conInfo[0]['Id'];
     } else {
         $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country, 'Email' => $data['Email']);
         $isConID = $app->addCon($conDat);
     }
     // Locate existing credit card
     $ccID = $app->locateCard($isConID, substr($data['CreditCardNumber'], -4, 4));
     $creditCardType = $this->getISCreditCardType($data['CreditCardType']);
     if (!$ccID) {
         //Validate the credit card
         $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear'], 'CVV2' => $data['CVVCode']);
         $result = $app->validateCard($card);
         if ($result['Valid'] == 'false') {
             return "inlineMsg5";
         }
         $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CVVCode'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear']);
         $ccID = $app->dsAdd("CreditCard", $ccData);
     }
     // Create AttentionWizard member
     $member = new Member();
     $member->FirstName = $data['FirstName'];
     $member->Surname = $data['LastName'];
     $member->Email = $data['Email'];
     $member->Password = $data['Password']['_Password'];
     $member->ISContactID = $isConID;
     $memberID = $member->write();
     //Find or create the 'user' group
     if (!($userGroup = DataObject::get_one('Group', "Code = 'customers'"))) {
         $userGroup = new Group();
         $userGroup->Code = "customers";
         $userGroup->Title = "Customers";
         $userGroup->Write();
     }
     //Add member to user group
     $userGroup->Members()->add($member);
     //Get the current date
     $curdate = $app->infuDate(date('j-n-Y'));
     $product = Product::get()->byID(7);
     // Store credit card info
     $creditCard = new CreditCard();
     $creditCard->CreditCardType = $data['CreditCardType'];
     $creditCard->CreditCardNumber = $data['CreditCardNumber'];
     $creditCard->NameOnCard = $data['NameOnCard'];
     $creditCard->CreditCardCVV = $data['CVVCode'];
     $creditCard->ExpiryMonth = $data['ExpirationMonth'];
     $creditCard->ExpiryYear = $data['ExpirationYear'];
     $creditCard->Company = $data['Company'];
     $creditCard->StreetAddress1 = $data['StreetAddress1'];
     $creditCard->StreetAddress2 = $data['StreetAddress2'];
     $creditCard->City = $data['City'];
     $creditCard->State = $data['State'];
     $creditCard->PostalCode = $data['PostalCode'];
     $creditCard->Country = $data['Country'];
     $creditCard->Current = 1;
     $creditCard->ISCCID = $ccID;
     $creditCard->MemberID = $memberID;
     $creditCardID = $creditCard->write();
     // Create an Infusionsoft order
     $config = SiteConfig::current_site_config();
     $invoiceId = $app->blankOrder($isConID, $product->Name, $curdate, 0, 0);
     $orderItem = $app->addOrderItem($invoiceId, $this->getNonExpiringIsProductId(7), 3, floatval($data['Price']), intval($data['Quantity']), $product->Name, $product->Name);
     $result = $app->chargeInvoice($invoiceId, $product->Name, $ccID, $config->MerchantAccount, false);
     // Create an order
     $order = new Order();
     $order->OrderStatus = 'P';
     $order->Amount = $data['Price'] * $data['Quantity'];
     $order->MemberID = $memberID;
     $order->ProductID = 7;
     $order->CreditCardID = $creditCardID;
     $orderID = $order->write();
     $returnFields = array('_AttentionWizard', 'Leadsource');
     $conDat1 = $app->loadCon($isConID, $returnFields);
     if ($result['Successful']) {
         // Add tag Paid member - prepaid
         $app->grpAssign($isConID, 2290);
         $conDat = array('ContactType' => 'AW Customer');
         if (!isset($conDat1['_AttentionWizard'])) {
             $conDat['_AttentionWizard'] = 'Prepaid only - no subscription';
         }
         if (isset($conDat1['_AttentionWizard']) && $conDat1['_AttentionWizard'] != 'Paid and Current' && $conDat1['_AttentionWizard'] != 'Free') {
             $conDat['_AttentionWizard'] = 'Prepaid only - no subscription';
         }
         if (!isset($conDat1['Leadsource']) || !$conDat1['Leadsource']) {
             $conDat['Leadsource'] = 'AttentionWizard';
         }
         $conID = $app->updateCon($isConID, $conDat);
         // Note is added
         $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Purchased AW Prepaid Credits", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
         $conActionID = $app->dsAdd("ContactAction", $conActionDat);
         // Update order
         $order->OrderStatus = 'c';
         $order->write();
         // Create a Subscription record
         $subscription = new Subscription();
         $subscription->StartDate = date("Y-m-d H:i:s");
         $subscription->MemberID = $memberID;
         $subscription->ProductID = 7;
         $subscription->OrderID = $orderID;
         $subscription->write();
         // Create a MemberCredits record
         $memberCredits = new MemberCredits();
         $memberCredits->Credits = $product->Credits * $data['Quantity'];
         $memberCredits->MemberID = $memberID;
         $memberCredits->ProductID = 7;
         $memberCredits->SubscriptionID = $subscription->ID;
         $memberCredits->write();
         $member->logIn();
         $this->setMessage('Success', 'Purchased non-expiring heatmaps successfully.');
         return 'url1';
     } else {
         //Update Infusionsoft contact
         $conDat = array('_AttentionWizard' => 'Unsuccessful prepaid sign-up', 'ContactType' => 'AW Prospect');
         if (!isset($conDat1['Leadsource'])) {
             $conDat['Leadsource'] = 'AttentionWizard';
         }
         $app->updateCon($isConID, $conDat);
         // Add an AW prospect tag
         $app->grpAssign($isConID, $this->getISTagIdByPaymentCode(strtoupper($result['Code'])));
         // Add a note
         $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up prepaid plan", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
         $conActionID = $app->dsAdd("ContactAction", $conActionDat);
         $member->logIn();
         $this->setMessage('Error', 'Sorry,the payment failed due to some reason.please update your credit card.');
         return 'url2';
     }
 }
Esempio n. 10
0
 /**
  * Run the Country code through a converter to get the proper Country Name
  */
 function FullCountry()
 {
     return isset($this->owner->Country) && !is_null($this->owner->Country) ? Geoip::countryCode2name($this->owner->Country) : "";
 }
 /**
  * Return the full country name for the 2 letter country code this has 
  * stored in the database.
  *
  * @return string
  */
 public function getNiceLocation()
 {
     return $this->Location ? Geoip::countryCode2name($this->Location) : "Anywhere";
 }
 public function getValueFromData($data)
 {
     if (isset($data[$this->Name])) {
         return Geoip::countryCode2name($data[$this->Name]);
     }
 }
 function getMap($width = 400, $height = 260, $zoom = 15)
 {
     $city = $this->City();
     if ($city && $city->exists()) {
         $address = array($this->Address, $this->Address2, $this->PostalCode, Geoip::countryCode2name($city->Country));
         $address = urlencode(implode(' ', $address));
         // 1) Image
         $imageLink = 'http://maps.googleapis.com/maps/api/staticmap?';
         $params = array('center' => $address, 'zoom' => $zoom, 'size' => "{$width}x{$height}", 'maptype' => 'roadmap', 'markers' => "color:red|{$address}", 'sensor' => 'false');
         $imageLink .= http_build_query($params);
         // 2) Google Map
         $gmapLink = 'http://maps.google.com/maps?';
         $params = array('q' => $address, 'z' => $zoom);
         $gmapLink .= http_build_query($params);
         return new ArrayData(array('ImageLink' => $imageLink, 'GMapLink' => $gmapLink));
     }
     return array();
 }
Esempio n. 14
0
 public function updateCreditCard($data, $form)
 {
     $member = Member::get()->byID($data['MemberID']);
     $isConID = $member->ISContactID;
     // Get the Page controller
     $Pg_Ctrl = new Page_Controller();
     //Get InfusionSoft Api
     $creditCardType = $Pg_Ctrl->getISCreditCardType($data['CreditCardType']);
     $app = $Pg_Ctrl->getInfusionSoftApi();
     // Validate credit card
     $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear'], 'CVV2' => $data['CreditCardCVV']);
     $result = $app->validateCard($card);
     if ($result['Valid'] != 'true') {
         $form->sessionMessage("The credit card details are invalid!", 'bad');
         return $this->edit(Controller::curr()->getRequest());
     }
     //Update the credit card on InfusionSoft
     $country = Geoip::countryCode2name($data['Country']);
     $ccData = array('BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CVV2' => $data['CreditCardCVV'], 'ExpirationMonth' => sprintf("%02s", $data['ExpiryMonth']), 'ExpirationYear' => $data['ExpiryYear']);
     $app->dsUpdate("CreditCard", $data['ISCCID'], $ccData);
     if (isset($data['Current'])) {
         // Update billing address on InfusionSoft
         $conDat = array('Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country);
         $conID = $app->updateCon($isConID, $conDat);
     }
     //Get the credit card
     $creditCard = CreditCard::get()->filter(array('CreditCardNumber' => $data['CreditCardNumber']))->First();
     //Unset the current card
     if (isset($data['Current']) && !$creditCard->Current) {
         $Pg_Ctrl->unsetCurrentCreditCard($member->ID);
     }
     //Update the credit card on site
     $creditCard->CreditCardType = $data['CreditCardType'];
     $creditCard->NameOnCard = $data['NameOnCard'];
     $creditCard->CreditCardCVV = $data['CreditCardCVV'];
     $creditCard->ExpiryMonth = $data['ExpiryMonth'];
     $creditCard->ExpiryYear = $data['ExpiryYear'];
     $creditCard->Company = $data['Company'];
     $creditCard->StreetAddress1 = $data['StreetAddress1'];
     $creditCard->StreetAddress2 = $data['StreetAddress2'];
     $creditCard->City = $data['City'];
     $creditCard->State = $data['State'];
     $creditCard->PostalCode = $data['PostalCode'];
     $creditCard->Country = $data['Country'];
     if (isset($data['Current']) && !$creditCard->Current) {
         $creditCard->Current = 1;
     }
     if (isset($data['UsedForTrial'])) {
         $creditCard->UsedForTrial = 1;
     }
     $creditCard->write();
     $form->sessionMessage("Credit Card and Billing Address successfully updated.", 'good');
     $randomNumber = rand();
     return $this->getController()->redirect("admin/manage-data/CreditCard/EditForm/field/CreditCard/item/{$creditCard->ID}/edit?rand={$randomNumber}");
 }
Esempio n. 15
0
 function doSignup()
 {
     $data = $_POST;
     //Stop sign-up if the user does not check the chebox
     if (!isset($data['Agreement'])) {
         return "inlineMsg5";
     }
     if ($this->isCCUsedForTrial("{$data['CreditCardNumber']}") && $data['SubscriptionType'] == 1) {
         return "inlineMsg1";
     }
     $currentYear = date('Y');
     $currentMonth = date('n');
     //Stop sign-up when the credit card is expired
     if ($data['ExpirationYear'] < $currentYear) {
         return "inlineMsg4";
     }
     if ($data['ExpirationYear'] == $currentYear) {
         if ($data['ExpirationMonth'] < $currentMonth) {
             return "inlineMsg4";
         }
     }
     //Get InfusionSoft Api
     $app = $this->getInfusionSoftApi();
     //Get current date
     $curdate = $app->infuDate(date('j-n-Y'));
     //Get the registration form from session
     $regFormData = Session::get('RegistrationFormData');
     // Get country text from code
     $country = Geoip::countryCode2name($data['Country']);
     // Get InfusionSoft Contact ID
     $returnFields = array('Id', 'Leadsource');
     $conInfo = $app->findByEmail($regFormData['Email'], $returnFields);
     if (empty($conInfo)) {
         // If IS contact doesn't exist create one
         $conDat = array('FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'Company' => $data['Company'], 'StreetAddress1' => $data['StreetAddress1'], 'StreetAddress2' => $data['StreetAddress2'], 'City' => $data['City'], 'State' => $data['State'], 'PostalCode' => $data['PostalCode'], 'Country' => $country, 'Email' => $regFormData['Email']);
         if (empty($conInfo)) {
             $conDat['Leadsource'] = 'AttentionWizard';
         }
         $isConID = $app->addCon($conDat);
     } else {
         $isConID = $conInfo[0]['Id'];
     }
     // Locate existing credit card
     $ccID = $app->locateCard($isConID, substr($data['CreditCardNumber'], -4, 4));
     $creditCardType = $this->getISCreditCardType($data['CreditCardType']);
     if (!$ccID) {
         //Validate the credit card
         $card = array('CardType' => $creditCardType, 'ContactId' => $isConID, 'CardNumber' => $data['CreditCardNumber'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear'], 'CVV2' => $data['CVVCode']);
         $result = $app->validateCard($card);
         if ($result['Valid'] == 'false') {
             return "inlineMsg3";
         }
         $ccData = array('ContactId' => $isConID, 'FirstName' => $data['FirstName'], 'LastName' => $data['LastName'], 'BillAddress1' => $data['StreetAddress1'], 'BillAddress2' => $data['StreetAddress2'], 'BillCity' => $data['City'], 'BillState' => $data['State'], 'BillZip' => $data['PostalCode'], 'BillCountry' => $country, 'CardType' => $creditCardType, 'NameOnCard' => $data['NameOnCard'], 'CardNumber' => $data['CreditCardNumber'], 'CVV2' => $data['CVVCode'], 'ExpirationMonth' => sprintf("%02s", $data['ExpirationMonth']), 'ExpirationYear' => $data['ExpirationYear']);
         $ccID = $app->dsAdd("CreditCard", $ccData);
     }
     // Create AttentionWizard member
     $member = new Member();
     $member->FirstName = $data['FirstName'];
     $member->Surname = $data['LastName'];
     $member->Email = $regFormData['Email'];
     $member->Password = $regFormData['Password']['_Password'];
     $member->ISContactID = $isConID;
     $memberID = $member->write();
     //Find or create the 'user' group and add the member to the group
     if (!($userGroup = DataObject::get_one('Group', "Code = 'customers'"))) {
         $userGroup = new Group();
         $userGroup->Code = "customers";
         $userGroup->Title = "Customers";
         $userGroup->Write();
         $userGroup->Members()->add($member);
     } else {
         $userGroup->Members()->add($member);
     }
     //Get product details
     $product = Product::get()->byID($data['SubscriptionType']);
     $credits = $product->Credits;
     if ($data['SubscriptionType'] == 1) {
         $orderAmount = $product->TrialPrice;
         $productName = "30 days 1-dollar Trial";
         $isProductID = 38;
     } else {
         $productName = $product->Name;
         $orderAmount = $product->RecurringPrice;
         $isProductID = $product->ISInitialProductID;
     }
     // Store credit card info
     $creditCard = new CreditCard();
     $creditCard->CreditCardType = $data['CreditCardType'];
     $creditCard->CreditCardNumber = $data['CreditCardNumber'];
     $creditCard->NameOnCard = $data['NameOnCard'];
     $creditCard->CreditCardCVV = $data['CVVCode'];
     $creditCard->ExpiryMonth = $data['ExpirationMonth'];
     $creditCard->ExpiryYear = $data['ExpirationYear'];
     $creditCard->Company = $data['Company'];
     $creditCard->StreetAddress1 = $data['StreetAddress1'];
     $creditCard->StreetAddress2 = $data['StreetAddress2'];
     $creditCard->City = $data['City'];
     $creditCard->State = $data['State'];
     $creditCard->PostalCode = $data['PostalCode'];
     $creditCard->Country = $data['Country'];
     $creditCard->Current = 1;
     $creditCard->ISCCID = $ccID;
     $creditCard->MemberID = $memberID;
     $creditCardID = $creditCard->write();
     // Create an order
     $order = new Order();
     $order->OrderStatus = 'P';
     $order->Amount = $orderAmount;
     $order->MemberID = $memberID;
     $order->ProductID = $data['SubscriptionType'];
     $order->CreditCardID = $creditCardID;
     $orderID = $order->write();
     //Create the Infusionsoft subscription
     $subscriptionID = $this->createISSubscription($isConID, $product->ISProductID, $product->RecurringPrice, $ccID, 30);
     if ($subscriptionID && is_int($subscriptionID)) {
         //Create an infusionsoft order
         $config = SiteConfig::current_site_config();
         $invoiceId = $app->blankOrder($isConID, $productName, $curdate, 0, 0);
         $orderItem = $app->addOrderItem($invoiceId, $isProductID, 9, floatval($orderAmount), 1, $productName, $productName);
         $result = $app->chargeInvoice($invoiceId, $productName, $ccID, $config->MerchantAccount, false);
         if ($result['Successful']) {
             // Create a Subscription record
             $nextBillDate = $this->getSubscriptionNextBillDate($subscriptionID);
             $expireDate = date('Y-m-d H:i:s', strtotime($nextBillDate));
             $startDate = date('Y-m-d H:i:s', strtotime($expireDate . "-30 days"));
             $subscription = new Subscription();
             $subscription->StartDate = $startDate;
             $subscription->ExpireDate = $expireDate;
             $subscription->MemberID = $memberID;
             $subscription->ProductID = $data['SubscriptionType'];
             $subscription->OrderID = $orderID;
             $subscription->Status = 1;
             $subscription->SubscriptionID = $subscriptionID;
             $subscription->write();
             // Create a MemberCredits record
             $memberCredits = new MemberCredits();
             $memberCredits->Credits = $credits;
             $memberCredits->ExpireDate = $expireDate;
             $memberCredits->MemberID = $memberID;
             $memberCredits->ProductID = $data['SubscriptionType'];
             $memberCredits->SubscriptionID = $subscription->ID;
             $memberCredits->write();
             // Update order
             $order->OrderStatus = 'c';
             $order->write();
             // If product selected is bronze do a trial signup
             if ($data['SubscriptionType'] == 1) {
                 //Add the InfusionSoft tag
                 $app->grpAssign($isConID, 2216);
                 //Update the InfusionSoft contact details
                 $conDat = array('ContactType' => 'AW Customer', '_AWstartdate' => $curdate, '_AttentionWizard' => 'Free');
                 $app->updateCon($isConID, $conDat);
                 // Update Subscription
                 $subscription->IsTrial = 1;
                 $subscription->SubscriptionCount = 0;
                 $subscription->write();
                 // Update Member
                 $member->SignUpTrial = 1;
                 $member->write();
                 // Update Order
                 $order->IsTrial = 1;
                 $order->write();
                 // Update credit card
                 $creditCard->UsedForTrial = 1;
                 $creditCard->write();
             } else {
                 // Update Subscription
                 $subscription->SubscriptionCount = 1;
                 $subscription->write();
                 // Add the InfusionSoft tag
                 $isTagId = $this->getISTagIdByProduct($data['SubscriptionType']);
                 $app->grpAssign($isConID, $isTagId);
                 //Update the InfusionSoft contact details
                 $returnFields = array('_AWofmonths');
                 $conDat1 = $app->loadCon($isConID, $returnFields);
                 if (!isset($conDat1['_AWofmonths'])) {
                     $conDat1['_AWofmonths'] = 0;
                 }
                 $conDat = array('_AWofmonths' => $conDat1['_AWofmonths'] + 1, 'ContactType' => 'AW Customer', '_AttentionWizard' => 'Paid and Current', '_AWstartdate' => $curdate);
                 $app->updateCon($isConID, $conDat);
                 //Add a note
                 $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Payment made for AW service", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'CreationNotes' => "{$product->Name} Subscription", 'UserID' => 1);
                 $app->dsAdd("ContactAction", $conActionDat);
             }
             $member->logIn();
             $this->setMessage('Success', 'You have signed-up & the Subscription is created successfully');
             return 'url1';
         } else {
             //Set the subscription to Inactive
             $this->setSubscriptionStatus($subscriptionID, 'Inactive');
             //Update InfusionSoft contact
             if ($data['SubscriptionType'] == 1) {
                 $aw = 'Unsuccessful trial sign-up';
             } else {
                 $aw = 'Unsuccessful paid sign-up';
             }
             $conDat = array('ContactType' => 'AW Prospect', '_AttentionWizard' => $aw);
             $app->updateCon($isConID, $conDat);
             // Add an AW prospect tag
             //$app->grpAssign($isConID, $this->getISTagIdByPaymentCode(strtoupper($result['Code'])));
             $app->grpAssign($isConID, $this->getISTagIdByPaymentCode('DECLINED'));
             // Add a note
             $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up for AW", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
             $conActionID = $app->dsAdd("ContactAction", $conActionDat);
             $member->logIn();
             $this->setMessage('Error', 'Sorry,the payment failed due to some reason.please update your credit card');
             return "url2";
         }
     } else {
         $member->logIn();
         // Add an AW prospect tag
         $app->grpAssign($isConID, 3097);
         //Update InfusionSoft contact
         if ($data['SubscriptionType'] == 1) {
             $aw = 'Unsuccessful trial sign-up';
         } else {
             $aw = 'Unsuccessful paid sign-up';
         }
         $conDat = array('ContactType' => 'AW Prospect', '_AttentionWizard' => $aw);
         $app->updateCon($isConID, $conDat);
         // Add a note
         $conActionDat = array('ContactId' => $isConID, 'ActionType' => 'UPDATE', 'ActionDescription' => "Unsuccessful attempt to sign-up for AW", 'CreationDate' => $curdate, 'ActionDate' => $curdate, 'CompletionDate' => $curdate, 'UserID' => 1);
         $conActionID = $app->dsAdd("ContactAction", $conActionDat);
         $this->setMessage('Error', 'You have signed-up successfully but the Subscription is not created,please try again.');
         return "url3";
     }
 }