AjaxActions() as $key => $action) { add_action("wp_ajax_{$action['name']}", [$this, $action['callback']]); add_action("wp_ajax_nopriv_{$action['name']}", [$this, $action['callback']]); } add_action('init', [$this, 'fielddayActionsInit']); add_action('template_redirect', [$this, 'KmLoginRedirect']); } /* * fieldday ajax handlers * * @return Array */ private function AjaxActions() { return [ ['name' => 'km_filtersession', 'callback' => 'FilterSessions'], ['name' => 'km_kidsinfo', 'callback' => 'GetKidsInformation'], ['name' => 'km_login', 'callback' => 'LoginProcess'], ['name' => 'km_register', 'callback' => 'RegisterProcess'], ['name' => 'km_verify_otp', 'callback' => 'VerifyOTP'], ['name' => 'km_resend_otp', 'callback' => 'ResendOtp'], ['name' => 'km_update_phone', 'callback' => 'UpdatePhone'], ['name' => 'km_social_login', 'callback' => 'SocialLogin'], ['name' => 'km_display_auth', 'callback' => 'DisplayAuthForm'], ['name' => 'km_display_login', 'callback' => 'DisplayLoginForm'], ['name' => 'km_display_register', 'callback' => 'DisplayRegisterForm'], ['name' => 'km_get_kid_form', 'callback' => 'GetKidsForm'], ['name' => 'km_updateCart', 'callback' => 'UpdateCartInformation'], ['name' => 'get_school_info', 'callback' => 'getSchoolInfo'], ['name' => 'km_display_cartform', 'callback' => 'AddToCartForm'], ['name' => 'km_display_eventcartform', 'callback' => 'EventAddToCartForm'], ['name' => 'km_display_packageform', 'callback' => 'PackagePurchaseForm'], ['name' => 'km_display_plans', 'callback' => 'DisplayPlansPopup'], ['name' => 'km_edit_cart_item', 'callback' => 'EditCartForm'], ['name' => 'km_atc_partcipants', 'callback' => 'getAtcParticipants'], //['name' => 'km_get_otheroptions', 'callback' => 'atcSessionExtendedCare'], //['name' => 'km_prepare_cart', 'callback' => 'PrepareCart'], ['name' => 'km_set_cartitems', 'callback' => 'saveCartItem'], ['name' => 'get_cart_data', 'callback' => 'getCartHtml'], ['name' => 'km_remove_cart_item', 'callback' => 'removeCartItem'], ['name' => 'km_check_store_credit', 'callback' => 'checkStoreCredit'], ['name' => 'km_purchase', 'callback' => 'fielddaySessionPurchase'], ['name' => 'km_update_profile', 'callback' => 'UpdateProfile'], ['name' => 'km_profile_tab', 'callback' => 'profileTab'], ['name' => 'km_update_password', 'callback' => 'updatePassword'], ['name' => 'km_get_purchase', 'callback' => 'GetAjaxPurchase'], ['name' => 'km_get_bankdays', 'callback' => 'fielddayBankDays'], ['name' => 'km_get_giftcards', 'callback' => 'fielddayGiftCards'], ['name' => 'km_get_days', 'callback' => 'fielddayDaysFilter'], ['name' => 'km_merchandise_form', 'callback' => 'merchandiseForm'], ['name' => 'km_merchandise_process', 'callback' => 'merchandiseProcess'], ['name' => 'km_add_new_kid', 'callback' => 'AddkidModal'], ['name' => 'km_save_kid', 'callback' => 'SaveNewKid'], ['name' => 'km_update_kid_profile', 'callback' => 'UpdateKid'], ['name' => 'km_update_insurance', 'callback' => 'updateInsurance'], ['name' => 'km_delete_kid', 'callback' => 'deleteKid'], ['name' => 'km_save_kidforms', 'callback' => 'saveKidForms'], ['name' => 'km_forget_popup', 'callback' => 'forgetModal'], ['name' => 'km_reset_password', 'callback' => 'ResetPassword'], ['name' => 'km_getmenu_data', 'callback' => 'getMenuData'], ['name' => 'km_getprovider_terms', 'callback' => 'displayProviderTerms'], ['name' => 'km_parent_info', 'callback' => 'processParentInfo'], ['name' => 'km_process_stripe', 'callback' => 'processStripe'], ['name' => 'km_display_claim_form', 'callback' => 'displayClaimForm'], ['name' => 'km_claimcredit', 'callback' => 'claimCredit'], ['name' => 'km_session_detail', 'callback' => 'singleSessionDetail'], ['name' => 'km_session_booking_options', "callback" => "sessionBookingOptions"], ['name' => 'km_submit_donation', "callback" => "submitDonation"], ['name' => 'km_calenderevents', "callback" => "calenderevents"], ['name' => 'km_registerSessionTiming', "callback" => "registerSessionTiming"], ['name' => 'km_set_membershipcartitems', "callback" => "savemebershipCartitmes"], ['name' => 'km_set_membershipurchase', "callback" => "membershipPurchase"], ['name' => 'km_set_packagepurchase', "callback" => "packagePurchase"], ['name' => 'km_set_eventpurchase', "callback" => "EventPurchase"], ['name' => 'km_get_class_packages_options', "callback" => "packageOptions"], ['name' => 'km_get_events_price', "callback" => "eventPrices"], ['name' => 'km_get_sessions_extradata', "callback" => "sessions_extradata"], ['name' => 'km_class_package_info', "callback" => "ClasspackageInfo"], ['name' => 'km_set_giftCardmodel', "callback" => "giftCardmodel"], ['name' => 'km_set_giftcardPurchase', "callback" => "giftCardPurchase"], ['name' => 'km_set_singlegiftcard', "callback" => "singleGiftcard"], ['name' => 'km_set_checkoutpayments', "callback" => "checkoutpaymentInstallments"], ['name' => 'km_delete_saved_card', 'callback' => 'deleteSavedCard'], ['name' => 'km_card_form', 'callback' => 'getCardForm'], ['name' => 'km_save_card', 'callback' => 'saveCard'], ['name' => 'km_setdefault_card', 'callback' => 'setDefaultCard'], ['name' => 'km_getactivity_sessions', 'callback' => 'getactivitySessions'] ]; } public function getactivitySessions(){ $filters = []; $activity_id = filter_input(INPUT_POST, 'activity_id', FILTER_SANITIZE_STRING); if ($activity_id && $activity_id!='all'){ $filters['filters']['activityId'] = $activity_id; } $data = ''; if ($activity_id) { $content .= ''; $ProviderSessions = fieldday()->api->GetProviderSessions($filters); $sessions_data = $this->getSessionsList($ProviderSessions); foreach ($sessions_data as $key => $session) { $content .= ''; } } wp_send_json(['status' => 'success', 'content' => $content]); } private function getSessionsList($sessions, $key = false) { $activitys = $sessions->data->sessions; $searchactivitys = []; foreach ($activitys as $activity => $singlesessions) { foreach ($singlesessions->sessions as $singleactivitys => $singleactivity) { //echo $singleactivity->activityId->_id; $searchactivitys[$singleactivity->_id] = wp_sprintf('%s', $singleactivity->name); } } return $searchactivitys; } /** * get partcipants for add to cart form * * @return JSON participant html with json response */ public function getAtcParticipants() { $cartKey = filter_input(INPUT_POST, 'cartkey', FILTER_SANITIZE_STRING); if ($cartKey) { $cartItem = fieldday()->engine->getCartItem($cartKey); } else { $cartItem = []; } $content = fieldday()->engine->fielddayCartParticipants($cartItem); wp_send_json(['status' => 'success', 'content' => $content]); } /** * Saves a new kid form. * @param array $postdata * @return json success and html */ public function SaveNewKid() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); unset($postdata['action'], $postdata['permalink'], $postdata['_wpnonce']); if (array_key_exists('ATC', $postdata)) { unset($postdata['ATC']); unset($postdata['kidscount']); unset($postdata['cartItemKey']); } if (!fieldday()->engine->getValue('school', $postdata, false)) { unset($postdata['school']); } if (!fieldday()->engine->getValue('gender', $postdata, false)) { unset($postdata['gender']); } if ($_FILES["ParentPicUpload"]['tmp_name'] != '') { $postdata['file'] = [ "path" => $_FILES['ParentPicUpload']['tmp_name'], "type" => $_FILES['ParentPicUpload']['type'], "name" => 'file' ]; } $addkid = fieldday()->api->AddKid($postdata); if ($addkid->statusCode == 201) { $html = fieldday()->engine->getView('account/_kidsinfo', ['kid' => $addkid->data, 'permalink' => $permalink]); $response = ['status' => 'success', 'message' => __($addkid->message, 'fieldday'), 'html' => $html]; } else { $response = ['status' => 'fail', 'message' => $addkid->message, 'log' => $addkid]; } wp_send_json($response); } /** * Modal view for add new kid * @return Json json respose */ public function AddkidModal() { $ATCdata = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $sessionId = fieldday()->engine->getValue('session_id', $ATCdata, false); $sessionDetail = fieldday()->api->getActivitySession($sessionId); $school = fieldday()->api->getProviderSchools(); //$content = fieldday()->engine->getView('account/addkidform', ['school' => $school]); $content = fieldday()->engine->getView('account/addnewparticipant', ['school' => $school,'sessionInfo' => $sessionDetail->data]); //$header = wp_sprintf('

%s

', __('ADD KID INFORMATION', 'fieldday')); //$footer = wp_sprintf("", __('Cancel', 'fieldday')); //$footer .= wp_sprintf("", __('Save', 'fieldday')); // wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => $footer]); wp_send_json(['status' => 'success', 'content' => $content,'price'=>$price]); } /** * Modal view for Forget password * @return Json json respose */ public function forgetModal() { $header = __('Reset Password', 'fieldday'); $content = fieldday()->engine->getView('forget_password'); wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content]); } /** * Reset password. * @return Json json respose */ public function ResetPassword() { global $fielddaySetting; $email = filter_input(INPUT_POST, 'km_user_email', FILTER_SANITIZE_STRING); $redirect = site_url('/'); $vendor = array_key_exists('siteName', $fielddaySetting) ? $fielddaySetting['siteName'] : null; $resetPassword = fieldday()->api->getResetPasswordToken($email, $redirect, $vendor); if ($resetPassword->statusCode == 200) { $response = ['status' => 'success', 'message' => $resetPassword->message]; } else { $response = ['status' => 'fail', 'message' => $resetPassword->message, 'log' => $resetPassword]; } wp_send_json($response); } /** * Update parent password * @return Json json response */ public function updatePassword() { $current_password = filter_input(INPUT_POST, 'current-password', FILTER_SANITIZE_STRING); $new_password = filter_input(INPUT_POST, 'new-password', FILTER_SANITIZE_STRING); $confirm_password = filter_input(INPUT_POST, 'confirm-new-password', FILTER_SANITIZE_STRING); if ($new_password == $confirm_password) { $updatePassword = fieldday()->api->wp_change_password(['password' => $current_password, 'newPassword' => $new_password]); if ($updatePassword->statusCode == 200) { $response = ['status' => 'success', 'message' => __('Password Updated', 'fieldday')]; } else { $response = ['status' => 'fail', 'message' => $updatePassword->message, 'log' => $updatePassword]; } } else { $response = ['status' => 'fail', 'message' => __('Password and confirm password not matching', 'fieldday')]; } wp_send_json($response); } /** * Change html according to tab * * @return string html */ public function profileTab() { $pagename = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING); $page = 'account/' . $pagename; switch ($pagename) { case 'purchase': $purchase = fieldday()->api->GetactivityRegistrations(['page' => 0, 'count' => 10]); if ($purchase->statusCode == 200) { $content = fieldday()->engine->getView($page, ['purchases' => $purchase->data, 'purchase' => $purchase]); $response = ['status' => 'success', 'content' => $content]; } else { $response = ['status' => 'fail', 'message' => $purchase->message]; } break; case 'kid_generalInfo' : $kidId = filter_input(INPUT_POST, 'dataId', FILTER_SANITIZE_STRING); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $kidData = fieldday()->api->GetKidDetail($kidId); if ($kidData->statusCode !== 200) { $content = wp_sprintf("
%s
", $kidData->message); } else { $content = fieldday()->engine->getView($page, ['profile' => $kidData->data->kidProfile, 'permalink' => $permalink]); } $response = ['status' => 'success', 'content' => $content]; break; case 'kid_doctors' : $kidId = filter_input(INPUT_POST, 'dataId', FILTER_SANITIZE_STRING); $kidData = fieldday()->api->GetKidDetail($kidId); if ($kidData->statusCode !== 200) { $content = wp_sprintf("
%s
", $kidData->message); } else { $content = fieldday()->engine->getView($page, ['kidId' => $kidId, 'doctor_info' => $kidData->data->doctors]); } $response = ['status' => 'success', 'content' => $content]; break; case 'kid_allergies' : $kidId = filter_input(INPUT_POST, 'dataId', FILTER_SANITIZE_STRING); $kidData = fieldday()->api->GetKidDetail($kidId); if ($kidData->statusCode !== 200) { $content = wp_sprintf("
%s
", $kidData->message); } else { $content = fieldday()->engine->getView($page, ['kidId' => $kidId, 'kid_environment_allergies' => $kidData->data->environmentAllergies, 'kid_food_allergies' => $kidData->data->foodAllergies, 'kid_dietRestricts' => $kidData->data->dietRestricts, 'kid_medication_allregies' => $kidData->data->medicationAllergies]); } $response = ['status' => 'success', 'content' => $content]; break; case 'kid_medical' : $kidId = filter_input(INPUT_POST, 'dataId', FILTER_SANITIZE_STRING); $kidData = fieldday()->api->GetKidDetail($kidId); if ($kidData->statusCode !== 200) { $content = wp_sprintf("
%s
", $kidData->message); } else { //print_r($kidData); $content = fieldday()->engine->getView($page, ['kidId' => $kidId, 'kid_heathConcerns' => $kidData->data->healthConcerns, 'kid_treatments' => $kidData->data->treatments, 'kid_symptoms' => $kidData->data->symptoms]); } $response = ['status' => 'success', 'content' => $content]; break; case 'store_credit' : $storeCredit = fieldday()->api->userCreditSummary(); if ($storeCredit->statusCode !== 200) { $content = wp_sprintf("
%s
", $storeCredit->message); } else { //print_r($kidData); $content = fieldday()->engine->getView($page, ['storeCredits' => $storeCredit->data]); } $response = ['status' => 'success', 'content' => $content]; break; case 'store_statement' : $isPerDayCredit = filter_input(INPUT_POST, 'isPerdayCredit', FILTER_SANITIZE_STRING); if (!$isPerDayCredit) { $isPerDayCredit = "true"; } $storeCredit = fieldday()->api->userStoreCreditStatements(['isPerDayCredit' => $isPerDayCredit]); if ($storeCredit->statusCode !== 200) { $content = wp_sprintf("
%s
", $storeCredit->message); } else { //print_r($kidData); $content = fieldday()->engine->getView($page, ['creditStatements' => $storeCredit->data]); } $response = ['status' => 'success', 'content' => $content]; break; case 'tax_detail' : $taxDetails = fieldday()->api->getTaxDetails(); if ($taxDetails->statusCode !== 200) { $content = wp_sprintf("
%s
", $taxDetails->message); } else { //print_r($kidData); $content = fieldday()->engine->getView($page, ['taxDetails' => $taxDetails->data]); } $response = ['status' => 'success', 'content' => $content]; break; case 'saved_cards' : $savedCards = fieldday()->api->getSavedCards(); if ($savedCards->statusCode !== 200) { $content = wp_sprintf("
%s
", $savedCards->message); } else { //print_r($kidData); $content = fieldday()->engine->getView($page, ['savedCards' => $savedCards->data]); } $response = ['status' => 'success', 'content' => $content]; break; default: $content = fieldday()->engine->getView($page); $response = ['status' => 'success', 'content' => $content]; break; } wp_send_json($response); } /** * Gets the ajax purchase. * * @return string html */ public function GetAjaxPurchase() { global $fielddaySetting; $providerKey = array_key_exists('fieldday_api_provider', $fielddaySetting) ? $fielddaySetting['fieldday_api_provider'] : null; $pagenumber = filter_input(INPUT_POST, 'pagenumber', FILTER_SANITIZE_STRING); $purchase = fieldday()->api->GetactivityRegistrations(['providerId' => $providerKey, 'page' => $pagenumber, 'count' => 10]); if ($purchase->statusCode == 200) { $page = 'account/purchase'; $content = fieldday()->engine->getView($page, ['purchases' => $purchase->data, 'purchase' => $purchase]); $response = ['status' => 'success', 'content' => $content]; } else { $response = ['status' => 'fail', 'message' => $purchase->message]; } wp_send_json($response); } /** * update parents details * @return json response */ public function UpdateProfile() { global $KmUser; $userId = isset($KmUser->accessToken) ? $KmUser->_id : null; $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING); $gender = filter_input(INPUT_POST, 'gender', FILTER_SANITIZE_STRING); $maritalStatus = filter_input(INPUT_POST, 'maritalStatus', FILTER_SANITIZE_STRING); if ($_FILES["ParentPicUpload"]['tmp_name'] != '') { $PayloadData = [ 'name' => $name, 'gender' => $gender, 'maritalStatus' => $maritalStatus, ]; $PayloadData['file'] = [ "path" => $_FILES['ParentPicUpload']['tmp_name'], "type" => $_FILES['ParentPicUpload']['type'], "name" => 'profilePic' ]; $update = fieldday()->api->UpdateUser($userId, $PayloadData); } else { $update = fieldday()->api->UpdateUser($userId, ['name' => $name, 'gender' => $gender, 'maritalStatus' => $maritalStatus]); } if ($update->statusCode == 200) { $response = ['status' => 'success', 'message' => __('Update successfully', 'fieldday')]; } else { $response = ['status' => 'fail', 'message' => $update->message, 'log' => $update]; } wp_send_json($response); } /* * Filter sessions with Tagtype * * @param String POST[tagId] */ public function FilterSessions() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if ($postdata) { $multiweek = ''; $multiweek = fieldday()->engine->getValue('multiweek', $postdata, false); $layout = fieldday()->engine->getValue('layout', $postdata, false); $tagId = fieldday()->engine->getValue('tagId', $postdata, false); $tabId = fieldday()->engine->getValue('tabId', $postdata, false); $filters = fieldday()->engine->getValue('filters', $postdata, false); $queryParams = []; /* unset if value is all */ foreach ($filters as $key => $filter) { if ($filter == 'all' || trim($filter) == '') { unset($filters[$key]); } if($key=='activityId' && $filter=='all'){ $queryParams['showAllSessions'] = 'true'; } } $queryParams['showAllSessions'] = 'true'; if ($layout == 'two_column_layout') { if ($tagId) { $queryParams['tagId'] = $tagId; } if ($filters) { $queryParams['filters'] = $filters; } $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $sessions = fieldday()->api->GetProviderSessions($queryParams); if ($sessions->statusCode === 200 || $sessions->status=='success') { $content = ""; $content .= fieldday()->engine->getView('layout/_sessionlist_part', ['sessions' => $sessions, 'permalink' => $permalink, 'filters' => $queryParams, 'tagId' => $tagId, 'multiweek'=>$multiweek]); $locations = fieldday()->engine->getSessionLocations($sessions); $response = ['status' => 'success', 'content' => $content, 'locations' => $locations]; } else { $response = ['status' => 'fail', 'message' => __($sessions->message, 'fieldday')]; } } else { if ($tagId) { $queryParams['tagId'] = $tagId; } global $fielddaySetting; /*if (!array_key_exists('offset', $queryParams)) { $queryParams['offset'] = $fielddaySetting['offset']; }*/ if (array_key_exists('fromDate', $queryParams) && array_key_exists('toDate', $queryParams)) { $datefilter = array("fromDate" => $filters['fromDate'], "toDate" => $filters['toDate'] ); $datefilterjson = json_encode($datefilter); $queryParams['filters'] = $datefilterjson; } if ($filters) { $queryParams['filters'] = $filters; } //print_r($queryParams); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $sessions = fieldday()->api->GetProviderSessions($queryParams); if ($sessions->statusCode === 200 || $sessions->status=='success') { $content = ""; $content .= fieldday()->engine->getView('_sessionlist_part', ['sessions' => $sessions, 'permalink' => $permalink, 'filters' => $queryParams, 'tagId' => $tagId,'multiweek'=>$multiweek]); $response = ['status' => 'success', 'content' => $content]; } else { $response = ['status' => 'fail', 'message' => __($sessions->message, 'fieldday')]; } } } else { $response = ['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]; } wp_send_json($response); } public function fielddayBankDays() { $bankDays = fieldday()->api->getShoppingPackages(); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); if (fieldday()->engine->getValue('data', $_POST, false) != 'two_column_layout') { if ($bankDays->statusCode === 200) { $content = ""; if ($bankDays->data) { foreach ($bankDays->data as $bankDayDetail) { $content .= '
"; } } else { $content .= wp_sprintf("
%s
", __("No bank day found for this provider.")); } wp_send_json(['status' => 'success', 'content' => $content]); } else { wp_send_json(['status' => 'fail', 'message' => __($bankDays->message, 'fieldday')]); } } else { if ($bankDays->statusCode === 200) { $content = ""; if ($bankDays->data) { $content .= '
"; } else { $content .= wp_sprintf("
%s
", __("No bank day found for this provider.")); } wp_send_json(['status' => 'success', 'content' => $content]); } else { wp_send_json(['status' => 'fail', 'message' => __($bankDays->message, 'fieldday')]); } } } public function fielddayGiftCards(){ $giftOptions = fieldday()->api->getProviderGiftCards(); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); if ($giftOptions->statusCode === 200) { $content = ""; if ($giftOptions->data) { $content .= '
'success', 'content' => $content]; } }else{ $response = ['status' => 'fail', 'message' => __($giftOptions->message, 'fieldday')]; } wp_send_json($response); } public function fielddayDaysFilter() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $tagId = fieldday()->engine->getValue('tagId', $postdata, false); //$filters = fieldday()->engine->getValue('filters', $postdata, false); $date = fieldday()->engine->getValue('date', $postdata, false); //$sortdate= date('Y-m-d h:i:s', strtotime($date)); $queryParams = []; if ($tagId) { $queryParams['tagId'] = $tagId; } //if($filters) { // $queryParams['filters'] = $filters; //} $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $sessions = fieldday()->api->GetProviderSessions($queryParams); if ($sessions->statusCode === 200) { $content = ""; $content .= fieldday()->engine->getView('_sessionlist_part', ['sessions' => $sessions, 'permalink' => $permalink, 'filters' => $queryParams, 'tagId' => $tagId, 'tagdate' => $date]); //$content.= fieldday()->engine->displaySessionList($tabId, $tagId, $queryParams, $permalink); $response = ['status' => 'success', 'content' => $content]; } else { $response = ['status' => 'fail', 'message' => __($sessions->message, 'fieldday')]; } wp_send_json($response); exit; } /** * display kids information in popup * * @return JSON kids data */ /* public function GetKidsInformation() { $kidscount = filter_input(INPUT_POST, 'kidscount', FILTER_SANITIZE_STRING); if ($kidscount) { // get the parent kids if(fieldday()->engine->isKmLogin()) { $kidsresponse = fieldday()->api->GetKids(); if ($kidsresponse->statusCode === 200) { $kids = $kidsresponse->data; }else { $kids = fieldday()->engine->getCookieStorage('km_saved_kids'); } }else { $kids = fieldday()->engine->getCookieStorage('km_saved_kids'); } if ($kids) { ob_start(); echo "
"; echo apply_filters('fieldday_atc_before_kidlist', $this->kidsListHelptext($kidscount), $kidscount); foreach ($kids as $kid) { ?>
  • engine->getfielddayKidDP($kid); ?>
  • engine->getValue('firstName', $kid); ?> engine->getValue('lastName', $kid); ?> engine->getValue('gender', $kid); ?> school->name; ?>
