$subscriber, 'address' => $userDetails['address'], 'email_address' => $userDetails['email_address'], 'civility' => $userDetails['civil_status'], 'birthday' => $userDetails['birthday'], 'postal_code' => $userDetails['postal_code'], 'country' => $userDetails['country'], 'city' => $userDetails['city'], 'profession' => $userDetails['profession'], 'phone' => $userDetails['phone_number'], 'sponsorship' => $userDetails['sponsorship'], 'company' => $userDetails['company'], 'news_subscription' => (int)$userDetails['news_subscription'] ); $preInfo = $this->formatPreInfoData($userPreInfo, $cookieData); if(!is_null($preInfo)) { $subscriber = array_merge($subscriber, $preInfo); } return array_filter($subscriber); } private function formatPreInfoData(array $userPreInfo, array $cookieData) { switch($cookieData['name']) { case 'Student': return array( 'id_no' => $userPreInfo['student_id'], 'id_file' => array_key_exists('student_file', $userPreInfo) ? $userPreInfo['student_file'] : '' ); case 'Shareholder': return array( 'id_no' => $userPreInfo['shareholder_id'] ); case 'Sponsored': return array( 'sponsor_name' => $userPreInfo['sponsored_name'], 'sponsor_email' => $userPreInfo['sponsored_email'], 'sponsor_company' => $userPreInfo['sponsored_company'], 'isSponsor' => 1 ); default: return null; } } public function formatUserData(array $userDetails, array $cookieData) { return array( 'first_name' => $userDetails['firstname'], 'last_name' => $userDetails['lastname'], 'email_address' => $userDetails['email_address'], 'password' => hash_password($userDetails['password']), 'role_id' => $cookieData['role_id'], 'status' => 1 ); } public function formatSubscriptionData(array $userDetails, array $userPreInfo, array $cookieData, int $userId, array $receipt = null) { $subscription = array( 'user_id' => $userId, 'subscriptionId' => $cookieData['price_id'], 'payment_mode' => $userDetails['mode_of_payment'], 'amount' => $cookieData['price'], 'status' => $userDetails['mode_of_payment'] == 'card' ? 'ACTIVE' : 'UNVERIFIED' ); $payment = $this->formatPaymentData($userDetails['mode_of_payment'], $cookieData, $receipt); return array_filter(array_merge($subscription, $payment)); } private function formatPaymentData(string $paymentMode, array $cookieData, array $receipt = null) { $payment = array(); if($paymentMode == 'card' && !is_null($receipt)) { $payment = array( 'transactionDateTime' => date("Y-m-d", strtotime($receipt['transactionDateTime'])), 'transactionReference' => $receipt['transactionReference'], 'expirationDate' => date("Y-m-d", strtotime(date("Y-m-d", strtotime($receipt['transactionDateTime'])) . " + 1 year")), 'PCNr' => $receipt['PCNr'], 'payId' => $receipt['payId'], 'CCBrand' => $receipt['CCBrand'] ); } return $payment; } public function filterPaymentReceipt($receipt) { $props = ['transactionDateTime','transactionReference','authorisationId','customerIpAddress','responseCode']; $receiptData = explode("|", $receipt); $paymentReceipt = []; foreach($receiptData as $item) { $arrayItem = explode("=", $item); if(in_array($arrayItem[0],$props)) { $paymentReceipt[$arrayItem[0]] = $arrayItem[1]; } } return $paymentReceipt; } }