"; $contents = ob_get_contents(); ob_end_clean(); $response = ['status' => 'success', 'content' => $contents]; //parent kids }else { $response = ['status' => 'nokids', 'content' => wp_sprintf("
%s
", fieldday()->engine->displayText('km_no_kid_found', false))]; } } else { $response = ['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]; } wp_send_json($response); } */ /** * get text for kidselection info in add to cart form * * @param Int $seatCount seats count for booking * * @return HTML html string for help text */ public function kidsListHelptext($seatCount) { $kidtext = apply_filters('fieldday_kid_text', __('Participant')); $text1 = __('Select (' . $seatCount . ') ' . $kidtext . '(s) for this session. To Add New, Click next without making a selection.', 'fieldday'); $text2 = __('If you don’t select ' . $kidtext . ' and click Next, then you will be adding new ' . $kidtext . ' information.', 'fieldday'); $output = ""; $output .= wp_sprintf('

%s

', $text1); $output .= wp_sprintf('

Note: %s

', $text2); return $output; } public function EditCartForm() { $cartkey = filter_input(INPUT_POST, 'cartkey', FILTER_SANITIZE_STRING); $cartItem = fieldday()->engine->getCartItem($cartkey); if ($cartItem) { $sessionId = $cartItem['session_id']; $tagId = $cartItem['tag_id']; $sessionDate = $cartItem['session_date']; $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); $singlesessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); if ($sessionDetail->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } $cartForm = fieldday()->engine->getView('cart/add_to_cart', ['session' => $singlesessionInfo->data, 'tagId' => $tagId, 'sessionDate' => $sessionDate, 'cartItem' => $cartItem, 'cartkey' => $cartkey, 'singlesessionInfo'=> $singlesessionInfo->data,'datamode'=>'edit']); $footer = wp_sprintf('%s', fieldday()->engine->displayText('km_required_fields_disclaimer', false)); $footer .= wp_sprintf('%s', __('Cancel', 'fieldday')); $footer .= wp_sprintf('%s', __('Save', 'fieldday')); $footer .= wp_sprintf('%s', __('Update Cart', 'fieldday')); wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footer, 'header' => $sessionDetail->data->name, 'session' => $sessionDetail->data]); } else { wp_send_json(['status' => 'fail', 'message' => __("invalid cart item", 'fieldday')]); } } /** * Display Cart form * * @return String Html form */ public function AddToCartForm() { $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $sessionDate = filter_input(INPUT_POST, 'sessionDate', FILTER_SANITIZE_STRING); $sessionFeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $sessionDateArray = filter_input(INPUT_POST, 'sessionDate', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); if (!empty($sessionFeatured) && !is_array($sessionDateArray)) { $this->registerSessionTiming(); } $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); $singlesessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); if ($sessionDetail->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } if (is_array($sessionDateArray) && isset($sessionDateArray)) { if($sessionDetail->data->sessionType=="multiWeek"){ $cartForm = fieldday()->engine->getView('cart/add_to_cart_multiweek', ['session' => $sessionDetail->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDateArray, 'cartItem' => [], 'cartkey' => null]); } else{ $cartForm = fieldday()->engine->getView('cart/add_to_cart', ['session' => $singlesessionInfo->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDateArray, 'cartItem' => [], 'cartkey' => null]); } } global $fielddaySetting; $purchasepage = get_permalink(fieldday()->engine->getValue('purchase_page', $fielddaySetting, false)); if($sessionDetail->data->sessionType=="multiWeek"){ $cartForm = fieldday()->engine->getView('cart/add_to_cart_multiweek', ['session' => $sessionDetail->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDateArray, 'cartItem' => [], 'cartkey' => null]); } else { $cartForm = fieldday()->engine->getView('cart/add_to_cart', ['session' => $singlesessionInfo->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDate, 'cartItem' => [], 'cartkey' => null]); } $footer = wp_sprintf('%s', fieldday()->engine->displayText('km_required_fields_disclaimer', false)); $footermulti = wp_sprintf('%s', fieldday()->engine->displayText('km_required_fields_disclaimer', false)); $footer .= wp_sprintf('%s', __('Cancel', 'fieldday')); $footer .= wp_sprintf('%s', __('Save', 'fieldday')); $footer .= wp_sprintf('%s', __('Checkout', 'fieldday')); $footer .= wp_sprintf('%s', __('Add to Cart', 'fieldday')); $footermulti .= wp_sprintf('%s', __('Book Now', 'fieldday')); if($sessionDetail->data->sessionType=="multiWeek"){ wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footermulti, 'header' => $sessionDetail->data->name]); }else{ wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footer, 'header' => $sessionDetail->data->name]); } } /** * Display Event Purchase Form * */ public function EventAddToCartForm(){ $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $sessionDate = filter_input(INPUT_POST, 'sessionDate', FILTER_SANITIZE_STRING); $sessionFeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $sessionDateArray = filter_input(INPUT_POST, 'sessionDate', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); if (!empty($sessionFeatured) && !is_array($sessionDateArray)) { $this->registerSessionTiming(); } $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); $singlesessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); if ($sessionDetail->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } if (is_array($sessionDateArray) && isset($sessionDateArray)) { $cartForm = fieldday()->engine->getView('cart/event_purchase', ['session' => $sessionDetail->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDateArray, 'cartItem' => [], 'cartkey' => null]); } global $fielddaySetting; $purchasepage = get_permalink(fieldday()->engine->getValue('purchase_page', $fielddaySetting, false)); $cartForm = fieldday()->engine->getView('cart/event_purchase', ['session' => $sessionDetail->data, 'tagId' => $tagId, 'singlesessionInfo'=> $singlesessionInfo->data, 'sessionDate' => $sessionDate, 'cartItem' => [], 'cartkey' => null]); $footer = wp_sprintf('%s', fieldday()->engine->displayText('km_required_fields_disclaimer', false)); $footer .= wp_sprintf('%s', __('Continue', 'fieldday')); $footer .= wp_sprintf('%s', __('Back', 'fieldday')); $footer .= wp_sprintf('%s', __('Checkout', 'fieldday')); /*$footer .= wp_sprintf('%s', __('Add to Cart', 'fieldday'));*/ wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footer, 'header' => $sessionDetail->data->name]); } /** * Display Package Purchase Form * */ public function PackagePurchaseForm() { $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $packageId = filter_input(INPUT_POST, 'packageId', FILTER_SANITIZE_STRING); if($sessionId){ $sessionDetail = fieldday()->api->getActivitySession($sessionId); if ($sessionDetail->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } } $classPackages = fieldday()->api->getPackages(); /*Count Price*/ if(isset($sessionId) || isset($packageId)){ $kidscount = 1; $prices = fieldday()->engine->CountPackagePrice($kidscount,true); $price = fieldday()->engine->CountPackagePrice($kidscount,false); } if ($classPackages->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } global $fielddaySetting; $packageForm = fieldday()->engine->getView('package', ['session' => $sessionDetail->data, 'package' => $classPackages->data, 'sessionid'=>$sessionId, 'cartItem' => [], 'price'=>$price,'cartkey' => null]); $footer = wp_sprintf('%s', fieldday()->engine->displayText('km_required_fields_disclaimer', false)); $footer .= wp_sprintf('%s', __('Cancel', 'fieldday')); $footer .= wp_sprintf('%s', __('Save', 'fieldday')); $footer .= wp_sprintf('%s%s%s',__('Back', 'fieldday'),__('Next', 'fieldday'), __('Book Now', 'fieldday')); wp_send_json(['status' => 'success', 'content' => $packageForm, 'footer' => $footer, 'header' => $sessionDetail->data->name,'prices'=>$prices]); } /** * Display Plans Popup * */ public function DisplayPlansPopup(){ $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $sessionDate = filter_input(INPUT_POST, 'sessionDate', FILTER_SANITIZE_STRING); $sessionFeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $sessionDateArray = filter_input(INPUT_POST, 'sessionDate', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); if ($sessionDetail->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $sessionDetail->message]); } $PlansDiv = fieldday()->engine->getView('plans', ['session' => $sessionDetail->data, 'tagId' => $tagId, 'sessionDate' => $sessionDate, 'cartItem' => [], 'cartkey' => null]); wp_send_json(['status' => 'success', 'content' => $PlansDiv, 'footer' => '' , 'header' => $sessionDetail->data->name]); } /** * get session extended care and extra purchases * * @return JSON json response */ /* public function atcSessionExtendedCare() { $cartData = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionId = $cartData['ATC']['session_id']; $tagId = $cartData['ATC']['tag_id']; $sessionDate = $cartData['ATC']['session_date']; $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $session = fieldday()->api->getActivitySession($sessionId, $params); if ($session->statusCode === 200) { $content = fieldday()->engine->getView('cart/extra_purchase', ['session' => $session->data]); wp_send_json(['status' => 'success', 'content' => $content]); } else { wp_send_json(['status' => 'fail', 'message' => 'session is invalid', 'logs' => $session]); } } */ /** * Display the cart description */ public function PrepareCart() { $cartData = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $data = $cartData['ATC']; $sessionId = $data['session_id']; $tagId = $data['tag_id']; $sessionDate = $data['session_date']; $params = []; if ($sessionDate && $tagId) { $params = ['tagId' => $tagId, 'oneDaySelectedDate' => $sessionDate]; } $session = fieldday()->api->getActivitySession($sessionId, $params); if ($session->statusCode === 200) { $content = apply_filters('fieldday_cart_detail', $this->prepareCartHtml($data, $session->data), $data, $session->data); wp_send_json(['status' => 'success', 'content' => $content]); } else { wp_send_json(['status' => 'fail', 'content' => '', 'logs' => $session]); } } public function prepareCartHtml($data, $session) { $extendedCareSelected = $data['extendedCareSelected']; // string $additionalChargeDetails = $data['additionalChargeDetails']; // array $session_additionalCharges = $session->additionalCharges; $add_services = []; foreach ($session_additionalCharges as $key => $sess_add_charge) { $chargeId = $sess_add_charge->_id; if ($additionalChargeDetails && in_array($chargeId, $additionalChargeDetails)) { $add_services[] = $sess_add_charge->title; } } $Htmldata = '
'; $Htmldata .= ''; $Htmldata .= '
'; $Htmldata .= wp_sprintf('

%s

', fieldday()->engine->displayText('km_cart_help_text', false)); return $Htmldata; } /** * save item into cart * * @return JSON json response */ public function saveCartItem() { global $KmUser; $cartData = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $cartKey = filter_input(INPUT_POST, 'cartItemKey', FILTER_SANITIZE_STRING); $checkoutRediect = filter_input(INPUT_POST, 'checkoutRediect', FILTER_SANITIZE_STRING); if(!$KmUser && array_key_exists('selected_payment_option', $cartData) && $cartData['selected_payment_option'] !== 'full_amount') { wp_send_json(['status' => 'fail', 'message' => __("Payment in installments is only available for registered user.", 'fieldday')]); } if (array_key_exists('session_id', $cartData)) { $sessionId = $cartData['session_id']; $age_from = $cartData['age_from']; $age_to = $cartData['age_to']; $tag_id = $cartData['tag_id']; $session_date = $cartData['session_date']; /*New data added with Booking Dates*/ $session_oneday_booking = $cartData['oneday_booking']; $session_bookingoption = $cartData['bookingoption_selection']; $session_dropindates = $cartData['dropindates']; $session_dropindatestime = $cartData['dropindatestime']; /* ends */ $sessionfeatured = $cartData['sessionfeatured']; $params = []; if ($session_date && $tag_id) { $params = ['tagId' => $tag_id, 'oneDaySelectedDate' => $session_date]; } $newkids = []; $index = 1; if(!array_key_exists('bookingoption_selection', $cartData)){ wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Options", 'fieldday')]); } if(array_key_exists('dropindates', $cartData) && $cartData['bookingoption_selection']=='fullDay' && $cartData['dropindates']==''){ wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Dates", 'fieldday')]); } if (array_key_exists('kids', $cartData)) { foreach ($cartData['kids'] as $key => $kidInfo) { $newkids[$index] = $kidInfo; $index++; /*$dob = $kidInfo['dob']; $from = new DateTime($dob); $to = new DateTime('today'); $kid_age = $from->diff($to)->y; if(($age_from <= $kid_age) && ($kid_age <= $age_to)) { //echo $kid_age." age is between the range".$age_from." and ".$age_to; } else { wp_send_json(['status' => 'fail', 'message' => __("Participant age should be between ".$age_from." - ".$age_to, 'fieldday')]); }*/ } $cartData['kids'] = $newkids; if (is_array($cartData['session_date'])) { $cartDates = $cartData['session_date']; unset($cartData['session_date']); foreach ($cartDates as $sessionDate) { $cartData['session_date'] = $sessionDate; $params = ['tagId' => $tag_id, 'oneDaySelectedDate' => $sessionDate]; $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); if ($sessionDetail->statusCode === 200) { $cartData['session_detail'] = $sessionDetail->data; $fielddayCart = fieldday()->engine->saveCartItem($cartData, $cartKey); $cartitems = count($fielddayCart); } } if(isset($checkoutRediect) && $checkoutRediect == 'true' && $sessionfeatured != 'feature-purchase' || isset($checkoutRediect) && $checkoutRediect == 'true' && $sessionfeatured == 'feature-purchase') { $checkout = apply_filters('km_checkout_page', site_url('/checkout')); wp_send_json(['status' => 'success', 'total' => $cartitems, 'pageredirect' => $checkout]); }else{ wp_send_json(['status' => 'success', 'total' => $cartitems]); } } else { $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); if ($sessionDetail->statusCode === 200) { $cartData['session_detail'] = $sessionDetail->data; $fielddayCart = fieldday()->engine->saveCartItem($cartData, $cartKey); $cartitems = count($fielddayCart); if(isset($checkoutRediect) && $checkoutRediect == 'true' && $sessionfeatured != 'feature-purchase' || isset($checkoutRediect) && $checkoutRediect == 'true' && $sessionfeatured == 'feature-purchase') { $checkout = apply_filters('km_checkout_page', site_url('/checkout')); wp_send_json(['status' => 'success', 'total' => $cartitems, 'pageredirect' => $checkout]); }else{ wp_send_json(['status' => 'success', 'total' => $cartitems]); } } else { wp_send_json(['status' => 'fail', 'message' => __("unable to get session detail. Please try again.", 'fieldday'), 'logs' => $sessionDetail]); } } } else { wp_send_json(['status' => 'fail', 'message' => __("Please select any participants", 'fieldday')]); } } else { wp_send_json(['status' => 'fail', 'message' => __("invalid session found. Please try again.", 'fieldday')]); } } /** * get the cart html * * @return JSON json response */ public function getCartHtml() { $cartinfo = fieldday()->engine->GetCartData(); global $fielddaySetting; $purchasepage = get_permalink(fieldday()->engine->getValue('purchase_page', $fielddaySetting, false)); if (empty($cartinfo)) { $emptycartText = wp_sprintf("
X
%s
", fieldday()->engine->displayText('atc_empty_cart', false)); wp_send_json(['status' => 'success', 'items' => 0, 'content' => $emptycartText]); } $content = "

Cart

X
'; $content .= wp_sprintf('
Continue Shopping', apply_filters('km_checkout_page', $purchasepage)); $content .= wp_sprintf('Checkout
', apply_filters('km_checkout_page', site_url('/checkout'))); wp_send_json(['status' => 'success', 'items' => count($cartinfo), 'content' => $content]); } /** * remove cart item * * @return JSON json response */ public function removeCartItem() { $cart_key = filter_input(INPUT_POST, 'cart_key', FILTER_SANITIZE_STRING); if ($cart_key) { fieldday()->engine->removeCartItem($cart_key); $this->getCartHtml(); } } /** * get kids form to purchase seats * * @return JSON json response */ public function GetKidsForm() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $cartKey = fieldday()->engine->getValue('cartItemKey', $postdata, false); $sessionId = $postdata['ATC']['session_id']; $packageId = $postdata['ATC']['package_id']; $tag_id = $postdata['ATC']['tag_id']; $session_date = $postdata['ATC']['session_date']; $params = []; $price=''; if ($session_date && $tag_id) { if (is_array($session_date)) { $params = ['tagId' => $tag_id, 'oneDaySelectedDate' => $session_date[0]]; } else { $params = ['tagId' => $tag_id, 'oneDaySelectedDate' => $session_date]; } } if(isset($sessionId) && !isset($packageId)){ $sessionDetail = fieldday()->api->getActivitySession($sessionId, $params); if ($sessionDetail->statusCode !== 200) { wp_send_json(['status' => 'fail', 'message' => __('Invalid session. Please try again.', 'fieldday')]); } } /*Count Price*/ if(isset($packageId)){ $kidscount = $postdata['kidscount']; $price = fieldday()->engine->CountPackagePrice($kidscount); } if (!isset($postdata['kidscount']) || $postdata['kidscount'] < 1) { wp_send_json(['status' => 'fail', 'message' => __('please select seats first', 'fieldday')]); } //$selected = isset($postdata['selected_kid']) ? $postdata['selected_kid'] : null; //$AllKids = fieldday()->engine->getKids($selected); $KidformHtml = ""; $counter = 1; $kidNumber = 0; if ($cartKey) { $cartItem = fieldday()->engine->getCartItem($cartKey); if ($cartItem) { $AllKids = $cartItem['kids']; } } while ($counter <= $postdata['kidscount']) { if (isset($AllKids[$counter])) { $profile = $AllKids[$counter]; $kidId = $profile->_id; } else { $profile = []; $kidId = fieldday()->engine->generateRandomId(16, 'new_kid_'); } $KidformHtml .= fieldday()->engine->getView('cart/single_kid_form', [ 'profile' => $profile, 'counter' => $counter, 'kidId' => $kidId, 'sessionInfo' => $sessionDetail->data ] ); $counter++; $kidNumber++; } wp_send_json(['status' => 'success', 'content' => $KidformHtml,'price'=>$price]); } /** * generate booking details to get the payload for payment options API * @param array $postdata * @return boolean */ private function _generateBookingForPaymentOptions($postdata) { $cartdata = fieldday()->engine->GetCartData(); if (empty($cartdata)) { return false; } $bookingdetail = []; /* set individual Items */ foreach ($cartdata as $cartKey => $cartItem) { $sessionData = $cartItem['session_detail']; $singleBooking = [ 'sessionId' => $cartItem['session_id'], ]; if (isset($sessionData->addedForOneDayOnly)) { $singleBooking['addedForOneDayOnly'] = $sessionData->addedForOneDayOnly ? "true" : "false"; } else { $singleBooking['addedForOneDayOnly'] = "false"; } if (isset($sessionData->oneDayType)) { $singleBooking['oneDayType'] = $sessionData->oneDayType; } if (isset($sessionData->oneDaySelectedDate)) { $singleBooking['oneDaySelectedDate'] = $sessionData->oneDaySelectedDate; } $singleBooking['kids'] = $this->_getKidsForPurchase($postdata, $cartItem); $bookingdetail['bookingDetails'][] = $singleBooking; } return $bookingdetail; } /** * generate the required parameters for booking * * @param array $postdata * @param boolean $purchase request type i.e for purchase or price calculation * @return array array of booking details */ private function _generateBoking($postdata, $purchase = false) { global $KmUser; global $fielddaySetting; $cartdata = fieldday()->engine->GetCartData(); if (empty($cartdata)) { return false; } $storeCreditUsed = fieldday()->engine->getvalue('storeCreditId', $postdata, false); if ($purchase) { /* fixes for IE */ $lastKey = key(array_slice($postdata, -1, 1, true)); if (strpos($lastKey, '-----------------------------') !== false) { unset($postdata[$lastKey]); } $bookingdetail = $postdata; /* remove not required data from array */ if ($KmUser) { unset($bookingdetail['parent']); } unset($bookingdetail['kids'], $bookingdetail['action'], $bookingdetail['permalink'], $bookingdetail['_wpnonce']); if (fieldday()->engine->getvalue('stripeToken', $postdata, false)) { $bookingdetail['paymentMethod'] = 'card'; } else { $bookingdetail['paymentMethod'] = 'free'; unset($bookingdetail['paymentAddress']); } $bookingdetail['offset'] = $fielddaySetting['offset']; $saveCard = fieldday()->engine->getvalue('saveCard', $postdata, false); if($KmUser) { $bookingdetail['saveCard'] = $saveCard == 'on' ? true: false; } } else { $bookingdetail = []; } $coupon = fieldday()->engine->getvalue('couponCode', $postdata, false); if($coupon!=''){ $bookingdetail['couponCode'] = $coupon;} if ($storeCreditUsed) { $bookingdetail['storeCreditUsed'] = true; $bookingdetail['storeCreditId'] = $storeCreditUsed; $manualStoreCreditPaid = fieldday()->engine->getvalue('manualStoreCreditPaid', $postdata, false); if ($manualStoreCreditPaid) { $bookingdetail['manualStoreCreditPaid'] = $manualStoreCreditPaid; } } /* set individual Items */ //$dates_array = array(); $items_count = 0; foreach ($cartdata as $cartKey => $cartItem) { //print_r($cartItem); $sessionData = $cartItem['session_detail']; $bookingoption_selection = $cartItem['bookingoption_selection']; $dropindates = json_decode($cartItem['dropindates']); //"2022-05-29T05:00:00.000Z"; $dropindatestime = json_decode($cartItem['dropindatestime']); /*$test_date = "2022-05-29"; $newtestDate = fieldday()->engine->parseDate($test_date,'Y-m-d\TH:i:s\Z'); */ if(isset($bookingoption_selection) && $bookingoption_selection!='fullcamp'){ foreach($dropindates as $dropindate) { $date1 = strtr($dropindate, '-', '/'); //$date_booked =date('Y-m-d\TH:i:s\Z', strtotime($date1)); $date_booked = $dropindatestime->$dropindate; $extendedCareSelected_array = $cartItem['extendedCareSelected']; //print_r($extendedCareSelected_array); $date_needs =date('m-d-Y', strtotime($date1)); $date_booked_sel = str_replace("-","",$date_needs); /* for purchase based data */ if ($purchase) { $singleBooking[$items_count]['kids'] = $this->_getKidsForPurchase($postdata, $cartItem); } else { $singleBooking[$items_count]['kidsCount'] = count($cartItem['kids']); $singleBooking[$items_count]['bookingKey'] = $cartKey; } /* for purchase based data */ $singleBooking[$items_count]['sessionId'] = $cartItem['session_id']; $singleBooking[$items_count]['applySiblingDiscount'] = $this->apply_sibling_discount($storeCreditUsed, $sessionData, $postdata); //if (isset($sessionData->oneDayType)) /*if(isset($bookingoption_selection) && $bookingoption_selection!='fullcamp') {*/ //$singleBooking['oneDayType'] = $sessionData->oneDayType; $singleBooking[$items_count]['addedForOneDayOnly'] = "true"; $singleBooking[$items_count]['oneDayType'] = $bookingoption_selection; //} if (isset($dropindates)) { $singleBooking[$items_count]['oneDaySelectedDate'] = $date_booked; } if (isset($cartItem['extendedCareSelected'])) { foreach($extendedCareSelected_array as $extendedCareSelected_value){ $extended_array = explode("_",$extendedCareSelected_value); if($extended_array[1]==$date_booked_sel){ $singleBooking[$items_count]['extendedCareSelected'] = $extended_array[0]; } } /*$singleBooking[$items_count]['extendedCareSelected'] = $cartItem['extendedCareSelected'];*/ $singleBooking[$items_count]['optedForExtendedCare'] = true; } if (isset($cartItem['additionalChargeDetails'])) { $additionalC_array = []; $additionalChargeDetails_array = $cartItem['additionalChargeDetails']; foreach($additionalChargeDetails_array as $additionalChargeDetails_value){ $additional_array = explode("_",$additionalChargeDetails_value); //$additionalC_value = str_replace("-","",$additional_array[0]); if($additional_array[1]==$date_booked_sel){ $additionalC_array[] = $additional_array[0]; $singleBooking[$items_count]['additionalChargeDetails'] = $additionalC_array; } //$additionalC_array[] = $additional_array[0]; } } if($cartItem['selected_payment_option'] !== 'full_amount') { if(isset($cartItem['session_detail']->enablePaymentOptions) && $cartItem['session_detail']->enablePaymentOptions) { $singleBooking[$items_count]['enabledPaymentOptions'] = true; $singleBooking[$items_count]['paymentOptionId'] = $cartItem['session_detail']->paymentOptions[0]->_id; if ($purchase && $KmUser) { $bookingdetail['saveCard'] = true; } } } //$bookingdetail['bookingDetails'] = $singleBooking; $items_count++; } }else { //Data for Full Camp if ($purchase) { $singleBooking[$items_count]['kids'] = $this->_getKidsForPurchase($postdata, $cartItem); } else { $singleBooking[$items_count]['kidsCount'] = count($cartItem['kids']); $singleBooking[$items_count]['bookingKey'] = $cartKey; } /* for purchase based data */ $singleBooking[$items_count]['sessionId'] = $cartItem['session_id']; $singleBooking[$items_count]['applySiblingDiscount'] = $this->apply_sibling_discount($storeCreditUsed, $sessionData, $postdata); $singleBooking[$items_count]['addedForOneDayOnly'] = "false"; if (isset($cartItem['extendedCareSelected'])) { foreach($cartItem['extendedCareSelected'] as $extendedCareSelected_value){ //$extended_array = explode("_",$extendedCareSelected_value); //if($extended_array[1]==$date_booked_sel){ $singleBooking[$items_count]['extendedCareSelected'] = $extendedCareSelected_value; //} } // $singleBooking[$items_count]['extendedCareSelected'] = $cartItem['extendedCareSelected']; $singleBooking[$items_count]['optedForExtendedCare'] = true; } if (isset($cartItem['additionalChargeDetails'])) { $singleBooking[$items_count]['additionalChargeDetails'] = $cartItem['additionalChargeDetails']; } if($cartItem['selected_payment_option'] !== 'full_amount') { if(isset($cartItem['session_detail']->enablePaymentOptions) && $cartItem['session_detail']->enablePaymentOptions) { $singleBooking[$items_count]['enabledPaymentOptions'] = true; $singleBooking[$items_count]['paymentOptionId'] = $cartItem['session_detail']->paymentOptions[0]->_id; if ($purchase && $KmUser) { $bookingdetail['saveCard'] = true; } } } $items_count++; } // ends fullcamp else } // ends foreach $bookingdetail['bookingDetails'] = $singleBooking; //print_r($bookingdetail); return $bookingdetail; } /** * get the kids for purchase API * * @param array $postdata data from html form * @param mixed $cartdata data from cart * * @return mixed kids data i.e array of Id's or array object for guest user */ private function _getKidsForPurchase($postdata, $cartdata) { global $KmUser; $kids = []; $kidForms = fieldday()->engine->getValue('kids', $postdata, false); if ($KmUser) { /* if user is logged in only needs Kid id's */ foreach ($cartdata['kids'] as $key => $kidInfo) { if (preg_match("/new_kid_/", $kidInfo['_id'])) { $kidDataFromPost = fieldday()->engine->getValue($kidInfo['_id'], $kidForms, false); $forms = fieldday()->engine->getValue('forms', $kidDataFromPost, false); unset($kidInfo['_id']); $kidResponse = fieldday()->engine->addNewKid($kidInfo, $forms); if ($kidResponse) { $kids[] = $kidResponse->_id; } } else { /* check for update */ $updateTriggers = fieldday()->engine->getValue('update_kid_info', $postdata, false); if (fieldday()->engine->getValue($kidInfo['_id'], $updateTriggers, false)) { $kidDataFromPost = fieldday()->engine->getValue($kidInfo['_id'], $kidForms, false); $insurance = []; if (fieldday()->engine->getValue('forms', $kidDataFromPost, false)) { if (array_key_exists('medicalInsurance', $kidDataFromPost['forms'])) { $insurance['medInsurance'] = $kidDataFromPost['forms']['medicalInsurance']; $insurance['medInsurance']['isAvailable'] = true; unset($kidDataFromPost['forms']['medicalInsurance']); } if (array_key_exists('dentalInsurance', $kidDataFromPost['forms'])) { $insurance['dentalInsurance'] = $kidDataFromPost['forms']['dentalInsurance']; $insurance['dentalInsurance']['isAvailable'] = true; unset($kidDataFromPost['forms']['dentalInsurance']); } } $kidDataFromPost['kidId'] = $kidInfo['_id']; /* update kid profile */ $kidprofile = $kidInfo; $updateKid = fieldday()->api->UpdateKidProfile($kidInfo['_id'], $kidprofile); /* update medical forms */ $formsResponse = fieldday()->api->SaveMedicalForms($kidDataFromPost); /* save insurance */ if (!empty($insurance)) { $insuranceUpdate = fieldday()->api->UpdateInsurance($insurance); } } $kids[] = $kidInfo['_id']; } } return $kids; } else { /* if user is not loggedin Need full kid data with forms */ foreach ($cartdata['kids'] as $key => $kidInfo) { $kidId = $kidInfo['_id']; unset($kidInfo['_id']); if (!fieldday()->engine->getValue('school', $kidInfo, false)) { unset($kidInfo['school']); } if (isset($kidInfo['gender']) && !$kidInfo['gender']) { unset($kidInfo['gender']); } $kidDataFromPost = fieldday()->engine->getValue($kidId, $kidForms, false); $formsRequired = fieldday()->engine->getValue('forms', $kidDataFromPost, false); if ($formsRequired) { $kidInfo['forms'] = $formsRequired; if (array_key_exists('medicalInsurance', $kidInfo['forms'])) { $kidInfo['forms']['medicalInsurance']['isAvailable'] = true; } if (array_key_exists('dentalInsurance', $kidDataFromPost['forms'])) { $kidInfo['forms']['dentalInsurance']['isAvailable'] = true; } } $kids[] = $kidInfo; } return $kids; } } /** * update cart data * * @return Json Json data */ public function UpdateCartInformation() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $coupon = fieldday()->engine->getValue('couponCode', $postdata, false); $bookingdetail = $this->_generateBoking($postdata); //$data = json_encode($bookingdetail); echo $data; //print_r($bookingdetail); if ($bookingdetail) { $calculationInfo = fieldday()->api->calculateSessionPrice($bookingdetail); $this->__savelogs("calculating price ..", $calculationInfo); if ($calculationInfo->statusCode === 201) { $content = fieldday()->engine->getView('checkout/cart', ['coupon'=>$coupon,'calculationInfo' => $calculationInfo->data]); $extraData = [ 'totalAmount' => $calculationInfo->data->totalAmount, 'payableAmount' => $calculationInfo->data->payableAmount == null ? 0 : $calculationInfo->data->payableAmount, 'authPickups' => $this->getAuthPickups($postdata), 'cardinfo' => apply_filters('fieldday_checkout_card_info', $this->getCardInfo($postdata), $postdata), 'pricedetail' => apply_filters('fieldday_checkout_price_info', $this->getPriceInfo($calculationInfo->data), $calculationInfo->data), ]; wp_send_json(['status' => 'success', 'content' => $content, 'data' => $extraData, 'bookingData' => $bookingdetail,'logs' => $calculationInfo]); }else { //if($calculationInfo->message=="Invalid coupon code.") { wp_send_json(['status' => 'fail', 'message' => $calculationInfo->message,'logs' => $calculationInfo]); /*}else{ wp_send_json(['status' => 'fail', 'message' => fieldday()->engine->displayText('km_calculation_error', false), 'logs' => $calculationInfo]); }*/ } } else { wp_send_json(['status' => 'fail', 'message' => fieldday()->engine->displayText('km_empty_cart_msg', false)]); } } /** * Display Auth Pickups * * @param type $postData * * @return String pickup detail */ public function getAuthPickups($postData) { $authpickups = ""; $authpickups .= wp_sprintf('

%s

', $postData['parent']['name']); $authpickups .= wp_sprintf('

+%s %s

', $postData['parent']['countryCode'], $postData['parent']['phone']); $authpickups .= "
"; $authpickups .= ''; return $authpickups; } private function getPriceInfo($calculationInfo) { $engine = fieldday()->engine; $content = ""; return $content; } private function getCardInfo($postData) { } /** * purchase fieldday session with fieldday API * * @return Json json response */ public function fielddaySessionPurchase() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); /* remove the optional keys if empty */ if (isset($postdata['parent']['maritalStatus']) && (trim($postdata['parent']['maritalStatus']) == '' || strtolower(trim($postdata['parent']['maritalStatus'])) == 'select' )) { unset($postdata['parent']['maritalStatus']); } if (isset($postdata['parent']['gender']) && (trim($postdata['parent']['gender']) == '' || strtolower(trim($postdata['parent']['gender'])) == 'select' )) { unset($postdata['parent']['gender']); } if (isset($postdata['paymentAddress']['line2']) && trim($postdata['paymentAddress']['line2']) == '') { unset($postdata['paymentAddress']['line2']); } unset($postdata['km_terms_condition']); foreach ($postdata['authPickUps'] as $key => $picker) { if (trim(fieldday()->engine->getValue('phone', $picker, false)) == '') { unset($postdata['authPickUps'][$key]); } } if (count($postdata['authPickUps']) == 0) { unset($postdata['authPickUps']); } $bookingdetail = $this->_generateBoking($postdata, true); //print_r($bookingdetail); if($bookingdetail['couponCode']==''){ unset($bookingdetail['couponCode']); } unset($bookingdetail['update_kid_info'], $bookingdetail['applySiblingDiscount']); if ($bookingdetail) { $purchaseInfo = fieldday()->api->purchaseSession($bookingdetail); $this->__savelogs("Purchase step: Let's purchase", $purchaseInfo); if ($purchaseInfo->statusCode === 201) { $content = fieldday()->engine->getView('checkout/thanks', ['order' => $purchaseInfo->data]); fieldday()->engine->removeCart(); wp_send_json(['status' => 'success', 'content' => $content, 'order' => $purchaseInfo->data]); } else { wp_send_json(['status' => 'fail', 'message' => __($purchaseInfo->message), 'logs' => $purchaseInfo]); } } else { wp_send_json(['status' => 'fail', 'message' => __("your cart is empty. Please add some items into cart")]); } } /** * get sibling discount applied or not * * @param String $storeCreditUsed store credit ID * @param mixed $sessionData session data object * @param mixed $postdata form data * * return bool */ private function apply_sibling_discount($storeCreditUsed, $sessionData) { if ($storeCreditUsed) { return false; } return fieldday()->engine->getValue('offersSiblingDiscount', $sessionData, false); } /** * get total price after store credit applied * @param Array $storeCredit store credit apply data * @param Int $seats seatrs to reserve * @param type $seatPrice price of one seat * @param type $session_type session type weekly, oneday, morningonly, afternoononly * * @return Int Price after store credit */ private function CalculateStoreCredit($storeCredit, $seats, $seatPrice, $session_type) { if (fieldday()->engine->getValue('type', $storeCredit, false) == 'dollercredit') { $dollercredit = $storeCredit['amount']; $totalPrice = $seats * $seatPrice; if ($dollercredit > $totalPrice) { $priceafterDiscount = 0; } else { $priceafterDiscount = $totalPrice - $dollercredit; } return $priceafterDiscount; } elseif (fieldday()->engine->getValue('type', $storeCredit, false) == 'daycredit') { $sessionDays = 1; if ($session_type == 'weekly') { $sessionDays = 5; } $totalDays = $seats * $sessionDays; } } /** * calculate total price after sibling discount * * @param Int $seats total seats to purchase * @param Int $seatPrice Price for single seat * @param Array $discountRules Discount rules * * @return int Price after apply discount */ public function getSiblingDiscount($seats, $seatPrice, $discountRules) { $discountRules = (array) $discountRules; $netprice = 0; for ($i = 1; $i <= $seats; $i++) { if (count($discountRules) > $i && isset($discountRules[$i])) { $netprice = $netprice + $seatPrice - (($seatPrice * $discountRules[$i]) / 100); } else if ($i > 4 && $discountRules["+"]) { $netprice = $netprice + $seatPrice - (($seatPrice * $discountRules["+"]) / 100); } else { $netprice = $netprice + $seatPrice; } } return $netprice; } /** * display auth modal to user */ public function DisplayAuthForm() { $session_id = filter_input(INPUT_POST, 'session_id', FILTER_SANITIZE_STRING); $offerId = filter_input(INPUT_POST, 'offerId', FILTER_SANITIZE_STRING); $packageId = filter_input(INPUT_POST, 'package_id', FILTER_SANITIZE_STRING); $sessionfeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $isGuest = filter_input(INPUT_POST, 'isGuest', FILTER_SANITIZE_STRING); $data = []; if ($session_id) { $sessionDate = filter_input(INPUT_POST, 'session_date', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $data = ['sessionDate' => $sessionDate, 'sessionId' => $session_id, 'tagId' => $tagId, 'sessionfeatured' => $sessionfeatured, 'isGuest' => $isGuest]; } elseif ($offerId) { $data = ['offerId' => $offerId]; } elseif ($packageId) { $data = ['packageId' => $packageId]; } $contents = fieldday()->engine->getView('login_popup', $data); $header = __('', 'fieldday'); wp_send_json(['status' => 'success', 'content' => $contents, 'header' => $header]); } /** * Display a login form */ public function DisplayLoginForm() { $session_id = filter_input(INPUT_POST, 'session_id', FILTER_SANITIZE_STRING); $offerId = filter_input(INPUT_POST, 'offerId', FILTER_SANITIZE_STRING); $data = []; if ($session_id) { $sessionDate = filter_input(INPUT_POST, 'session_date', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $sessionfeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $isGuest = filter_input(INPUT_POST, 'isGuest', FILTER_SANITIZE_STRING); $data = ['sessionDate' => $sessionDate, 'sessionId' => $session_id, 'tagId' => $tagId, 'sessionfeatured' => $sessionfeatured, "isGuest" => $isGuest]; } elseif ($offerId) { $data = ['offerId' => $offerId]; } $contents = fieldday()->engine->getView('login', $data); $header = __('', 'fieldday'); wp_send_json(['status' => 'success', 'content' => $contents, 'header' => $header]); } /** * Display a register form */ public function DisplayRegisterForm() { $session_id = filter_input(INPUT_POST, 'session_id', FILTER_SANITIZE_STRING); $offerId = filter_input(INPUT_POST, 'offerId', FILTER_SANITIZE_STRING); $data = []; if ($session_id) { $sessionDate = filter_input(INPUT_POST, 'session_date', FILTER_SANITIZE_STRING); $tagId = filter_input(INPUT_POST, 'tagId', FILTER_SANITIZE_STRING); $data = ['sessionDate' => $sessionDate, 'sessionId' => $session_id, 'tagId' => $tagId]; } elseif ($offerId) { $data = ['offerId' => $offerId]; } $contents = fieldday()->engine->getView('register', $data); $header = __('Create Account', 'fieldday'); wp_send_json(['status' => 'success', 'content' => $contents, 'header' => '']); } /** * fieldday API login * * @return JSON Json response of user data */ public function LoginProcess() { $username = filter_input(INPUT_POST, 'user_name', FILTER_SANITIZE_STRING); $password = filter_input(INPUT_POST, 'user_password', FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $redirect = filter_input(INPUT_POST, 'redirect_url', FILTER_SANITIZE_STRING); $sessionfeatured = filter_input(INPUT_POST, 'sessionfeatured', FILTER_SANITIZE_STRING); $isGuest = filter_input(INPUT_POST, 'isGuest', FILTER_SANITIZE_STRING); if ($username && $password) { /* varify google recaptcha */ $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'loggedin' => false, 'message' => __('reCAPTCHA invalid')]); } $LoggedIn = fieldday()->api->LoginWithEmail($username, $password); if ($LoggedIn->statusCode === 201 && $LoggedIn->success === true) { /* check if user phone is verified */ if ($LoggedIn->data->phoneVerified) { $isLoggedin = fieldday()->engine->fielddayDoLogin($LoggedIn->data); if ($isLoggedin) { if (!$redirect) { $redirect = fieldday()->engine->LoginRedirect(); } if (!empty($sessionfeatured)) { wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'logs' => $LoggedIn->data, 'sessionfeatured' => $sessionfeatured]); } else if ($isGuest == 'true') { wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'isGuest' => $isGuest, 'redirect' => '', 'logs' => $LoggedIn->data]); } else { wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'redirect' => $redirect, 'logs' => $LoggedIn->data]); } } else { wp_send_json(['status' => 'fail', 'message' => __('unable to login please try again later.', 'fieldday')]); } } else { /* send unverified user a OTP to verify phone */ $isSent = fieldday()->api->ResendOtp($LoggedIn->data->countryCode, $LoggedIn->data->phone, $LoggedIn->data->accessToken); $header = 'Enter The verification Code'; if ($isSent->success && $isSent->statusCode == 211) { $verificationView = fieldday()->engine->getView('verification', ['user' => $LoggedIn]); wp_send_json(['status' => 'varificationsent', 'message' => __("verification code sent.", 'fieldday'), 'content' => $verificationView, 'logs' => $LoggedIn->data,'header'=>$header]); } else { wp_send_json(['status' => 'varificationfailed', 'message' => __("failed to send verification code.", 'fieldday'), 'logs' => $isSent->data]); } } } else { wp_send_json(['status' => 'fail', 'message' => __($LoggedIn->message, 'fieldday'), 'logs' => $LoggedIn]); } } else { wp_send_json(['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]); } } public function SocialLogin() { $AuthCode = filter_input(INPUT_POST, 'AuthCode', FILTER_SANITIZE_STRING); $client = filter_input(INPUT_POST, 'client', FILTER_SANITIZE_STRING); $redirect = filter_input(INPUT_POST, 'redirect_url', FILTER_SANITIZE_STRING); $openpopup = filter_input(INPUT_POST, 'openpopup', FILTER_SANITIZE_STRING); $popup = ''; if ($AuthCode) { if ($client == 'facebook') { $UserData = fieldday()->engine->fielddayFacebookLogin($AuthCode); } else if ($client == 'google') { $UserData = fieldday()->engine->fielddayGoogleLogin($AuthCode); } else { wp_send_json(['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]); } if ($UserData->statusCode === 201) { if ($UserData->data->phoneVerified) { $isLoggedin = fieldday()->engine->fielddayDoLogin($UserData->data); if ($isLoggedin) { if (!$redirect && !$openpopup) { $redirect = fieldday()->engine->LoginRedirect(); } elseif (isset($openpopup)) { $redirect= ''; $popup = $openpopup; } wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'popup'=>$popup, 'redirect' => $redirect, 'logs' => $UserData]); } else { wp_send_json(['status' => 'fail', 'message' => __('unable to login please try again later.', 'fieldday')]); } } else { if ($UserData->data->phone && $UserData->data->countryCode) { /* send unverified user a OTP to verify phone */ $isSent = fieldday()->api->ResendOtp($UserData->data->countryCode, $UserData->data->phone, $UserData->data->accessToken); if ($isSent->success && $isSent->statusCode == 211) { $verificationView = fieldday()->engine->getView('verification', ['user' => $UserData]); wp_send_json(['status' => 'varificationsent', 'message' => __("verification code sent.", 'fieldday'), 'content' => $verificationView]); } else { wp_send_json(['status' => 'varificationfailed', 'message' => __("failed to send verification code.", 'fieldday'), 'logs' => $isSent->data]); } } else { $verificationView = fieldday()->engine->getView('phoneupdate', ['user' => $UserData]); $header = __('Phone Verification.', 'fieldday'); wp_send_json(['status' => 'nophone', 'message' => __("Please update phone no.", 'fieldday'), 'content' => $verificationView, 'header' => $header]); } } } else { wp_send_json(['status' => 'fail', 'message' => __($UserData->message, 'fieldday'), 'logs' => $UserData]); } } else { wp_send_json(['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]); } } /** * * @return Json response */ public function RegisterProcess() { $name = filter_input(INPUT_POST, 'user-register-name', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'user-register-email', FILTER_SANITIZE_STRING); $countrycode = filter_input(INPUT_POST, 'user-country-code', FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $password = filter_input(INPUT_POST, 'user-register-password', FILTER_SANITIZE_STRING); $phone = filter_input(INPUT_POST, 'user-phone-number', FILTER_SANITIZE_STRING); /* varify google recaptcha */ $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'loggedin' => false, 'message' => __('reCAPTCHA invalid')]); } $userdata = [ 'name' => $name, 'email' => $email, 'countryCode' => $countrycode, 'phone' => $phone, 'password' => $password ]; $registered = fieldday()->api->Registration($userdata); if ($registered->statusCode === 201 && $registered->success === true) { $LoggedIn = fieldday()->api->LoginWithEmail($email, $password); if ($LoggedIn->statusCode !== 201) { wp_send_json(['status' => 'fail', 'message' => __('unable to login please try again later.', 'fieldday'), 'logs' => $LoggedIn]); } if ($LoggedIn->data->phoneVerified) { $isLoggedin = fieldday()->engine->fielddayDoLogin($LoggedIn->data); if ($isLoggedin) { wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'redirect' => fieldday()->engine->LoginRedirect(), 'logs' => $LoggedIn->data]); } else { wp_send_json(['status' => 'fail', 'message' => __('unable to login please try again later.', 'fieldday')]); } } else { /* send unverified user a OTP to verify phone */ $isSent = fieldday()->api->ResendOtp($LoggedIn->data->countryCode, $LoggedIn->data->phone, $LoggedIn->data->accessToken); $header = 'Enter The verification Code'; if ($isSent->success && $isSent->statusCode == 211) { $verificationView = fieldday()->engine->getView('verification', ['user' => $LoggedIn]); wp_send_json(['status' => 'varificationsent', 'message' => __("verification code sent.", 'fieldday'), 'content' => $verificationView, 'logs' => $LoggedIn->data,'header'=>$header]); } else { wp_send_json(['status' => 'varificationfailed', 'message' => __("failed to send verification code.", 'fieldday'), 'logs' => $isSent]); } } } else { wp_send_json(['status' => 'fail', 'message' => __($registered->message, 'fieldday'), 'logs' => $registered]); } } /** * Submit the provider donation */ public function submitDonation() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $success_message = filter_input(INPUT_POST, 'success_message', FILTER_SANITIZE_STRING); /* varify google recaptcha */ $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'message' => __('reCAPTCHA invalid')]); } $donationData = $postdata['donationData']; if ($donationData['userDetails']['lastName'] == '') { unset($donationData['userDetails']['lastName']); } $apiResponse = fieldday()->api->makeDonation($donationData); if ($apiResponse->statusCode === 201) { if ($success_message == '') { $success_message = wp_sprintf("%s", apply_filters('donation_success_message', __("Thank you for your donation"))); } wp_send_json(['status' => 'success', 'message' => __('Donation successful', 'fieldday'), 'header' => __("donation successful"), 'content' => $success_message]); } else { wp_send_json(['status' => 'fail', 'message' => __($apiResponse->message, 'fieldday')]); } } /** * verify Otp */ public function VerifyOTP() { $userID = filter_input(INPUT_POST, 'user_id', FILTER_SANITIZE_STRING); $access_token = filter_input(INPUT_POST, 'access_token', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!$userID) { wp_send_json(['status' => 'fail', 'message' => __("your request is invalid", 'fieldday')]); } $userData = fieldday()->api->getUser($userID, $access_token); if ($userData->statusCode === 200) { $otp = implode('', $postdata['otp']); $isVerified = fieldday()->api->verifyOTP($otp, $access_token); if ($isVerified->statusCode === 200) { $LoggedIn = fieldday()->api->getUser($userID, $access_token); $LoggedIn->data->accessToken = $access_token; $isLoggedin = fieldday()->engine->fielddayDoLogin($LoggedIn->data); if ($isLoggedin) { wp_send_json(['status' => 'success', 'message' => __('login successful', 'fieldday'), 'redirect' => fieldday()->engine->LoginRedirect(), 'logs' => $LoggedIn->data]); } else { wp_send_json(['status' => 'fail', 'message' => __('unable to login please try again later.', 'fieldday')]); } } else { wp_send_json(['status' => 'fail', 'message' => __($isVerified->message, 'fieldday'), 'logs' => $isVerified]); } } else { wp_send_json(['status' => 'fail', 'message' => __($userData->message, 'fieldday'), 'logs' => $userData]); } } /** * resend the OTP to user * * @param ARRAY $_POST post data needs user_phone_code, user_phone, access_token * @return JSON json response */ public function ResendOtp() { $PhoneCode = filter_input(INPUT_POST, 'user_phone_code', FILTER_SANITIZE_STRING); $Phone = filter_input(INPUT_POST, 'user_phone', FILTER_SANITIZE_STRING); $access_token = filter_input(INPUT_POST, 'access_token', FILTER_SANITIZE_STRING); $otpType = filter_input(INPUT_POST, 'km_verify_code_type', FILTER_SANITIZE_STRING); if ($otpType == 'email') { $isSent = fieldday()->api->ResendOtpEmail($access_token); } else { $isSent = fieldday()->api->ResendOtp($PhoneCode, $Phone, $access_token); } if ($isSent->success && $isSent->statusCode == 211) { wp_send_json(['status' => 'success', 'message' => __("verification code sent.", 'fieldday'), 'logs' => $isSent->data]); } else { wp_send_json(['status' => 'fail', 'message' => __("failed to send verification code.", 'fieldday'), 'logs' => $isSent]); } } /** * update user phone and resend verification code */ public function UpdatePhone() { $PhoneCode = filter_input(INPUT_POST, 'new_user_country', FILTER_SANITIZE_STRING); $Phone = filter_input(INPUT_POST, 'new_user_phone', FILTER_SANITIZE_STRING); $access_token = filter_input(INPUT_POST, 'access_token', FILTER_SANITIZE_STRING); $user_id = filter_input(INPUT_POST, 'user_id', FILTER_SANITIZE_STRING); $isSent = fieldday()->api->ResendOtp($PhoneCode, $Phone, $access_token); if ($isSent->success && $isSent->statusCode == 211) { $UserDetail = fieldday()->api->getUser($user_id, $access_token); $UserDetail->data->accessToken = $access_token; $verificationView = fieldday()->engine->getView('verification', ['user' => $UserDetail]); wp_send_json(['status' => 'success', 'message' => __("verification code sent.", 'fieldday'), 'content' => $verificationView, 'logs' => $UserDetail->data]); } else { wp_send_json(['status' => 'fail', 'message' => __($isSent->message, 'fieldday'), 'logs' => $isSent]); } } /** * get the school information track and trade * @return Json */ public function getSchoolInfo() { $schoolId = filter_input(INPUT_POST, 'schoolId', FILTER_SANITIZE_STRING); if (!$schoolId) { wp_send_json(['status' => 'fail', 'message' => __("please select a valid school.", 'fieldday')]); } $SchoolInfo = fieldday()->api->getSchoolInfo($schoolId); if ($SchoolInfo->statusCode !== 200) { wp_send_json(['status' => 'fail', 'message' => __($SchoolInfo->message, 'fieldday'), 'logs' => $SchoolInfo]); } wp_send_json(['status' => 'success', 'schools' => $SchoolInfo->data]); } /** * display the merchandise form in popup * * @return JSON json response */ public function merchandiseForm() { $offerId = filter_input(INPUT_POST, 'offerId', FILTER_SANITIZE_STRING); if (!$offerId) { wp_send_json(['status' => 'fail', 'message' => __("please select a valid offer.", 'fieldday')]); } $header = __("Anniversary Sale"); $content = fieldday()->engine->getView('merchandise_form', ['offerid' => $offerId]); $footer = wp_sprintf("", __('Purchase', 'fieldday')); $modalClass = fieldday()->engine->isKmLogin() ? 'modal-normal' : 'modal-large'; wp_send_json(['status' => 'success', 'content' => $content, 'header' => $header, 'footer' => $footer, 'modalclass' => $modalClass]); } public function merchandiseProcess() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if ($postdata) { unset($postdata['permalink'], $postdata['_wpnonce'], $postdata['action']); $purchaseResponse = fieldday()->api->purchaseShoppingPackage($postdata); if ($purchaseResponse->statusCode === 201) { $content = fieldday()->engine->getView('checkout/merchandise_thanks', ['order' => $purchaseResponse->data]); wp_send_json(['status' => 'success', 'content' => $content, 'header' => "", 'footer' => ""]); } else { wp_send_json(['status' => 'fail', 'message' => __($purchaseResponse->message), 'logs' => $purchaseResponse]); } } } /** * update parent insurance * * @return JSON json response on api call */ public function updateInsurance() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!isset($postdata['insurance']['medInsurance'])) { $postdata['insurance']['medInsurance']['isAvailable'] = false; } if (!isset($postdata['insurance']['dentalInsurance'])) { $postdata['insurance']['dentalInsurance']['isAvailable'] = false; } $insuranceUpdate = fieldday()->api->UpdateInsurance($postdata['insurance']); if ($insuranceUpdate->statusCode === 201) { wp_send_json(['status' => 'success', 'message' => __($insuranceUpdate->message, 'fieldday')]); } else { wp_send_json(['status' => 'fail', 'message' => __($insuranceUpdate->message, 'fieldday'), 'logs' => $insuranceUpdate]); } } /** * update kid information * * return JSON response */ public function UpdateKid() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $kidId = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_STRING); unset($postdata['action'], $postdata['permalink'], $postdata['_wpnonce'], $postdata['id']); if ($_FILES["kidProfilePic"]['tmp_name'] != '') { $postdata['file'] = [ "path" => $_FILES['kidProfilePic']['tmp_name'], "type" => $_FILES['kidProfilePic']['type'], "name" => 'file' ]; $updateKid = fieldday()->api->UpdateKidProfile($kidId, $postdata); } else { $updateKid = fieldday()->api->UpdateKidProfile($kidId, $postdata); } if ($updateKid->statusCode == 200) { $response = ['status' => 'success', 'message' => __($updateKid->message, 'fieldday')]; } else { $response = ['status' => 'fail', 'message' => $updateKid->message, 'log' => $updateKid]; } wp_send_json($response); } /** * get single session information * * @return Json response from API */ public function singleSessionDetail() { $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $sessiontype = filter_input(INPUT_POST, 'type', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if ($sessionId) { $sessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); if ($sessionInfo->statusCode === 200) { $session = $sessionInfo->data; $header = wp_sprintf("%s", isset($session->activityId->colorHex) ? 'color: #'.$session->activityId->colorHex : '',$sessionInfo->data->name); $header = $sessionInfo->data->name; $content = fieldday()->engine->getview('session_detail', ['session' => $session, 'tags' => fieldday()->engine->getValue('tags', $postdata, false),'sessiontype'=>$sessiontype]); wp_send_json(['status' => 'success', 'content' => $content, 'header' => $header, 'footer' => ""]); } else { wp_send_json(['status' => 'error', 'message' => $sessionInfo->message]); } } } public function sessionBookingOptions() { $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if ($sessionId) { $sessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); if ($sessionInfo->statusCode === 200) { $session = $sessionInfo->data; $header = $sessionInfo->data->name; $content = fieldday()->engine->sessionBookingTypes($session, $postdata['tags']); wp_send_json(['status' => 'success', 'content' => $content, 'header' => $header, 'footer' => ""]); } else { wp_send_json(['status' => 'error', 'message' => $sessionInfo->message]); } } } /** * delete a kid from fieldday * * @return JSON json response from fieldday */ public function deleteKid() { $kidId = filter_input(INPUT_POST, 'kidId', FILTER_SANITIZE_STRING); if (!$kidId) { wp_send_json(['status' => 'fail', 'message' => __("please select a kid to delete")]); } $apiResponse = fieldday()->api->DeleteKidProfile($kidId); if ($apiResponse->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => $apiResponse->message]); } else { wp_send_json(['status' => 'fail', 'message' => $apiResponse->message, 'log' => $apiResponse]); } } public function saveKidForms() { $kidId = filter_input(INPUT_POST, 'kidId', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (!$kidId) { wp_send_json(['status' => 'fail', 'message' => __("please select a kid to save")]); } $apiResponse = fieldday()->api->SaveMedicalForms(['kidId' => $kidId, 'forms' => $postdata['forms']]); if ($apiResponse->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => $apiResponse->message]); } else { wp_send_json(['status' => 'fail', 'message' => $apiResponse->message, 'log' => $apiResponse]); } } /** * check the store credit of user */ public function checkStoreCredit() { $storeCredit = fieldday()->api->getUserProviderCreditSummary(); $this->__savelogs("Purchase step: checking Store credit", $storeCredit); if ($storeCredit->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => __("failed to get store credits", 'fieldday'), 'logs' => $storeCredit]); } if ($storeCredit->data) { $dollarCredit = $daycredit = false; foreach ($storeCredit->data as $data) { if (array_key_exists("remainingCredits", $data)) { $dollarCredit = $data; } elseif (array_key_exists("remainingDaysCount", $data)) { $daycredit = $data; } } /* check if has dollar credit */ if ($dollarCredit && $dollarCredit->remainingCredits > 0) { $remainingDollarCount = $dollarCredit->remainingCredits; $header = apply_filters('km_dollarcredit_title', __('You have Dollar credit'), $dollarCredit); $message = wp_sprintf(__('You have %d Dollar credits. Do you want to use these to make this order?', 'fieldday'), $remainingDollarCount); $content = apply_filters('km_dollarcredit_text', $message, $dollarCredit); $footer = wp_sprintf("", __('No', 'fieldday')); $footer .= wp_sprintf("", $dollarCredit->_id, __('Yes', 'fieldday')); wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => $footer]); } else if ($daycredit && !$dollarCredit && $daycredit->remainingDaysCount > 0) { $sessionDays = $this->_calculateSessionDays(); $remainingDaysCount = $daycredit->remainingDaysCount; if ($remainingDaysCount >= $sessionDays) { $header = apply_filters('km_daycredit_title', __('You have Bank Days'), $daycredit); $message = wp_sprintf(__('You have %d Bank Days. Do you want to use these to make this order?', 'fieldday'), $remainingDaysCount); $content = apply_filters('km_daycredit_text', $message, $daycredit); $footer = wp_sprintf("", __('No', 'fieldday')); $footer .= wp_sprintf("", $daycredit->_id, __('Yes', 'fieldday')); wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => $footer]); } else { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $PaymentOptions = $this->getPaymentOptions($postdata); if ($PaymentOptions) { $header = apply_filters('km_daycredit_title', __('You have Day credit'), $daycredit); $message = wp_sprintf(__('You have %d Day credits. To book the %d session days. you can use manual store credit from the given options', 'fieldday'), $remainingDaysCount, $sessionDays); $content = apply_filters('km_daycredit_text', $message, $daycredit); $index = 0; foreach ($PaymentOptions as $key => $PaymentOption) { $selected = $index == 0 ? "checked" : ""; $content .= wp_sprintf('', $PaymentOption->description, $selected, $PaymentOption->type, $PaymentOption->apply); $index++; } $footer = wp_sprintf("", __('No', 'fieldday')); $footer .= wp_sprintf("", $daycredit->_id, __('Yes', 'fieldday')); wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => $footer]); } else { wp_send_json(['status' => 'nostorecredit', 'message' => __("No store credit in your account", 'fieldday'), 'logs' => $PaymentOptions]); } } } } else { wp_send_json(['status' => 'nostorecredit', 'message' => __("No store credit in your account", 'fieldday'), 'logs' => $storeCredit]); } } /** * get the available payment options with partial day credit * @param array $postData * @return mixed */ private function getPaymentOptions($postData) { $bookingdetail = $this->_generateBookingForPaymentOptions($postData); $PaymentOptions = fieldday()->api->PaymentOptions($bookingdetail); if ($PaymentOptions->statusCode === 201) { foreach ($PaymentOptions->data as $index => $paymentoption) { if ($paymentoption->type == 'siblingDiscount') { unset($PaymentOptions->data[$index]); } } return $PaymentOptions->data; } return false; } /** * get the session days * @return Int session days */ private function _calculateSessionDays() { $cartdata = fieldday()->engine->GetCartData(); $sessionDays = 0; if (!empty($cartdata)) { foreach ($cartdata as $key => $cartItem) { $session = $cartItem['session_detail']; $kidsCount = count($cartItem['kids']); /* if session is added only for one day */ if (fieldday()->engine->getValue('addedForOneDayOnly', $session, false)) { $sessionDays = $sessionDays + (1 * $kidsCount); } else { $sessionWorkingDays = $session->daysOfWeek; $sessionStartDate = $session->dateTimestamp->from; $sessionEndDate = $session->dateTimestamp->to; $sessesionOccuranceDays = $this->_dateDiffInDays($sessionStartDate, $sessionEndDate, $sessionWorkingDays); $sessionDays = $sessionDays + ($sessesionOccuranceDays * $kidsCount); } } } return $sessionDays; } /** * * @param string $date1 * @param string $date2 * @param array $workingDays working days number i.e [0,1,3,4,5,6] * @return Int */ private function _dateDiffInDays($date1, $date2, $workingDays = []) { // Declare an empty array $days = 0; // Variable that store the date interval // of period 1 day $interval = new DateInterval('P1D'); $realEnd = new DateTime($date2); //$realEnd->add($interval); $period = new DatePeriod(new DateTime($date1), $interval, $realEnd); $totaldays = iterator_count($period); if ($totaldays > 1000) { return false; } // Use loop to store date into array foreach ($period as $date) { $daynumber = $date->format('w'); if (in_array($daynumber, $workingDays)) { $days++; } } // Return the array elements return $days; } /** * redirect the user if on login page and already loggedin */ public function KmLoginRedirect() { global $post; global $KmUser; $redirectpage = fieldday()->engine->LoginRedirect(); if (is_user_logged_in() && has_shortcode($post->post_content, 'fieldday_login') && current_user_can(fieldday_ROLE) && $redirectpage && $KmUser) { wp_redirect($redirectpage); die; } } /** * get menu data to display after login * * @return json standard json response */ public function getMenuData() { global $fielddaySetting; $selectedMenuId = fieldday()->engine->getValue('user_menu', $fielddaySetting, false); if ($selectedMenuId) { $menu = wp_get_nav_menu_object($selectedMenuId); if ($menu) { $menuIdInhtml = wp_sprintf('menu-%s', $menu->slug); $html = fieldday()->engine->UserInMenuHtml(); $afterloginscript = apply_filters('fieldday_after_login', ''); wp_send_json(['status' => 'success', 'slug' => $menu->slug, 'menuId' => $menuIdInhtml, 'html' => $html, 'afterLoginScript' => $afterloginscript]); } else { wp_send_json(['status' => 'fail', 'message' => __('invalid menu selected', 'fieldday')]); } } else { wp_send_json(['status' => 'fail', 'message' => __('no menu selected', 'fieldday')]); } } public function displayClaimForm() { $header = __("Claim your Credit", 'fieldday'); $content = fieldday()->engine->getView('account/claimform'); wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => ""]); } /** * claim store credit through coupon code */ public function claimCredit() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $response = fieldday()->api->clamimCoupon($postdata); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } wp_send_json(['status' => 'success', 'message' => $response->message]); } /** * Display terms and conditions */ public function displayProviderTerms() { $response = fieldday()->api->getActivityProviderTerms([]); $header = __("Terms & Conditions", 'fieldday'); $content = "
"; $unchecked = apply_filters('fieldday_uncheck_conditions', [1, 2, count($response->data)], $response->data); if ($response->statusCode == 200) { foreach ($response->data as $key => $termData) { $number = $key + 1; $icon = ""; if (in_array($number, $unchecked)) { $icon = ""; } $content .= wp_sprintf("
%s

%s

", $icon, $termData->termId->text); } } $content .= "
"; wp_send_json(['status' => 'success', 'header' => $header, 'content' => $content, 'footer' => ""]); } /** * process prarent information */ public function processParentInfo() { $Data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $message = "First step checkout: parent Information"; $data = $Data['parent']; $this->__savelogs($message, $data); } public function processStripe() { $Data = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $message = "mpmstp checkout: beautiful"; $this->__savelogs($message, $Data); } /** * * @global array $fielddaySetting * @global type $KmUser * @param string $message * @param mixed $data * @return boolean */ private function __savelogs($message, $data) { global $fielddaySetting; if (fieldday()->engine->getValue('fieldday_debug_mode', $fielddaySetting, false) !== 'enabled') { return false; } global $KmUser; if (!is_dir(fieldday_ABSPATH . "/logs/")) { mkdir(fieldday_ABSPATH . "/logs/", 0777); } /* check the security */ if (!file_exists(fieldday_ABSPATH . "/logs/.htaccess")) { file_put_contents(fieldday_ABSPATH . "/logs/.htaccess", 'Options -Indexes deny from all'); } if ($KmUser) { $logFile = fieldday_ABSPATH . "/logs/" . $KmUser->email . ".logs"; } else { $logFile = fieldday_ABSPATH . "/logs/guestuserlogs.logs"; } if (!file_exists($logFile)) { file_put_contents($logFile, 'adding logs for user'); } $content = file_get_contents($logFile); $content .= "######### \n"; $content .= $message . "\n"; $content .= json_encode($data) . "\n"; file_put_contents($logFile, $content); } public function calenderevents() { $start = $_POST['start']; $end = $_POST['end']; $mobiledata = $_POST['mobiledata']; if ($mobiledata) { $start = date("m-d-Y 23:59:59"); $end = $_POST['end']; } else { $current_date = date("m-d-Y 23:59:59"); if ($start < $current_date) { $start = $current_date; } } $eventdata = array(); global $fielddaySetting; $queryParams['offset'] = $fielddaySetting['offset']; $datefilter = array("fromDate" => $start, "toDate" => $end ); $datefilterjson = json_encode($datefilter); $queryParams['filters'] = $datefilterjson; if ($filters) { $queryParams['filters'] = $filters; } $sessions = fieldday()->api->GetProviderSessions($queryParams); foreach ($sessions->data->sessions as $session) { foreach ($session->sessions as $counter => $mySession) { $starts = date("Y-m-d", strtotime($mySession->dateTimestamp->from)); //$ends=date("Y-m-d", strtotime($mySession->dateTimestamp->to .'+12 hours')); $ends = date("Y-m-d", strtotime($mySession->dateTimestamp->to)); $mySession->dateTimestamp->from; $days = fieldday()->engine->eventDays($mySession); $event = array('id' => $mySession->_id, 'title' => $mySession->name, 'title_color' => isset($mySession->activityId->colorHex) ? $mySession->activityId->colorHex : null, 'start' => $starts, 'starttimestamp' => $mySession->dateTimestamp->from, 'endtimestamp' => $mySession->dateTimestamp->to, 'end' => $ends, 'end_fulldate' => $mySession->dateTimestamp->to, 'start_fulldate' => $mySession->dateTimestamp->from, 'days' => $days); array_push($eventdata, $event); } } echo json_encode($eventdata); exit; } /*featuresessions*/ public function registerSessionTiming() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $activityTags = fieldday()->api->getActivityTagsCount(); $sessiondates = array(); $sessionId=''; $sessionfeatured=''; $tagId; $singleSession; $sessionType; if (isset($postdata) && $postdata['action'] == 'km_registerSessionTiming') { $sessionId = fieldday()->engine->getValue('session_id', $postdata, false); $tagId = fieldday()->engine->getValue('tagId', $postdata, false); $sessionfeatured = fieldday()->engine->getValue('sessionfeatured', $postdata, false); $session_date = fieldday()->engine->getValue('session_date', $postdata, false); } elseif (isset($postdata) && $postdata['action'] == 'km_display_cartform') { $sessionId = fieldday()->engine->getValue('sessionId', $postdata, false); $session_date = fieldday()->engine->getValue('sessionDate', $postdata, false); $tagId = fieldday()->engine->getValue('tagId', $postdata, false); } global $fielddaySetting; $queryParams['offset'] = $fielddaySetting['offset']; if ($sessionId) { $queryParams['filters']['sessionId'] = $sessionId; } foreach ($activityTags->data as $key => $tags) { if ($tagId) { $queryParams['tagId'] = $tagId; if ($tags->title == "One Day Only") { $singleSession = $tags->title; }else{ $sessionType=$tags->title; } } } $sessions = fieldday()->api->GetProviderSessions($queryParams); $content; $content .= "
"; foreach ($sessions->data->sessions as $session) : foreach ($session->sessions as $counter => $mySession) { $sessionDateToFilter = $mySession->dateTimestamp->to; $sessiontitle = $mySession->name; $sessionId = $mySession->_id; $sessiontagId = $tagId; $featuresessions = "feature-purchase"; $sessiondates = json_decode(json_encode($mySession->oneDaySeats), true); $tagArray = fieldday()->engine->sessionBookingTypesLable($mySession,$sessiontagId,true); foreach ($activityTags->data as $key => $tags) { if ($sessiontagId) { $sessionType=$tags->title; } } } endforeach; //$content .= ''; $content .= '
'; if(in_array($singleSession,$tagArray)){ //$content .= ''; $content .= ''; $content .='
'; foreach ($sessiondates as $dates =>$val) { $date = str_replace('-', '/', $dates); $newdates = date('d M Y', strtotime($date)); $content .= '
'; $content .= ''; $content .= '
'; } }else{ $content .= ''; $content .='
'; foreach ($sessiondates as $dates =>$val) { $date = str_replace('-', '/', $dates); $newdates = date('d M Y', strtotime($date)); $content .= '
'; $content .= ''; $content .= '
'; } } $content .= '
'; $content .= '
'; $content .= ""; wp_send_json(['status' => 'success', 'header' => '', 'content' => $content, 'footer' => ""]); exit; } /* Membership */ public function savemebershipCartitmes() { global $KmUser; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (array_key_exists('membershipid', $postdata)) { $membershipid = fieldday()->engine->getValue('membershipid', $postdata, false); $membershipprice = fieldday()->engine->getValue('membershipprice', $postdata, false); $providerId = fieldday()->engine->getValue('providerId', $postdata, false); $title = fieldday()->engine->getValue('title', $postdata, false); $loggedInemail = fieldday()->engine->getValue('email', $KmUser, false); $loggedInphone = fieldday()->engine->getValue('phone', $KmUser, false); $finalPrice = fieldday()->engine->display_price($membershipprice); //$saveCard=_e('Save Card','fieldday'); } $content; $content .= wp_sprintf("
"); $content .= wp_sprintf("
"); $heading .= wp_sprintf("%s (%s)", $title, $finalPrice); //$content.=wp_sprintf("%s", $finalPrice); $content .= wp_sprintf("
Email
", $loggedInemail); $content .= wp_sprintf("Phone
", $loggedInphone); $content .= fieldday()->engine->getView('merchandise_form'); $content .= wp_sprintf("
%s
", 'Save Card'); $content .= wp_sprintf('Pay %s', $membershipid, $finalPrice); $content .= "
"; $content .= "
"; wp_send_json(['status' => 'success', 'header' => $heading, 'content' => $content, 'footer' => ""]); exit; } public function membershipPurchase() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $apiPostData = []; if (array_key_exists('membershipid', $postdata)) { $membershipid = fieldday()->engine->getValue('membershipid', $postdata, false); $paymentmethod = fieldday()->engine->getValue('paymentmethod', $postdata, false); $purchaseCount = fieldday()->engine->getValue('purchasecount', $postdata, false); $stripeToken = fieldday()->engine->getValue('stripeToken', $postdata, false); $saveCard = fieldday()->engine->getValue('savecard', $postdata, false); if (!$savecard) { $saveCard = 'false'; } $apiPostData['membershipId'] = $membershipid; $apiPostData['paymentMethod'] = $paymentmethod; $apiPostData['purchaseCount'] = $purchaseCount; $apiPostData['stripeToken'] = $stripeToken; $apiPostData['saveCard'] = $saveCard; } $response = fieldday()->api->membershipSubscriptionPurchase($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } wp_send_json(['status' => 'success', 'message' => $response->message]); exit; } /* Package */ public function packagePurchase() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $packageid = $postdata['ATC']['package_id']; $sessionid = $postdata['ATC']['session_id']; $kidsarray = $postdata['ATC']['kids']; $apiPostData = []; $kids_ids = array(); if ($packageid) { $purchaseCount = fieldday()->engine->getValue('kidscount', $postdata, false); $cardId = $postdata['ATC']['cardId']; $selectedOption = $postdata['ATC']['prices']; $paymentmethod = $postdata['ATC']['paymentmethod']; $stripeToken = $postdata['ATC']['stripeToken']; $saveCard = $postdata['ATC']['savecard']; if (!$saveCard) { $saveCard = 'true'; } } if($purchaseCount>0){ foreach ($kidsarray as $key => $value) { array_push($kids_ids, $value['_id']); } $apiPostData['sessionId'] = $sessionid; $apiPostData['offset'] = 0; $apiPostData['kids'] = $kids_ids; if($cardId){ $apiPostData['cardId'] = $cardId; } $apiPostData['saveCard'] = $saveCard; $apiPostData['stripeToken'] = $stripeToken; $apiPostData['paymentMethod'] = $paymentmethod; $apiPostData['selectedOption'] = $selectedOption; /*if ($packageid) { $apiPostData['packageId'] = $packageid; $apiPostData['offset'] = 0; if($cardId){ $apiPostData['cardId'] = $cardId; } $apiPostData['paymentMethod'] = $paymentmethod; $apiPostData['purchaseCount'] = $purchaseCount; $apiPostData['stripeToken'] = $stripeToken; $apiPostData['saveCard'] = $saveCard; }*/ $response = fieldday()->api->PackagePurchase($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } wp_send_json(['status' => 'success', 'message' => $response->message]); }else{ wp_send_json(['status' => 'fail', 'message' => __("Please select any participants", 'fieldday')]); } exit; } /*Get the Extended care and extra options*/ public function sessions_extradata(){ $html_additional =''; $html =''; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionId = $postdata['ATC']['session_id']; $bookingoption = $postdata['ATC']['bookingoption_selection']; $ATCdata = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $dropindates = $ATCdata['dropindates']; $dropindates = json_decode($dropindates); $singlesessionInfo = fieldday()->api->getActivitySessionDetail($sessionId); $session = $singlesessionInfo->data; $session_type = fieldday()->engine->getvalue('oneDayType', $session, false) ? $this->getvalue('oneDayType', $session, false) : 'weekly'; $datespicked = $bookingoption.'Dates'; $Onedaydates = $session->$datespicked; if($bookingoption=='fullcamp'){ $extendedCareDetails = $session->extendedCareDetails; $additionalCharges = $session->additionalCharges; $priceforAllkids = '/seat'; $isCare = (isset($extendedCareDetails->afterCare) || isset($extendedCareDetails->earlyCare) || isset($extendedCareDetails->combined)) ? true : false; if (!empty($extendedCareDetails) && $isCare) : if(fieldday()->engine->getvalue('isAvailable', $extendedCareDetails, false)): $html = '

'.__("Add Extended Care", "fieldday").'

'; foreach ($extendedCareDetails as $chargetype => $charges): /*if ($chargetype == 'afterCare'): $html .=''; endif;*/ if ($chargetype == 'earlyCare' || $chargetype == 'afterCare' || $chargetype == 'combined'): $html .=''; endif; /*if ($chargetype == 'combined'): $html .=''; endif;*/ endforeach; $html .= '
'; endif; endif; //Additional Charges if (!empty($additionalCharges)) : $html_additional .= '

'.__("More Options", "fieldday").'

'; foreach ($additionalCharges as $key => $product): if( !isset($product->isAvailablefor) || isset($product->isAvailableFor->$session_type) && $product->isAvailableFor->$session_type) : $html_additional .= ''; endif; endforeach; $html_additional .= '
'; endif; } else { //oneday selected //$html .= '

'.__("Add Extended Care", "fieldday").'

'; //$html_additional .= '

'.__("More Options", "fieldday").'

'; $titleshow = 'false'; $addtitle = 'false'; foreach($Onedaydates as $Onedaydate){ $oneDaySelectedDate = $Onedaydate->oneDaySelectedDate; $date_booked = date('m-d-Y', strtotime($oneDaySelectedDate)); $date_booked_sel = str_replace("-","",$date_booked); if(in_array($date_booked, $dropindates)) { $extendedCareDetails = $Onedaydate->extendedCareDetails; $additionalCharges = $Onedaydate->additionalCharges; //echo "arrayvalue
"; $isCare = (isset($extendedCareDetails->afterCare) || isset($extendedCareDetails->earlyCare) || isset($extendedCareDetails->combined)) ? true : false; if (!empty($extendedCareDetails) && $isCare) : if(fieldday()->engine->getvalue('isAvailable', $extendedCareDetails, false)): if($titleshow=='false'){ $html .= '

'.__("Add Extended Care", "fieldday").'

'; $titleshow = 'true'; } $html .= '
'; foreach ($extendedCareDetails as $chargetype => $charges): if ($chargetype == 'earlyCare' || $chargetype == 'combined' || $chargetype == 'afterCare'): $html .=''; endif; endforeach; $html .= '
'; endif; endif; //Additional Charges if (!empty($additionalCharges)) : if($addtitle=='false'){ $html_additional .= '

'.__("More Options", "fieldday").'

'; $addtitle='true'; } $html_additional .= '
'; foreach ($additionalCharges as $key => $product): if(!isset($product->isAvailablefor) || isset($product->isAvailableFor->$session_type) && $product->isAvailableFor->$session_type) : $html_additional .= ''; endif; endforeach; $html_additional .= '
'; endif; } } } wp_send_json(['status' => 'success', 'data' => $html,'additionaldata'=>$html_additional]); exit; } /*Event Prices*/ public function eventPrices(){ $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionid = $postdata['ATC']['session_id']; $session_date = $postdata['ATC']['session_date'][0]; $sessionId = filter_input(INPUT_POST, 'sessionId', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); //print_r($session_date); /*$kidsarray = $postdata['ATC']['kids']; if ($sessionid) { $purchaseCount = fieldday()->engine->getValue('kidscount', $postdata, false); }*/ $apiPostData['eventId'] = $sessionid; if($postdata['ATC']['infants']>0){ $apiPostData['participants']['infants'] = $postdata['ATC']['infants']; } if($postdata['ATC']['toddler']>0){ $apiPostData['participants']['toddler'] = $postdata['ATC']['toddler']; } if($postdata['ATC']['children']>0){ $apiPostData['participants']['children'] = $postdata['ATC']['children']; } if($postdata['ATC']['youth']>0){ $apiPostData['participants']['youth'] = $postdata['ATC']['youth']; } if($postdata['ATC']['adults']>0){ $apiPostData['participants']['adults'] = $postdata['ATC']['adults']; } if($postdata['ATC']['seniors']>0){ $apiPostData['participants']['seniors'] = $postdata['ATC']['seniors']; } $apiPostData['selectedDate'] = $session_date; $response = fieldday()->api->EventsCalc($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } else{ $data = $response->data; $result=''; $summary=''; //echo"
"; print_r($data); echo"
"; $summary .= '
'.__("Payment due today", "fieldday").'(Click on arrow to see order details)'.fieldday()->engine->display_price($data->totalPrice).'
'; $summary .='
'.__("Order Details", "fieldday").''; $result .='

'.__("Price Details:", "fieldday").'

'; $result .= ''; $result .='
'; $result .='
'.__("Total: ", "fieldday").''.fieldday()->engine->display_price($data->totalPrice).'
'; wp_send_json(['status' => 'success', 'message' => $response->message,'data' => $result, 'summary' => $summary]); exit; } } /*Event Purchase*/ public function EventPurchase() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionid = $postdata['ATC']['session_id']; $session_date = $postdata['ATC']['session_date'][0]; $cardId = $postdata['ATC']['cardId']; $selectedOption = $postdata['ATC']['prices']; $paymentmethod = $postdata['ATC']['paymentmethod']; $stripeToken = $postdata['ATC']['stripeToken']; $saveCard = $postdata['ATC']['savecard']; if (isset($postdata['parent']['name']) || isset($postdata['parent']['lname'])){ $apiPostData['parent']['name'] = $postdata['parent']['name'].' '.$postdata['parent']['lname']; } if (isset($postdata['parent']['guestEmail'])){ $apiPostData['parent']['guestEmail'] = $postdata['parent']['guestEmail']; } if (isset($postdata['parent']['phone'])){ $apiPostData['parent']['phone'] = str_replace(' ', '',$postdata['parent']['phone']); } if (isset($postdata['parent']['address'])){ $apiPostData['parent']['countryCode'] = $postdata['parent']['address']; } $apiPostData['eventId'] = $sessionid; if($postdata['ATC']['infants']>0){ $apiPostData['participants']['infants'] = $postdata['ATC']['infants']; } if($postdata['ATC']['toddler']>0){ $apiPostData['participants']['toddler'] = $postdata['ATC']['toddler']; } if($postdata['ATC']['children']>0){ $apiPostData['participants']['children'] = $postdata['ATC']['children']; } if($postdata['ATC']['youth']>0){ $apiPostData['participants']['youth'] = $postdata['ATC']['youth']; } if($postdata['ATC']['adults']>0){ $apiPostData['participants']['adults'] = $postdata['ATC']['adults']; } if($postdata['ATC']['seniors']>0){ $apiPostData['participants']['seniors'] = $postdata['ATC']['seniors']; } $apiPostData['selectedDate'] = $session_date; $apiPostData['offset'] = 0; if($cardId){ $apiPostData['cardId'] = $cardId; } if (!isset($postdata['parent']['guestEmail'])){ $apiPostData['saveCard'] = $saveCard; } $apiPostData['stripeToken'] = $stripeToken; $apiPostData['paymentMethod'] = $paymentmethod; $response = fieldday()->api->EventsPurchase($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } else{ wp_send_json(['status' => 'success', 'message' => $response->message]); } exit; } /* Class Package Options*/ public function packageOptions(){ $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionid = $postdata['ATC']['session_id']; $packageid = $postdata['ATC']['package_id']; $kidsarray = $postdata['ATC']['kids']; $apiPostData = []; $kids_ids = array(); if ($sessionid || $packageid) { $purchaseCount = fieldday()->engine->getValue('kidscount', $postdata, false); } foreach ($kidsarray as $key => $value) { array_push($kids_ids, $value['_id']); } $apiPostData['sessionId'] = $sessionid; $apiPostData['offset'] = 0; $apiPostData['kids'] = $kids_ids; $apiPostData['selectedOption'] = 'oneTime'; $response = fieldday()->api->PackageOPtions($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } $data = $response->data; $renewal_fre = fieldday()->engine->RenewalFrequencyCalc($data->vendorPackage->validFor,$data->vendorPackage->validForUnit); /* $packagePurchased = $data->packagePurchased; $paymentRequired = $data->paymentRequired; $oneTimeFee = '$'.$data->oneTimeFee; $price = $data->vendorPackage->price; $prices_single = fieldday()->engine->CountPackagePrice(1,false); $additionalSeatCost = $price->additionalSeatCost; $totalPrice = fieldday()->engine->CountPackagePrice($purchaseCount,false,true); if($purchaseCount==1 && $packagePurchased!=1){ $radio_buttons = array( array( 'option'=>'package', 'timeperiod'=>'per month', 'title'=>__("Class Package","fieldday"),'price'=>$totalPrice,'checked'=>'checked'), ); } if($purchaseCount==1 && $packagePurchased==1){ $radio_buttons = array( array( 'option'=>'package', 'timeperiod'=>'', 'title'=>__("Use existing package for cost $0","fieldday"),'price'=>'','checked'=>'checked'), ); } if($purchaseCount>1 && $packagePurchased==1){ $radio_buttons = array( array( 'option'=>'package', 'timeperiod'=>'per month', 'title'=>__("Upgrade Class Package","fieldday"),'price'=>$totalPrice,'checked'=>'checked'), ); } if($purchaseCount>1 && $packagePurchased!=1){ $radio_buttons = array( array( 'option'=>'package', 'timeperiod'=>'per month', 'title'=>__("Class Package","fieldday"),'price'=>$totalPrice,'checked'=>'checked'), ); } $input = '

'.__('How would you like to pay?','fieldday').'

'; foreach($radio_buttons as $radio_button){ $priceDiv =''; if($radio_button['price']){ $priceDiv = '

Price: '.$radio_button["price"].'

'; } $input .= ''; }*/ $renewal_data =''; $renewalPaymentDate = $data->nextPaymentOn; $renewal_data .='

'.__('When will the next renewal be scheduled?','fieldday').'

'.fieldday()->engine->parseDate($renewalPaymentDate,'d-M-Y').''; wp_send_json(['status' => 'success', 'renewal'=>$renewal_data, 'renewal_fre'=>$renewal_fre, 'message' => $response->message,'data' => $response]); exit; } /* Giftcard */ public function singleGiftcard(){ $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if (array_key_exists('giftcardid', $postdata)) { $giftCardId = fieldday()->engine->getValue('giftcardid', $postdata, false); $giftcardtitle = fieldday()->engine->getValue('giftcardtitle', $postdata, false); $giftcardpricerange = fieldday()->engine->getValue('giftcardpricerange', $postdata, false); $buttontext = fieldday()->engine->getValue('buttontext', $postdata, false); } $content; $content=fieldday()->engine->getView('widgets/elementor/singlegiftcard',['giftCardId' => $giftCardId, 'amonunts' => $giftcardpricerange,'buttonPurchase'=> $buttontext,]); wp_send_json(['status' => 'success','header' => $giftcardtitle , 'content' => $content, 'footer' => ""]); exit; } public function giftCardmodel() { global $KmUser; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); // echo"
";
        // print_r($postdata);
        // echo"
"; // die; if (array_key_exists('giftCardid', $postdata)) { $giftCardid = fieldday()->engine->getValue('giftCardid', $postdata, false); $amount = fieldday()->engine->getValue('amount', $postdata, false); $imageOrg = fieldday()->engine->getValue('image', $postdata, false); $imagethumb = fieldday()->engine->getValue('imagethumb', $postdata, false); $title = fieldday()->engine->getValue('title', $postdata, false); $loggedInemail = fieldday()->engine->getValue('email', $KmUser, false); $loggedInname = fieldday()->engine->getValue('name', $KmUser, false); $loggedInphone = fieldday()->engine->getValue('phone', $KmUser, false); $sendMethod = fieldday()->engine->getValue('sendmethod', $postdata, false); $recipientname = fieldday()->engine->getValue('recipientname', $postdata, false); $recipientemail = fieldday()->engine->getValue('recipientemail', $postdata, false); $recipientphone = fieldday()->engine->getValue('recipientphone', $postdata, false); $usergiftmsg = fieldday()->engine->getValue('usergiftmsg', $postdata, false); $sendername = fieldday()->engine->getValue('sendername', $postdata, false); $senddate = fieldday()->engine->getValue('senddate', $postdata, false); $finalPrice = preg_replace('~\.0+$~','',$amount); $finalamount=str_replace('$','',$finalPrice); //$saveCard=_e('Save Card','fieldday'); $isLoggedin=fieldday()->engine->isKmLogin(); } $content; $content .= wp_sprintf("
"); $content .= wp_sprintf("
"); $content .= wp_sprintf("
"); //$content .= wp_sprintf("

%s (%s)

", $title, trim($finalPrice)); $content .= wp_sprintf("

%s

",'Billing Details'); $content.=wp_sprintf("", $imageOrg); $content.=wp_sprintf("", $imagethumb); $content.=wp_sprintf("", $finalamount); if (fieldday()->engine->isKmLogin()){ $content.=wp_sprintf("", $loggedInname); $content .= wp_sprintf("
Email
", $loggedInemail); $content .= wp_sprintf("Phone
", $loggedInphone); }else { $content .= wp_sprintf("",'true');// code... } $content .= fieldday()->engine->getView('merchandise_form', ['giftcheckout'=>'true']); $content .= "
"; $content .= wp_sprintf("%s", 'Save Card'); $content .= wp_sprintf('Pay %s', $giftCardid, $finalPrice); $content .= "
"; $content .= wp_sprintf("
"); $content .= wp_sprintf("
"); $content .= wp_sprintf("
"); $content .= wp_sprintf(""); $content .= wp_sprintf("
"); $content.=wp_sprintf("%s", $recipientname); $content.=wp_sprintf("%s", $recipientemail); //$content.=wp_sprintf("", $recipientphone); $content.=wp_sprintf("%s %s", 'Amount :', $amount); $content.=wp_sprintf("%s %s", '', '

'.$usergiftmsg .'

-'. $sendername.'

'); $content .= "
"; $content .= "
"; $content .= "
"; $content .= "
"; $content .= "
"; $content .= "
"; wp_send_json(['status' => 'success','isLoggedin'=>$isLoggedin,'header' => 'Confirm and Pay', 'content' => $content, 'footer' => ""]); exit; } public function giftCardPurchase() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $apiPostData = []; if (array_key_exists('giftCardid', $postdata)) { $giftCardId = fieldday()->engine->getValue('giftCardid', $postdata, false); $paymentmethod = fieldday()->engine->getValue('paymentmethod', $postdata, false); $amount = fieldday()->engine->getValue('amount', $postdata, false); $stripeToken = fieldday()->engine->getValue('stripeToken', $postdata, false); $saveCard = fieldday()->engine->getValue('savecard', $postdata, false); $name = fieldday()->engine->getValue('userName', $postdata, false); $email = fieldday()->engine->getValue('userEmail', $postdata, false); $phone = fieldday()->engine->getValue('userPhone', $postdata, false); $giftCardImageOrg = fieldday()->engine->getValue('giftCardImage', $postdata, false); $giftCardImagethumb = fieldday()->engine->getValue('giftCardImagethumb', $postdata, false); $sendername = fieldday()->engine->getValue('sendername', $postdata, false); $senderemail = fieldday()->engine->getValue('senderemail', $postdata, false); $senderphone = fieldday()->engine->getValue('senderphone', $postdata, false); $massgage = fieldday()->engine->getValue('massgage', $postdata, false); $senderDisplayName = str_replace('-','',fieldday()->engine->getValue('senderDisplayName', $postdata, false)); if (!$savecard) { $saveCard = 'false'; } $apiPostData['giftCardId'] = $giftCardId; $apiPostData['paymentMethod'] = $paymentmethod; $apiPostData['amount'] = trim($amount); $apiPostData['stripeToken'] = $stripeToken; $apiPostData['message'] = $massgage; $apiPostData['senderDisplayName'] = $senderDisplayName; $apiPostData['image'] = ['original'=> $giftCardImageOrg, 'thumbnail'=> $giftCardImagethumb]; if(array_key_exists('guest', $postdata)){ if(!empty($senderphone) && !empty($senderemail) ){ $apiPostData['userDetails'] = ['name'=>$sendername,'email'=>$senderemail,'phone'=>$senderphone]; $apiPostData['senderDetails'] = ['name'=>$name,'email'=> $email,'phone'=>$phone]; }elseif(empty($senderphone) && !empty($senderemail)){ $apiPostData['userDetails'] = ['name'=>$sendername,'email'=>$senderemail]; $apiPostData['senderDetails'] = ['name'=>$name,'email'=> $email,'phone'=>$phone]; }elseif (!empty($senderphone) && empty($senderemail)) { $apiPostData['userDetails'] = ['name'=>$sendername,'phone'=>$senderphone]; $apiPostData['senderDetails'] = ['name'=>$name,'email'=> $email,'phone'=>$phone]; } }else { $apiPostData['userDetails'] = ['name'=>$name, 'email'=> $email,'phone'=>$phone]; $apiPostData['saveCard'] = $saveCard; } } if(array_key_exists('guest', $postdata)){ $response = fieldday()->api->giftcardPurchaseGuest($apiPostData); }else{ $response = fieldday()->api->giftcardPurchase($apiPostData); } if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } wp_send_json(['status' => 'success', 'message' => $response->message]); exit; } public function checkoutpaymentInstallments(){ $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionId = fieldday()->engine->getValue('session_id', $postdata, false); $content; global $fielddaySetting; $queryParams['offset'] = $fielddaySetting['offset']; if ($sessionId) { $queryParams['filters']['sessionId'] = $sessionId; } $sessions = fieldday()->api->GetProviderSessions($queryParams); $engine = fieldday()->engine; foreach ($sessions->data->sessions as $session) : foreach ($session->sessions as $counter => $mySession) { if($mySession->enablePaymentOptions): $content .= wp_sprintf('
'); $content .= wp_sprintf('
'); //$content .= wp_sprintf('

%s

', __("Next payment installment(s) date and amount:", 'fielday')); $content .= wp_sprintf('
'); $content .= wp_sprintf('
    '); $content .= wp_sprintf('
  • '); $content .= wp_sprintf('%s', __("Deposit", 'fieldday')); $content .= wp_sprintf('%s', __("Today", 'fieldday')); $content .= wp_sprintf('%s', $engine->display_price($mySession->paymentOptions[0]->deposit) ); $content .= wp_sprintf('
  • '); foreach($mySession->paymentOptions[0]->payments as $key => $paymentOption): $content .= wp_sprintf('
  • '); $content .= wp_sprintf('%s', __("Installment", 'fieldday')); $content .= wp_sprintf('%s', $engine->parseDate($paymentOption->dateTime)); $content .= wp_sprintf('%s', $engine->display_price($paymentOption->deposit)); $content .= wp_sprintf('
  • '); endforeach; $content .= wp_sprintf('
'); $content .= wp_sprintf('
'); $content .= wp_sprintf('
'); endif; } endforeach; wp_send_json(['status' => 'success', 'header' => 'Next payment installment(s) date and amount', 'content' => $content, 'footer' => ""]); exit; } public function deleteSavedCard() { $cardId = filter_input(INPUT_POST, 'cardId', FILTER_SANITIZE_STRING); if(!$cardId) { wp_send_json(['status' => 'fail', 'message' => __("invalid card id", 'fieldday')]); } $isDeleted = fieldday()->api->deleteSavedCard($cardId); if($isDeleted->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => $isDeleted->message, 'logs' => $isDeleted]); }else { wp_send_json(['status' => 'fail', 'message' => $isDeleted->message, 'logs' => $isDeleted]); } } public function setDefaultCard() { $cardId = filter_input(INPUT_POST, 'cardId', FILTER_SANITIZE_STRING); if(!$cardId) { wp_send_json(['status' => 'fail', 'message' => __("invalid card id", 'fieldday')]); } $response = fieldday()->api->setCardAsDefault($cardId); if($response->statusCode == 200) { wp_send_json(['status' => 'success', 'message' => $response->message, 'logs' => $response]); }else { wp_send_json(['status' => 'fail', 'message' => $response->message, 'logs' => $response]); } } public function getCardForm() { $content = fieldday()->engine->getView('account/card_form', ['cardDetail' => $paymentDetail]); $header = wp_sprintf('

%s

', __('Add New Card', 'fieldday')); $footer = wp_sprintf("", __('Cancel', 'fieldday')); $footer .= wp_sprintf("", __('Save', 'fieldday')); wp_send_json(['status' => 'success', 'content' => $content, 'header' => $header, 'footer' => $footer]); } public function saveCard() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); if(array_key_exists('stripeToken', $postdata)) { $response = fieldday()->api->saveNewCard($postdata); if($response->statusCode === 201) { wp_send_json(['status' => 'success', 'message' => $response->message, 'logs' => $response]); }else { wp_send_json(['status' => 'fail', 'message' => $response->message, 'logs' => $response]); } } } public function fielddayActionsInit() { } } return new fielddayActions();