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_LocationPopUpformVisibility', 'callback' => 'km_LocationPopUpformVisibility'], ['name' => 'km_kidsinfo', 'callback' => 'GetKidsInformation'], ['name' => 'km_login', 'callback' => 'LoginProcess'], ['name' => 'km_login_new', 'callback' => 'LoginProcessNew'], ['name' => 'km_register', 'callback' => 'RegisterProcess'], ['name' => 'km_register_new', 'callback' => 'RegisterProcessNew'], ['name' => 'km_verify_otp', 'callback' => 'VerifyOTP'], ['name' => 'km_login_verify_otp', 'callback' => 'LoginVerifyOTP'], ['name' => 'km_resend_otp', 'callback' => 'ResendOtp'], ['name' => 'km_loginresend_otp', 'callback' => 'LoginResendOtp'], ['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' => 'km_Apply_CouponCart', 'callback' => 'ApplyCouponCart'], ['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_multiweek_calculations', 'callback' => 'MultiweekCalculations'], ['name' => 'km_apply_sibling_discount', 'callback' => 'SiblingDiscountAPI'], //['name' => 'km_get_otheroptions', 'callback' => 'atcSessionExtendedCare'], //['name' => 'km_prepare_cart', 'callback' => 'PrepareCart'], ['name' => 'km_set_cartitems', 'callback' => 'APIsaveCartItem'], ['name' => 'km_set_waitlistitems', 'callback' => 'APIsaveWaitListItem'], ['name' => 'km_update_cartitems', 'callback' => 'APIupdateCartItem'], ['name' => 'get_cart_data', 'callback' => 'getCartHtml'], //['name' => 'remove_sessioncart_items', 'callback' => 'removeSessioncartItems'], ['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_multiweekpurchase', "callback" => "MultiweekPurchase"], ['name' => 'km_self_checkin', "callback" => "SelfCheckIn"], ['name' => 'km_contact_form', "callback" => "ContactForm"], ['name' => 'refundFormEventSession', "callback" => "refundFormEventSession"], ['name' => 'km_requestdemo_form', "callback" => "RequestDemoForm"], ['name' => 'km_party_form', "callback" => "PartyForm"], ['name' => 'km_sticky_widget', "callback" => "StickyWidget"], ['name' => 'km_pullticket', "callback" => "PullTicket"], ['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->GetProviderSessionsNew($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 $singleactivitys => $singleactivity) { //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); $sessionID = filter_input(INPUT_POST, 'sessionID', FILTER_SANITIZE_STRING); if ($cartKey) { $cartItem = fieldday()->engine->getCartItem($cartKey); } else { $cartItem = []; } $singlesessionInfo = fieldday()->api->getActivitySessionDetail($sessionID); $content = fieldday()->engine->fielddayCartParticipants($cartItem, $singlesessionInfo->data); 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 (!fieldday()->engine->getValue('knownAs', $postdata, false)) { $postdata['knownAs'] = $postdata['firstName']; } 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); $queryParams = []; if ($postdata && $postdata['isMarketplaceList'] == "true") { $queryParams['isMarketplaceList'] = 'true'; } 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); /* 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->GetProviderSessionsNew($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, '$sessions' => $sessions]; } 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->GetProviderSessionsNew($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, '$sessions' => $sessions]; } else { $response = ['status' => 'fail', 'message' => __($sessions->message, 'fieldday')]; } } } else { $response = ['status' => 'fail', 'message' => __('your request is invalid', 'fieldday')]; } wp_send_json($response); } public function km_LocationPopUpformVisibility() { global $fielddaySetting; $isenabledStickyLocation = fieldday()->engine->getValue('fieldday_sticky_location_widget', $fielddaySetting, false); $locationsResponse = fieldday()->api->getProviderLocations(); $locations_html = ''; $content = ''; if ($isenabledStickyLocation && $locationsResponse->statusCode == 200) { if (is_array($locationsResponse->data)) { $count_locations_html = count($locationsResponse->data); } else { $count_locations_html = 0; } $count_locations_html; foreach ($locationsResponse->data as $key => $locationdata) { $locations[$locationdata->_id] = $locationdata->name; $locations_html .= '
' . $locationdata->name . '

' . $locationdata->street . ', ' . $locationdata->city . '

' . $locationdata->state . ', ' . $locationdata->country . '

'; } //show pop up only if counts of locations is greatar than 2 if (is_array($locationsResponse->data) && count($locationsResponse->data) >= 2) { $content .= '

Location Preference

Choose your preferred location, or select \'View All Locations\' to explore all activities. You can always change the location using the dropdown option in filters.

' . $count_locations_html . ' Locations Available
' . $locations_html . '
'; } } $response = ['status' => 'success', 'content' => $content]; wp_send_json($response); } public function fielddayBankDays() { $bankDays = fieldday()->api->getShoppingPackages(); $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $theme_mode_active_ul_wrapper = fieldday()->engine->getValue('fieldday_theme_mode', $fielddaySetting, false); if (fieldday()->engine->getValue('data', $_POST, false) != 'two_column_layout') { if ($bankDays->statusCode === 200) { $content = ""; $count = 0; if ($bankDays->data) { foreach ($bankDays->data as $bankDayDetail) { if ($count == 0) { $content .= '
'; } $content .= '
"; $count++; } } 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); $theme_mode_active_ul_wrapper = fieldday()->engine->getValue('fieldday_theme_mode', $fielddaySetting, false); 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); $date = fieldday()->engine->getValue('date', $postdata, false); $queryParams = []; if ($tagId) { $queryParams['tagId'] = $tagId; } $permalink = filter_input(INPUT_GET, 'permalink', FILTER_SANITIZE_STRING); $sessions = fieldday()->api->GetProviderSessionsNew($queryParams); if ($sessions->statusCode === 200) { $content = ""; $content .= fieldday()->engine->getView('_sessionlist_part', ['sessions' => $sessions, 'permalink' => $permalink, 'filters' => $queryParams, 'tagId' => $tagId, 'tagdate' => $date]); $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); if ($cartkey) { $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $singlecartitem = fieldday()->api->GetSingleCartItemApi($cartkey, $GcartId, $GparentId); //print_r($singlecartitem->data); if ($singlecartitem->statusCode === 200) { $singlesessionInfo = fieldday()->api->getActivitySessionDetail($singlecartitem->data->sessionId->_id); $cartForm = fieldday()->engine->getView('cart/edit_cart', ['session' => $singlesessionInfo->data, 'cartItem' => $singlecartitem->data, 'cartkey' => $cartkey, 'singlesessionInfo' => $singlesessionInfo->data, 'datamode' => 'edit']); $footer = wp_sprintf('%s', __('Update Cart', 'fieldday')); wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footer, 'header' => $singlecartitem->data->sessionId->name, 'session' => $sessionDetail->data]); } else { wp_send_json(['status' => 'fail', 'message' => __("Invalid Cart Item", 'fieldday')]); } } /*$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() { global $KmUser; $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); $Iswaitlist = filter_input(INPUT_POST, 'waitlist', FILTER_SANITIZE_STRING); $back_btn_html = wp_sprintf('', __('<', 'fieldday')); //NEW TEST CODE if (isset($_SESSION['fieldday']['ProviderId']) && $_SESSION['fieldday']['ProviderId'] != '') { $this->ProviderId = $_SESSION['fieldday']['ProviderId']; } if (isset($_SESSION['fieldday']['AuthKey']) && $_SESSION['fieldday']['AuthKey'] != '') { $this->AuthKey = $_SESSION['fieldday']['AuthKey'] ?? 'test'; } //NEW TEST CODE END if (!$KmUser) { $_SESSION['typeofuser'] = 'guest'; } else { unset($_SESSION['typeofuser']); } 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, 'WaitlistSession' => $Iswaitlist]); } } 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, 'WaitlistSession' => $Iswaitlist]); } $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', __('Back', 'fieldday')); */ if ($Iswaitlist) { $footer .= wp_sprintf('%s', __('Add to Waitlist', 'fieldday')); } else { $footer .= wp_sprintf('%s', __('Continue', 'fieldday')); $footer .= wp_sprintf('%s', __('Checkout', 'fieldday')); $footer .= wp_sprintf('%s', __('Add to Cart', 'fieldday')); } $footermulti .= wp_sprintf('%s', __('Continue', 'fieldday')); $footermulti .= wp_sprintf('%s', __('Back', 'fieldday')); $footermulti .= wp_sprintf('%s', __('Book Now', 'fieldday')); if ($sessionDetail->data->sessionType == "multiWeek") { //hide footer content based on conditions if (($sessionDetail->data->bookingStatus == 'open' || $sessionDetail->data->bookingStatus == 'waitlist') && $KmUser) { $footermulti = $footermulti; } else { $footermulti = ''; } //hide footer content based on conditions wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footermulti, 'header' => $back_btn_html . $sessionDetail->data->name, 'full_session_detail' => $sessionDetail]); } else { //hide footer content based on conditions if ((($sessionDetail->data->bookingStatus == 'open' || $sessionDetail->data->bookingStatus == 'waitlist') && $KmUser) || (!$kmUser && $sessionDetail->data->bookingStatus == 'open')) { $footer = $footer; } else { $footer = ''; } //hide footer content based on conditions wp_send_json(['status' => 'success', 'content' => $cartForm, 'footer' => $footer, 'header' => $back_btn_html . $sessionDetail->data->name, 'full_session_detail' => $sessionDetail]); } } /** * 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 (!$KmUser) { $_SESSION['typeofuser'] = 'guest'; } else { unset($_SESSION['typeofuser']); } 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; } public function APIupdateCartItem() { global $KmUser; global $fielddaySetting; $cartData = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $kidscount = filter_input(INPUT_POST, 'kidscount', FILTER_SANITIZE_STRING); $cartItemKey = filter_input(INPUT_POST, 'cartItemKey', FILTER_SANITIZE_STRING); $sessionId = fieldday()->engine->getValue('session_id', $cartData, false); $kidsdata = $this->_getKidsForPurchase($cartData, $cartData); $extendedCareSelected_array = $cartData['extendedCareSelected']; if ($KmUser && $kidscount < 1) { wp_send_json(['status' => 'fail', 'message' => __("Please select any participants", 'fieldday')]); } $apidata = []; $apidata['offset'] = $fielddaySetting['offset']; if ($KmUser) { $apidata['kidId'] = $kidsdata; } else { $apidata['kidsDetails'] = $kidsdata; } if (isset($cartData['extendedCareSelected'])) { foreach ($cartData['extendedCareSelected'] as $extendedCareSelected_value) { $apidata['extendedCareSelected'] = $extendedCareSelected_value; } $apidata['optedForExtendedCare'] = 'true'; } else { $apidata['optedForExtendedCare'] = 'false'; } if (isset($cartData['additionalChargeDetails'])) { $apidata['additionalChargeDetails'] = $cartData['additionalChargeDetails']; } //print_r($apidata); $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $singlecartitem = fieldday()->api->UpdateSingleCartItemApi($cartItemKey, $apidata, $GcartId, $GparentId); //print_r($singlecartitem); if ($singlecartitem->statusCode === 200) { wp_send_json(['status' => 'success']); } else { wp_send_json(['status' => 'fail', 'message' => $singlecartitem->message]); } } public function APIsaveWaitListItem() { global $KmUser; global $fielddaySetting; $queryParams = []; $cartData = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $kidscount = filter_input(INPUT_POST, 'kidscount', FILTER_SANITIZE_STRING); $sessionId = fieldday()->engine->getValue('session_id', $cartData, false); $kidsdata = $this->_getKidsForPurchase($cartData, $cartData); $extendedCareSelected_array = $cartData['extendedCareSelected']; $dropindates = json_decode($cartData['dropindates']); //"2022-05-29T05:00:00.000Z"; //$dropindatestime = json_decode($cartData['dropindatestime']); $dropindatestime = json_decode($cartData['DatesTimeLabelAllDatesUtcFormat']); if (!array_key_exists('bookingoption_selection', $cartData)) { wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Options", 'fieldday')]); } if ($KmUser && $kidscount < 1) { wp_send_json(['status' => 'fail', 'message' => __("Please select any participants", '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('dropindates', $cartData) && $cartData['bookingoption_selection'] == 'fullDay' && ($cartData['dropindates'] == '' || (is_array($cartData['dropindates']) && count($cartData['dropindates']) < 1))) { wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Dates", 'fieldday')]); } $apidata = array(); $apidata['kidId'] = $kidsdata; $apidata['sessionId'] = $sessionId; $apidata['offset'] = $fielddaySetting['offset']; $bookingoption = $cartData['bookingoption_selection']; if ($bookingoption != 'fullcamp') { $count = 0; foreach ($dropindates as $dropindate) { $date1 = strtr($dropindate, '-', '/'); $date_booked = $dropindatestime->$dropindate; $extendedCareSelected_array = $cartData['extendedCareSelected']; $date_needs = date('m-d-Y', strtotime($date1)); $date_booked_sel = str_replace("-", "", $date_needs); $apidata['addedForOneDayOnly'] = "true"; $apidata['oneDayType'] = $bookingoption; $apidata['oneDaySelectedDate'] = $date_booked; if (isset($cartData['extendedCareSelected'])) { foreach ($extendedCareSelected_array as $extendedCareSelected_value) { $extended_array = explode("_", $extendedCareSelected_value); if ($extended_array[1] == $date_booked_sel) { $apidata['extendedCareSelected'] = $extended_array[0]; } } $apidata['optedForExtendedCare'] = true; } if (isset($cartData['additionalChargeDetails'])) { $additionalC_array = []; $additionalChargeDetails_array = $cartData['additionalChargeDetails']; foreach ($additionalChargeDetails_array as $additionalChargeDetails_value) { $additional_array = explode("_", $additionalChargeDetails_value); if ($additional_array[1] == $date_booked_sel) { $additionalC_array[] = $additional_array[0]; $apidata['additionalChargeDetails'] = $additionalC_array; } } } $cartItemData = fieldday()->api->ItemtoWaitListAPI($apidata); if ($cartItemData->statusCode === 201) { wp_send_json(['status' => 'success']); } else { wp_send_json(['status' => 'fail', 'message' => $cartItemData->message]); } } // foreach date ends } else { // For Booking Option fullcamp if (isset($cartData['selected_payment_option']) && $cartData['selected_payment_option'] !== 'full_amount') { $apidata['enabledPaymentOptions'] = true; $apidata['paymentOptionId'] = $cartData['selected_payment_option']; } $apidata['addedForOneDayOnly'] = "false"; if (isset($cartData['extendedCareSelected'])) { foreach ($cartData['extendedCareSelected'] as $extendedCareSelected_value) { $apidata['extendedCareSelected'] = $extendedCareSelected_value; } $apidata['optedForExtendedCare'] = true; } if (isset($cartData['additionalChargeDetails'])) { $apidata['additionalChargeDetails'] = $cartData['additionalChargeDetails']; } $cartItemData = fieldday()->api->ItemtoWaitListAPI($apidata); if ($cartItemData->statusCode === 201) { wp_send_json(['status' => 'success']); } else { wp_send_json(['status' => 'fail', 'message' => $cartItemData->message]); } } } public function APIsaveCartItem() { global $KmUser; global $fielddaySetting; $queryParams = []; $cartData = filter_input(INPUT_POST, 'ATC', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY); $kidscount = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'kidscount', FILTER_SANITIZE_STRING)); $checkoutRediect = filter_input(INPUT_POST, 'checkoutRediect', FILTER_SANITIZE_STRING); $personal_fullname = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'personal_fullname', FILTER_SANITIZE_STRING)); $personal_guestEmail = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'personal_guestEmail', FILTER_SANITIZE_STRING)); $personal_phone = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'personal_phone', FILTER_SANITIZE_STRING)); $personal_phonecode = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'user-country-code', FILTER_SANITIZE_STRING)); $personal_countrycode = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_input(INPUT_POST, 'users-countrycode', FILTER_SANITIZE_STRING)); $sessionId = fieldday()->engine->getValue('session_id', $cartData, false); $kidsdata = $this->_getKidsForPurchase($cartData, $cartData); $extendedCareSelected_array = $cartData['extendedCareSelected']; $dropindates = json_decode($cartData['dropindates']); //"2022-05-29T05:00:00.000Z"; //$dropindatestime = json_decode($cartData['dropindatestime']); $dropindatestime = json_decode($cartData['DatesTimeLabelAllDatesUtcFormat']); if (isset($cartData['kids']) && is_array($cartData['kids']) && count($cartData['kids']) > 0) { foreach ($cartData['kids'] as $key => $value) { if (isset($cartData['kids'][$key]['firstName'])) { $cartData['kids'][$key]['firstName'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($cartData['kids'][$key]['firstName'], FILTER_SANITIZE_STRING)); } if (isset($cartData['kids'][$key]['lastName'])) { $cartData['kids'][$key]['lastName'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($cartData['kids'][$key]['lastName'], FILTER_SANITIZE_STRING)); } if (isset($cartData['kids'][$key]['knownAs'])) { $cartData['kids'][$key]['knownAs'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($cartData['kids'][$key]['knownAs'], FILTER_SANITIZE_STRING)); } if (isset($cartData['kids'][$key]['gender'])) { $cartData['kids'][$key]['gender'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($cartData['kids'][$key]['gender'], FILTER_SANITIZE_STRING)); } if (isset($cartData['kids'][$key]['grade'])) { $cartData['kids'][$key]['grade'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($cartData['kids'][$key]['grade'], 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('bookingoption_selection', $cartData)) { wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Options", 'fieldday')]); } if ($KmUser && $kidscount < 1) { wp_send_json(['status' => 'fail', 'message' => __("Please select any participants", '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('dropindates', $cartData) && $cartData['bookingoption_selection'] == 'fullDay' && ( $cartData['dropindates'] == '' || (is_array($cartData['dropindates']) && count($cartData['dropindates']) < 1) ) ) { wp_send_json(['status' => 'fail', 'message' => __("Please Select Booking Dates", 'fieldday')]); } if (!$KmUser) { $cartData['Usertype'] = 'is_guest'; } $apidata = array(); if ($personal_guestEmail) { $_SESSION['Gpersonal_detail']['fullname'] = $personal_fullname; $_SESSION['Gpersonal_detail']['guestEmail'] = $personal_guestEmail; $_SESSION['Gpersonal_detail']['phone'] = $personal_phone; $_SESSION['Gpersonal_detail']['phonecode'] = $personal_phonecode; $_SESSION['Gpersonal_detail']['countrycode'] = $personal_countrycode; } if (!$KmUser && array_key_exists('Gpersonal_detail', $_SESSION)) { $apidata['parent']['name'] = $_SESSION['Gpersonal_detail']['fullname']; $apidata['parent']['guestEmail'] = $_SESSION['Gpersonal_detail']['guestEmail']; $apidata['parent']['countryCode'] = $_SESSION['Gpersonal_detail']['phonecode']; $apidata['parent']['phone'] = str_replace(' ', '', $_SESSION['Gpersonal_detail']['phone']); } if ($KmUser) { $apidata['kidId'] = $kidsdata; } else { $apidata['kidsDetails'] = $kidsdata; } $apidata['sessionId'] = $sessionId; $apidata['offset'] = $fielddaySetting['offset']; $bookingoption = $cartData['bookingoption_selection']; if ($bookingoption != 'fullcamp') { $count = 0; $cartAPIresponse = []; $cartId = fieldday()->engine->getCookieStorage('GcartId', false) ?? null; foreach ($dropindates as $dropindate) { $date1 = strtr($dropindate, '-', '/'); $date_booked = $dropindatestime->$dropindate; $extendedCareSelected_array = $cartData['extendedCareSelected']; $date_needs = date('m-d-Y', strtotime($date1)); $date_booked_sel = str_replace("-", "", $date_needs); $apidata['addedForOneDayOnly'] = "true"; $apidata['oneDayType'] = $bookingoption; $apidata['oneDaySelectedDate'] = $date_booked; if (isset($cartData['extendedCareSelected'])) { foreach ($extendedCareSelected_array as $extendedCareSelected_value) { $extended_array = explode("_", $extendedCareSelected_value); if ($extended_array[1] == $date_booked_sel) { $apidata['extendedCareSelected'] = $extended_array[0]; } } $apidata['optedForExtendedCare'] = true; } if (isset($cartData['additionalChargeDetails'])) { $additionalC_array = []; $additionalChargeDetails_array = $cartData['additionalChargeDetails']; foreach ($additionalChargeDetails_array as $additionalChargeDetails_value) { $additional_array = explode("_", $additionalChargeDetails_value); if ($additional_array[1] == $date_booked_sel) { $additionalC_array[] = $additional_array[0]; $apidata['additionalChargeDetails'] = $additionalC_array; } } } //$cartIdFromCookie = fieldday()->engine->getCookieStorage('GcartId', false); //$GcartId = fieldday()->engine->getValue('GcartId', $_SESSION, false); if ($cartId) { $apidata['cartId'] = $cartId; } $cartItemData = fieldday()->api->ItemtoCartAPI($apidata); $cartAPIresponse['response'][] = $cartItemData; $cartAPIresponse['payload'][] = $apidata; if ($cartItemData->statusCode === 201) { $cartId = $cartItemData->data->cartDetails[0]->cartId; setcookie('GcartId', $cartId, time() + (86400), "/"); // 86400 = 1 day setcookie('GparentId', $cartItemData->data->parentId, time() + (86400), "/"); // 86400 = 1 day $_SESSION['api_cartId'] = $cartItemData->data->_id; $_SESSION['api_parentId'] = $cartItemData->data->parentId; } else { wp_send_json(['status' => 'fail', 'message' => $cartItemData->message]); } } //foreach date ends 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', 'pageredirect' => $checkout]); } else { wp_send_json(['status' => 'success', 'logs' => $cartAPIresponse]); } } else { // For Booking Option fullcamp if (isset($cartData['selected_payment_option']) && $cartData['selected_payment_option'] !== 'full_amount') { $apidata['enabledPaymentOptions'] = true; $apidata['paymentOptionId'] = $cartData['selected_payment_option']; } $apidata['addedForOneDayOnly'] = "false"; if (isset($cartData['extendedCareSelected'])) { foreach ($cartData['extendedCareSelected'] as $extendedCareSelected_value) { $apidata['extendedCareSelected'] = $extendedCareSelected_value; } $apidata['optedForExtendedCare'] = true; } if (isset($cartData['additionalChargeDetails'])) { $apidata['additionalChargeDetails'] = $cartData['additionalChargeDetails']; } /*if(isset($_SESSION['api_cartId']) && $_SESSION['api_cartId']!='') { $apidata['cartId'] = $_SESSION['api_cartId']; }*/ $cartId = fieldday()->engine->getCookieStorage('GcartId', false); if ($cartId) { $apidata['cartId'] = $cartId; } $cartItemData = fieldday()->api->ItemtoCartAPI($apidata); if ($cartItemData->statusCode === 201) { setcookie('GcartId', $cartItemData->data->cartDetails[0]->cartId, time() + (86400), "/"); // 86400 = 1 day setcookie('GparentId', $cartItemData->data->parentId, time() + (86400), "/"); // 86400 = 1 day $_SESSION['api_cartId'] = $cartItemData->data->cartDetails[0]->cartId; $_SESSION['api_parentId'] = $cartItemData->data->parentId; 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', 'pageredirect' => $checkout]); } else { wp_send_json(['status' => 'success', 'apiData' => $apidata, 'apiresposne' => $cartItemData]); } } else { wp_send_json(['status' => 'fail', 'message' => $cartItemData->message]); } } } /** * 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); $personal_fullname = filter_input(INPUT_POST, 'personal_fullname', FILTER_SANITIZE_STRING); $personal_guestEmail = filter_input(INPUT_POST, 'personal_guestEmail', FILTER_SANITIZE_STRING); $personal_phone = filter_input(INPUT_POST, 'personal_phone', FILTER_SANITIZE_STRING); $personal_phonecode = filter_input(INPUT_POST, 'user-country-code', FILTER_SANITIZE_STRING); $personal_countrycode = filter_input(INPUT_POST, 'users-countrycode', 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 (!$KmUser) { $cartData['Usertype'] = 'is_guest'; } if (array_key_exists('kids', $cartData)) { foreach ($cartData['kids'] as $key => $kidInfo) { if ($kidInfo['knownAs'] == '') { $kidInfo['knownAs'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($kidInfo['firstName'], FILTER_SANITIZE_STRING)); } $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; if ($personal_guestEmail) { $_SESSION['Gpersonal_detail']['fullname'] = $personal_fullname; $_SESSION['Gpersonal_detail']['guestEmail'] = $personal_guestEmail; $_SESSION['Gpersonal_detail']['phone'] = $personal_phone; $_SESSION['Gpersonal_detail']['phonecode'] = $personal_phonecode; $_SESSION['Gpersonal_detail']['countrycode'] = $personal_countrycode; } $fielddayCart = fieldday()->engine->saveCartItem($cartData, $cartKey); $cartitems = count($fielddayCart); $bookingdetail = $this->_generateBoking($cartData); if (!$KmUser && array_key_exists('Gpersonal_detail', $_SESSION)) { $bookingdetail['parent']['name'] = $_SESSION['Gpersonal_detail']['fullname']; $bookingdetail['parent']['guestEmail'] = $_SESSION['Gpersonal_detail']['guestEmail']; $bookingdetail['parent']['countryCode'] = $_SESSION['Gpersonal_detail']['phonecode']; $bookingdetail['parent']['phone'] = str_replace(' ', '', $_SESSION['Gpersonal_detail']['phone']); } // print_r($bookingdetail); $calculationInfo = fieldday()->api->calculateSessionPrice($bookingdetail); } } 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; if ($personal_guestEmail) { $_SESSION['Gpersonal_detail']['fullname'] = $personal_fullname; $_SESSION['Gpersonal_detail']['guestEmail'] = $personal_guestEmail; $_SESSION['Gpersonal_detail']['phone'] = $personal_phone; $_SESSION['Gpersonal_detail']['phonecode'] = $personal_phonecode; $_SESSION['Gpersonal_detail']['countrycode'] = $personal_countrycode; } //print_r($cartData); $fielddayCart = fieldday()->engine->saveCartItem($cartData, $cartKey); $cartitems = count($fielddayCart); $bookingdetail = $this->_generateBoking($cartData); if (!$KmUser && array_key_exists('Gpersonal_detail', $_SESSION)) { $bookingdetail['parent']['name'] = $_SESSION['Gpersonal_detail']['fullname']; $bookingdetail['parent']['guestEmail'] = $_SESSION['Gpersonal_detail']['guestEmail']; $bookingdetail['parent']['countryCode'] = $_SESSION['Gpersonal_detail']['phonecode']; $bookingdetail['parent']['phone'] = str_replace(' ', '', $_SESSION['Gpersonal_detail']['phone']); } //print_r($bookingdetail); $calculationInfo = fieldday()->api->calculateSessionPrice($bookingdetail); 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')]); } } /*public function removeSessioncartItems(){ if(isset($_SESSION['removed_cart_items']) && ($_SESSION['removed_cart_items'])!=''){ unset($_SESSION['removed_cart_items']); } }*/ /** * get the cart html * * @return JSON json response */ public function getCartHtml() { global $fielddaySetting; global $KmUser; $cartDetails = fieldday()->engine->GetCartData(); if (!empty($cartDetails)) { $purchasepage = get_permalink(fieldday()->engine->getValue('purchase_page', $fielddaySetting, false)); $content = "

Cart

X
"; foreach ($cartDetails as $cartDetail) { $kids = $cartDetail->kidId; $kidname = ''; $key = $cartDetail->_id; $addedForOneDayOnly = $cartDetail->addedForOneDayOnly; $selectedate = ''; if ($addedForOneDayOnly) { $bookingtypesel = "Drop-In"; $selectedate = fieldday()->engine->parseDate($cartDetail->oneDaySelectedDate, 'd-M-Y'); } else { $bookingtypesel = "All Session Days"; } foreach ($kids as $kid) { $kidname .= '' . $kid->firstName . ''; } $session_img = fieldday()->engine->displaySessionThumb($cartDetail->sessionId, false, true); $location = $cartDetail->sessionId->siteLocationId->name; $location_state = $cartDetail->sessionId->siteLocationId->state; $location_country = $cartDetail->sessionId->siteLocationId->country; $location_link = "https://www.google.com/maps/place/" . $location . ",+" . $location_state . ",+" . $location_country; $content .= '
'; $content .= wp_sprintf('
%s
', $session_img); $content .= wp_sprintf('
%s', $cartDetail->sessionId->name); $content .= wp_sprintf('
%s
', $kidname); $content .= wp_sprintf('
%s', $bookingtypesel); if ($selectedate) { $content .= wp_sprintf(' (%s)', $selectedate); } $content .= '
'; $content .= wp_sprintf('', $location_link, $location); $content .= wp_sprintf('
EditRemove
', $key, $key); $content .= '
'; } $content .= '
'; $content .= wp_sprintf('
Continue Shopping', apply_filters('km_purchase_page', $purchasepage)); $content .= wp_sprintf('Checkout
', apply_filters('km_checkout_page', site_url('/checkout'))); wp_send_json(['status' => 'success', 'items' => count($cartDetails), 'content' => $content]); } else { $emptycartText = wp_sprintf("
X
%s
", fieldday()->engine->displayText('atc_empty_cart', false)); wp_send_json(['status' => 'success', 'items' => 0, 'content' => $emptycartText]); } } /** * remove cart item * * @return JSON json response */ public function removeCartItem() { $cart_key = filter_input(INPUT_POST, 'cart_key', FILTER_SANITIZE_STRING); if ($cart_key) { $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $apicartitems = fieldday()->api->RemoveCartItemApi($cart_key, $GcartId, $GparentId); $this->getCartHtml(); } } public function SiblingDiscountAPI() { global $KmUser; global $fielddaySetting; $status = filter_input(INPUT_POST, 'astatus', FILTER_SANITIZE_STRING); $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $applydiscount = fieldday()->api->ApplySiblingDiscount($status, $GcartId, $GparentId); if ($applydiscount->statusCode == 200) { wp_send_json(['status' => 'success']); } else { wp_send_json(['status' => 'fail', 'message' => $applydiscount->message]); } } /** * 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']; //$kids = $postdata['ATC']['kids']; $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) { $AllKids = $postdata['ATC']['kids']; /*$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 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(); //print_r($cartdata); 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) { //echo "mydata"; print_r($cartItem['kids']); 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']); $kidsdata = $this->_getKidsForPurchase($postdata, $cartItem); if (!$KmUser) { foreach ($kidsdata as $key => $kiddata) { if ($kiddata['forms']) { unset($kiddata['forms']); $kidsdata[$key] = $kiddata; } } $singleBooking[$items_count]['kidsDetails'] = $kidsdata; } else { $singleBooking[$items_count]['kidId'] = $kidsdata; } //echo "kidsdatasdasd"; //print_r($kidsdata); $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']); $kidsdata = $this->_getKidsForPurchase($postdata, $cartItem); if (!$KmUser) { foreach ($kidsdata as $key => $kiddata) { if ($kiddata['forms']) { unset($kiddata['forms']); $kidsdata[$key] = $kiddata; } } $singleBooking[$items_count]['kidsDetails'] = $kidsdata; } else { $singleBooking[$items_count]['kidId'] = $kidsdata; } //echo "kidsdatasdasd"; //print_r($kidsdata); $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; 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('knownAs', $kidInfo, false)) { $kidInfo['knownAs'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', filter_var($kidInfo['firstName'], FILTER_SANITIZE_STRING)); } 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() { global $KmUser; global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $kids = fieldday()->engine->getValue('kids', $postdata, false); $storeCreditUsed = fieldday()->engine->getvalue('storeCreditId', $postdata, false); $coupon = fieldday()->engine->getValue('couponCode', $postdata, false); $manualStoreCreditPaid = fieldday()->engine->getvalue('manualStoreCreditPaid', $postdata, false); $apidata = []; if ($KmUser) { if ($storeCreditUsed) { $apidata['creditId'] = $storeCreditUsed; if ($manualStoreCreditPaid) { $apidata['manualStoreCreditPaid'] = $manualStoreCreditPaid; } $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); if ($GcartId) { $apidata['cartId'] = $GcartId; } //$apidata['cartId'] = $_SESSION['api_cartId']; $updatecredit = fieldday()->api->ApplyStoreCreditAPI($apidata); } else { $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); if ($GcartId) { $apidata['cartId'] = $GcartId; } //$apidata['cartId'] = $_SESSION['api_cartId']; $removecredit = fieldday()->api->RemoveStoreCreditAPI($apidata); } } /*if($coupon && $coupon!=$_SESSION['coupon_value']){ $couponapidata['couponCode'] = $coupon; $GcartId = fieldday()->engine->getCookieStorage('GcartId',false); $GparentId = fieldday()->engine->getCookieStorage('GparentId',false); $queryParams['cartId'] = $GcartId; $queryParams['parentId'] = $GparentId; $status = 'applycoupon'; $applycoupon = fieldday()->api->ApplyCouponAPI($couponapidata,$queryParams,$status); if ($applycoupon->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $applycoupon->message]); } else { $_SESSION['coupon_applied'] = 'yes'; $_SESSION['coupon_value'] = $coupon; } } else if($coupon=='' && $_SESSION['coupon_applied']=='yes') { unset($_SESSION['coupon_applied']); unset($_SESSION['coupon_value']); $GcartId = fieldday()->engine->getCookieStorage('GcartId',false); $GparentId = fieldday()->engine->getCookieStorage('GparentId',false); $queryParams['cartId'] = $GcartId; $queryParams['parentId'] = $GparentId; $status = 'removecoupon'; $removecoupon = fieldday()->api->ApplyCouponAPI('',$queryParams,$status); }*/ foreach ($kids as $key => $kidInfo) { if ($kidInfo['forms']['doctors']['address']['state'] == '') { $kidInfo['forms']['doctors']['address']['state'] = $kidInfo['forms']['doctors']['address']['street']; } if ($kidInfo['forms']['doctors']['address']['city'] == '') { $kidInfo['forms']['doctors']['address']['city'] = $kidInfo['forms']['doctors']['address']['street']; } if ($kidInfo['forms']['doctors']['address']['pin'] == '') { $kidInfo['forms']['doctors']['address']['pin'] = $kidInfo['forms']['doctors']['address']['street']; } $kidDataFromPost = $kidInfo; $kidDataFromPost['kidId'] = $key; if (array_key_exists('medicalInsurance', $kidDataFromPost['forms'])) { $kidDataFromPost['forms']['medInsurance'] = $kidDataFromPost['forms']['medicalInsurance']; unset($kidDataFromPost['forms']['medicalInsurance']); } $formsResponse = fieldday()->api->SaveMedicalForms($kidDataFromPost); } $cartdata = fieldday()->engine->GetCartData(true); // fetch cart data if ($cartdata->cartDetails) { $content = fieldday()->engine->getView('checkout/cart', ['coupon' => $coupon, 'calculationInfo' => $cartdata->cartDetails, 'CartTotals' => $cartdata]); $extraData = [ 'totalAmount' => $cartdata->totalAmount, 'payableAmount' => $cartdata->payableAmount == null ? 0 : $cartdata->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($cartdata), $cartdata), ]; wp_send_json(['status' => 'success', 'content' => $content, 'data' => $extraData]); } else { wp_send_json(['status' => 'fail', 'message' => fieldday()->engine->displayText('km_empty_cart_msg', false)]); } } public function ApplyCouponCart() { $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $coupon = fieldday()->engine->getValue('couponCode', $postdata, false); if ($coupon) { $couponapidata['couponCode'] = $coupon; $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $queryParams['cartId'] = $GcartId; $queryParams['parentId'] = $GparentId; $status = 'applycoupon'; $applycoupon = fieldday()->api->ApplyCouponAPI($queryParams, $status, $couponapidata); if ($applycoupon->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $applycoupon->message]); } else { //$_SESSION['coupon_applied'] = 'yes'; //$_SESSION['coupon_value'] = $coupon; wp_send_json(['status' => 'success', 'message' => 'Coupon Applied Successfully.']); } } else if ($coupon == '') { //unset($_SESSION['coupon_applied']); //unset($_SESSION['coupon_value']); $GcartId = fieldday()->engine->getCookieStorage('GcartId', false); $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $queryParams['cartId'] = $GcartId; $queryParams['parentId'] = $GparentId; $status = 'removecoupon'; $removecoupon = fieldday()->api->ApplyCouponAPI($queryParams, $status); wp_send_json(['status' => 'success', 'message' => '']); } } /** * 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() { global $fielddaySetting; global $KmUser; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $apidata = []; $saveCard = fieldday()->engine->getvalue('saveCard', $postdata, false); $stripeToken = fieldday()->engine->getvalue('stripeToken', $postdata, false); $cartId = fieldday()->engine->getvalue('cartId', $postdata, false); $cardId = fieldday()->engine->getvalue('cardId', $postdata, false); $paymentMethod = fieldday()->engine->getvalue('paymentMethod', $postdata, false); $apidata['cartId'] = $cartId; if ($KmUser) { $saveCard == 'on' ? true : false; if ($saveCard) { $apidata['saveCard'] = $saveCard; } } if (!$KmUser) { $GparentId = fieldday()->engine->getCookieStorage('GparentId', false); $apidata['parentId'] = $GparentId; } if ($paymentMethod == 'card') { if ($cardId) { $apidata['cardId'] = $postdata['cardId']; } if (fieldday()->engine->getvalue('stripeToken', $postdata, false)) { $apidata['stripeToken'] = $stripeToken; //$apidata['paymentMethod'] = 'card'; } } $apidata['paymentMethod'] = $paymentMethod; $apidata['authPickUps'] = $postdata['authPickUps']; foreach ($apidata['authPickUps'] as $key => $picker) { $apidata['authPickUps'][$key]['countryCode'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $apidata['authPickUps'][$key]['countryCode']); $apidata['authPickUps'][$key]['name'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $apidata['authPickUps'][$key]['name']); $apidata['authPickUps'][$key]['phone'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $apidata['authPickUps'][$key]['phone']); } foreach ($apidata['authPickUps'] as $key => $picker) { if (trim(fieldday()->engine->getValue('phone', $picker, false)) == '') { unset($apidata['authPickUps'][$key]); } } if (count($apidata['authPickUps']) == 0) { unset($apidata['authPickUps']); } $apidata['terms'] = $postdata['terms']; foreach ($apidata['terms'] as $key => $newTerms) { $apidata['terms'][$key]['isAccepted'] = $newTerms['isAccepted'] == 'on' ? true : false; $apidata['terms'][$key]['termId'] = $newTerms['termId']; } if ($postdata['paymentAddress']['city']) { $apidata['paymentAddress']['city'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $postdata['paymentAddress']['city']); } $apidata['offset'] = $fielddaySetting['offset']; $date = date('Y-m-d H:i:s'); $purchaseInfo = fieldday()->api->purchaseSession($apidata); $this->__savelogs("Purchase step (" . $date . "): Let's purchase", $purchaseInfo); if ($purchaseInfo->statusCode === 201) { $content = fieldday()->engine->getView('checkout/thanks', ['order' => $purchaseInfo->data]); $redirect = fieldday()->engine->ThankyouRedirect(); if (isset($redirect) && $redirect != '') { $redirect .= '?orderid=' . $purchaseInfo->data->_id; } unset($_SESSION['coupon_applied']); unset($_SESSION['GcartId']); unset($_SESSION['coupon_value']); wp_send_json(['status' => 'success', 'content' => $content, 'order' => $purchaseInfo->data, 'redirect' => $redirect]); } else { wp_send_json(['status' => 'fail', 'message' => __($purchaseInfo->message), 'logs' => $purchaseInfo]); } } /** * 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); $offername = filter_input(INPUT_POST, 'offername', 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); $isGroupSessionListing = filter_input(INPUT_POST, 'isGroupSessionListing', 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, 'isGroupSessionListing' => $isGroupSessionListing]; } elseif ($offerId) { $data = ['offerId' => $offerId, 'offername' => $offername, 'isGroupSessionListing' => $isGroupSessionListing]; } elseif ($packageId) { $data = ['packageId' => $packageId, 'isGroupSessionListing' => $isGroupSessionListing]; } $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); $offername = filter_input(INPUT_POST, 'offername', 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]; $data = ['offername' => $offername]; } $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); $offername = filter_input(INPUT_POST, 'offername', 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]; $data = ['offername' => $offername]; } $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 LoginProcessNew() { $username = filter_input(INPUT_POST, 'user_name', FILTER_SANITIZE_STRING); $username = trim($username); $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) { $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'loggedin' => false, 'message' => __('reCAPTCHA invalid')]); } $LoggedIn = fieldday()->api->LoginWithEmail($username); //print_r($LoggedIn); if ($LoggedIn->statusCode === 201 && $LoggedIn->success === true) { $loginToken = $LoggedIn->data->loginToken; $isSent = fieldday()->api->LoginResendOtpEmail($loginToken, 'true'); if (!$redirect) { $redirect = fieldday()->engine->LoginRedirect(); } if ($isSent->statusCode === 211 && $isSent->success === true) { $header = 'Enter the Verification Code'; if ($isSent->success && $isSent->statusCode == 211) { $verificationView = fieldday()->engine->getView('login_register_verification', ['user' => $LoggedIn, 'redirect_url' => $redirect, 'is_registered' => false]); 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 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) { /* 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); 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(!empty($_SESSION['km_cart_items'])){ fieldday()->engine->removeCart(); }*/ 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); //print_r($UserData); } 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; } /*if(!empty($_SESSION['km_cart_items'])){ fieldday()->engine->removeCart(); }*/ 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); 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) { /*if(!empty($_SESSION['km_cart_items'])){ fieldday()->engine->removeCart(); }*/ 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]); } } public function RegisterProcessNew() { $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' => trim($name), 'email' => trim($email), 'countryCode' => trim($countrycode), 'phone' => trim($phone), ]; $registered = fieldday()->api->Registration($userdata); if ($registered->statusCode === 201 && $registered->success === true) { $LoggedIn = fieldday()->api->LoginWithEmail($email); if ($LoggedIn->statusCode === 201 && $LoggedIn->success === true) { $loginToken = $LoggedIn->data->loginToken; $isSent = fieldday()->api->LoginResendOtpEmail($loginToken, 'false'); if ($isSent->statusCode === 211 && $isSent->success === true) { $header = 'Enter the Verification Code'; if ($isSent->success && $isSent->statusCode == 211) { $verificationView = fieldday()->engine->getView('login_register_verification', ['user' => $LoggedIn, 'actionp' => 'register', 'is_registered' => true]); 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' => __($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 LoginVerifyOTP() { $userID = filter_input(INPUT_POST, 'user_id', FILTER_SANITIZE_STRING); //$access_token = filter_input(INPUT_POST, 'access_token', FILTER_SANITIZE_STRING); $redirect = filter_input(INPUT_POST, 'redirect_url', FILTER_SANITIZE_STRING); $login_token = filter_input(INPUT_POST, 'login_token', FILTER_SANITIZE_STRING); $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $redirect_page_ = fieldday()->engine->LoginRedirect(); if ($redirect_page_ == '') { $redirect_page_ = site_url('/'); } if (!$userID) { wp_send_json(['status' => 'fail', 'message' => __("your request is invalid", 'fieldday')]); } $otp = implode('', $postdata['otp']); $isVerified = fieldday()->api->LoginverifyOTP($otp, $login_token); if ($isVerified->statusCode === 200) { $access_token = $isVerified->data->accessToken; //echo "hereis the token:".$access_token; $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_page_' => $redirect_page_, 'redirect' => $redirect, '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]); } } 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) { /*if(!empty($_SESSION['km_cart_items'])){ fieldday()->engine->removeCart(); }*/ 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]); } } public function LoginResendOtp() { $PhoneCode = filter_input(INPUT_POST, 'user_phone_code', FILTER_SANITIZE_STRING); $Phone = filter_input(INPUT_POST, 'user_phone', FILTER_SANITIZE_STRING); //$isEmailOTP = filter_input(INPUT_POST, 'isEmailOTP', FILTER_SANITIZE_STRING); $login_token = filter_input(INPUT_POST, 'login_token', FILTER_SANITIZE_STRING); $otpType = filter_input(INPUT_POST, 'km_verify_code_type', FILTER_SANITIZE_STRING); if ($otpType == 'email') { $isSent = fieldday()->api->LoginResendOtpEmail($login_token, 'true'); } else { $isSent = fieldday()->api->LoginResendOtpEmail($login_token, 'false'); } 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); $offername = filter_input(INPUT_POST, 'offername', FILTER_SANITIZE_STRING); if (!$KmUser) { $_SESSION['typeofuser'] = 'guest'; } else { unset($_SESSION['typeofuser']); } if (!$offerId) { wp_send_json(['status' => 'fail', 'message' => __("please select a valid offer.", 'fieldday')]); } $header = $offername; $content = fieldday()->engine->getView('merchandise_form', ['offerid' => $offerId]); $footer = wp_sprintf("", __('Purchase', 'fieldday')); $modalClass = fieldday()->engine->isKmLogin() ? 'modal-large km_user_login' : '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']); unset($postdata['km_terms_condition']); $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(); //$storeCredit = fieldday()->api->getUserStoreCredit(); $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 (isset($data->remainingCredits)) { $dollarCredit = $data; } elseif (isset($data->remainingDaysCount)) { $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(__('Your account has a balance of %d store credit. Are you interested in using these for 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(__('There are %d store credit bank days available to you. Would you like to use these to place 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(__('The number of day credits you have is %d. Here are the options for booking this and utilizing your credit days.', 'fieldday'), $remainingDaysCount); $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) { global $fielddaySetting; global $KmUser; $apiData = []; $cartDetails = fieldday()->engine->GetCartData(true); $apiData['providerId'] = $cartDetails->providerId; $apiData['cartId'] = $cartDetails->_id; $PaymentOptions = fieldday()->api->PaymentOptions($apiData); 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 $cartItem) { //$session = $cartItem['session_detail']; $kidsCount = count($cartItem->kidId); /* if session is added only for one day */ if (fieldday()->engine->getValue('addedForOneDayOnly', $cartItem, false)) { $sessionDays = $sessionDays + (1 * $kidsCount); } else { $sessionWorkingDays = $cartItem->daysOfWeek; $sessionStartDate = $cartItem->dateTimestamp->from; $sessionEndDate = $cartItem->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; }*/ if ($post && property_exists($post, 'post_content')) { $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); exit; // It's recommended to use exit() instead of die() for clarity } } } /** * 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); if ($Data['parent']['name']) { $Data['parent']['name'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['name']); } if ($Data['parent']['guestEmail']) { $Data['parent']['guestEmail'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['guestEmail']); } if ($Data['parent']['gender']) { $Data['parent']['gender'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['gender']); } if ($Data['parent']['countryCode']) { $Data['parent']['countryCode'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['countryCode']); } if ($Data['parent']['phone']) { $Data['parent']['phone'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['phone']); } if ($Data['parent']['maritalStatus']) { $Data['parent']['maritalStatus'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $Data['parent']['maritalStatus']); } $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 = isset($_POST['mobiledata']) ? $_POST['mobiledata'] : null; 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->GetProviderSessionsNew($queryParams); foreach ($sessions->data->sessions as $counter => $mySession) { //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->GetProviderSessionsNew($queryParams); $content; $content .= "
"; foreach ($sessions->data->sessions as $counter => $mySession): //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 = '

' . __("Elevate Your Experience with these Add-Ons", "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): $optionname = $product->_id; $option_checked = ''; $mandatory_message = ''; if ($product->isMandatory == 1) { $option_checked = 'checked disabled'; $mandatory_message = 'This option is mandatory to check '; } $html_additional .= ''; endif; endforeach; $html_additional .= '
'; endif; } else { //oneday selected //$html .= '

'.__("Elevate Your Experience with these Add-Ons", "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 (!empty($dropindates) && 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 .= '

' . __("Elevate Your Experience with these Add-Ons", "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): $option_checked = ''; $mandatory_message = ''; if ($product->isMandatory == 1) { $option_checked = 'checked disabled'; $mandatory_message = 'This option is mandatory to check '; } $html_additional .= ''; endif; endforeach; $html_additional .= '
'; endif; } else { $html = $html_additional = ''; } } } 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]; $event_discount = $postdata['ATC']['event_discount']; $eventpromocode = $postdata['eventpromocode']; $yeselected = $noselected = ''; if ($event_discount) { if ($event_discount == 'yes') { $yeselected = 'checked'; } if ($event_discount == 'no') { $noselected = 'checked'; } } else { $noselected = 'checked'; } $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); }*/ $apirun = false; $apiPostData['eventId'] = $sessionid; if ($postdata['ATC']['infants'] > 0) { $apirun = true; $apiPostData['participants']['infants'] = $postdata['ATC']['infants']; } if ($postdata['ATC']['toddler'] > 0) { $apirun = true; $apiPostData['participants']['toddler'] = $postdata['ATC']['toddler']; } if ($postdata['ATC']['children'] > 0) { $apirun = true; $apiPostData['participants']['children'] = $postdata['ATC']['children']; } if ($postdata['ATC']['youth'] > 0) { $apirun = true; $apiPostData['participants']['youth'] = $postdata['ATC']['youth']; } if ($postdata['ATC']['adults'] > 0) { $apirun = true; $apiPostData['participants']['adults'] = $postdata['ATC']['adults']; } if ($postdata['ATC']['seniors'] > 0) { $apirun = true; $apiPostData['participants']['seniors'] = $postdata['ATC']['seniors']; } if ($event_discount == 'yes') { $apiPostData['applyMilitaryDiscount'] = 'true'; } if ($eventpromocode) { $apiPostData['couponCode'] = $eventpromocode; } $apiPostData['selectedDate'] = $session_date; if ($apirun) { $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 = ''; $isPrice = ''; if ($data->totalPrice == 0) { if (!$KmUser) { $isPrice = 01; } else { $isPrice = 0; } } //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") . ''; if ($data->event->offersMilitaryDiscount) { $result .= '

' . __("Are You member of Military or First responders?", "fieldday"); //if($data->appliedMilitaryDiscount){ $result .= 'Military and first responder discount - Please bring your ID card to show it to check-in agent'; //} $result .= '

'; } $result .= '

' . __("Have a Promo Code?", "fieldday") . '

'; $available_coupons = fieldday()->api->AvailableCoupons(); if ($available_coupons->statusCode == 200) { $coupons = $available_coupons->data; if ($coupons) { $result .= '

' . __('Available Coupons', 'fieldday') . '

    '; foreach ($coupons as $coupon) { $percentagesymbol = $dollarsymbol = ''; $discountType = $coupon->discountType; if ($discountType == 'percent') { $percentagesymbol = '%'; } if ($discountType == 'unit') { $dollarsymbol = '$'; } $expiryDate = fieldday()->engine->parseDate($coupon->expiryDate, 'd/M/Y'); $result .= '
  • ' . $coupon->title . '

    ' . $dollarsymbol . $coupon->discount . $percentagesymbol . 'Valid until ' . $expiryDate . '
  • '; } $result .= '
'; } } $result .= '

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

'; $result .= ''; $result .= '
    '; $summary .= '
      '; foreach ($data->priceBreakup as $prices) { //$result .='
    • '.fieldday()->engine->display_price($prices->seatPrice).' x '.$prices->seatCount.' '.$prices->key.''.fieldday()->engine->display_price($prices->subTotal).'
    • '; if ($prices->customGroupKey) { $grouptitle = $prices->customGroupKey; } else { $grouptitle = $prices->key; } $summary .= '
    • ' . $grouptitle . ' ' . $prices->seatCount . ' * ' . fieldday()->engine->display_price($prices->seatPrice) . '' . fieldday()->engine->display_price($prices->subTotal) . '
    • '; $result .= '
    • ' . $grouptitle . ' ' . $prices->seatCount . ' * ' . fieldday()->engine->display_price($prices->seatPrice) . '' . fieldday()->engine->display_price($prices->subTotal) . '
    • '; } if ($data->tax) { $result .= '
    • ' . __("Tax", "fieldday") . '' . fieldday()->engine->display_price($data->tax) . '
    • '; $summary .= '
    • ' . __("Tax", "fieldday") . '' . fieldday()->engine->display_price($data->tax) . '
    • '; } if ($data->totalFee) { $result .= '
    • ' . __("Fee", "fieldday") . '(Credit Card + Field Day Fee)' . fieldday()->engine->display_price($data->totalFee) . '
    • '; $summary .= '
    • ' . __("Fee", "fieldday") . '(Credit Card + Field Day Fee)' . fieldday()->engine->display_price($data->totalFee) . '
    • '; } if ($data->totalDiscount) { $if_discount_applied = true; $result .= '
    • ' . __("Discount", "fieldday") . '(' . $data->discountText . ')' . fieldday()->engine->display_price($data->totalDiscount) . '
    • '; $summary .= '
    • ' . __("Discount", "fieldday") . '(' . $data->discountText . ')' . fieldday()->engine->display_price($data->totalDiscount) . '
    • '; } else { $if_discount_applied = false; } /* if($data->isCouponApplied){ $result .= '
    • '.__("Coupon Discount", "fieldday").''.fieldday()->engine->display_price($data->couponDiscount).'
    • '; $summary .= '
    • '.__("Coupon Discount", "fieldday").''.fieldday()->engine->display_price($data->couponDiscount).'
    • '; }*/ $summary .= '
    '; $result .= '
' . __("Total: ", "fieldday") . '' . fieldday()->engine->display_price($data->totalPrice) . '
'; wp_send_json(['status' => 'success', 'if_discount_applied' => $if_discount_applied, 'message' => $response->message, 'data' => $result, 'isPrice' => $isPrice, 'summary' => $summary]); exit; } } else { wp_send_json(['status' => 'fail', 'message' => '', 'log' => $response, 'datablank' => 'true']); } } /**/ public function SelfCheckIn() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $ticketId = $postdata['ticketid']; $orderNo = $postdata['orderno']; $apidata['ticketid'] = $apiPostData['ticketId'] = $ticketId; $apidata['orderno'] = $apiPostData['orderNo'] = $orderNo; $apiPostData['offset'] = $fielddaySetting['offset']; //330; $response = fieldday()->api->SelfCheckIn($apiPostData); if ($response->statusCode === 201) { $ticketdetails = fieldday()->api->GetTicketDetail($apidata); if ($ticketdetails->statusCode === 200) { $content = fieldday()->engine->getView('checkout/self_checkin_success', ['ticketId' => $ticketId, 'ticketdata' => $ticketdetails->data]); wp_send_json(['status' => 'success', 'content' => $content]); } } else { wp_send_json(['status' => 'fail', 'message' => $response->message]); } exit; } /**/ public function PullTicket() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $ticket_email = $postdata['ticket_email']; $ticket_phone = $postdata['ticket_phone']; $countrycode = $postdata['user-country-code']; if ($ticket_email) { $apiPostData['email'] = $ticket_email; } if ($ticket_phone) { $apiPostData['countryCode'] = $countrycode; $apiPostData['phone'] = trim($ticket_phone); } $apiPostData['offset'] = $fielddaySetting['offset']; //330; $ticketdetails = fieldday()->api->PullTicketAPI($apiPostData); if ($ticketdetails->statusCode === 200) { $ticketid = $ticketdetails->data->booking->ticketId; $content = fieldday()->engine->getView('checkin', ['ticketid' => $ticketid, 'ticketdata' => $ticketdetails->data]); wp_send_json(['status' => 'success', 'content' => $content]); } else { $content = fieldday()->engine->getView('checkin', ['notfound' => 'true']); wp_send_json(['status' => 'success', 'content' => $content]); } } public function ContactForm() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'message' => __('reCAPTCHA invalid')]); } $apiPostData = []; $apiPostData['firstName'] = $postdata['cont_name']; $apiPostData['lastName'] = $postdata['cont_lname']; $apiPostData['email'] = $postdata['cont_email']; $apiPostData['countryCode'] = $postdata['user-country-code']; $apiPostData['phone'] = str_replace(' ', '', $postdata['personal_phone']); $apiPostData['message'] = $postdata['cont_message']; $ContactForm = fieldday()->api->ContactFormAPI($apiPostData); if ($ContactForm->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => 'Thank you! your request is submitted successfully.']); } else { wp_send_json(['status' => 'fail', 'message' => $ContactForm->message]); } exit; } public function refundFormEventSession() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $apiPostData = []; $apiPostData['selectedOption'] = $postdata['order_refund']; $apiPostData['newSessionId'] = $postdata['newSessionId']; $ticketId = $postdata['ticketId']; $eventId = $postdata['eventId']; $providerId = $postdata['providerId']; $refundFormEventSession = fieldday()->api->refundFormEventSessionAPI($apiPostData, $ticketId, $eventId, $providerId); if ($refundFormEventSession->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => 'Thank you! your request is submitted successfully.']); } else { wp_send_json(['status' => 'fail', 'message' => $refundFormEventSession->message]); } exit; } public function RequestDemoForm() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'message' => __('reCAPTCHA invalid')]); } $apiPostData = []; $apiPostData['firstName'] = $postdata['cont_name']; $apiPostData['lastName'] = $postdata['cont_lname']; $apiPostData['businessName'] = $postdata['cont_businessname']; $apiPostData['email'] = $postdata['cont_email']; $apiPostData['website'] = $postdata['cont_website']; $apiPostData['countryCode'] = $postdata['user-country-code']; $apiPostData['phone'] = str_replace(' ', '', $postdata['personal_phone']); $RequestForm = fieldday()->api->RequestDemoFormAPI($apiPostData); if ($RequestForm->statusCode === 201) { wp_send_json(['status' => 'success', 'message' => 'Thank you! your request is submitted successfully.']); } else { wp_send_json(['status' => 'fail', 'message' => $RequestForm->message]); } exit; } public function PartyForm() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $token = filter_input(INPUT_POST, 'g-recaptcha-response', FILTER_SANITIZE_STRING); $recatcha = fieldday()->engine->recaptchaVerify($token); if (!$recatcha['success']) { wp_send_json(['status' => 'fail', 'message' => __('reCAPTCHA invalid')]); } $apiPostData = []; $apiPostData['firstName'] = $postdata['cont_name']; $apiPostData['email'] = $postdata['cont_email']; $apiPostData['countryCode'] = $postdata['user-country-code']; $apiPostData['phone'] = str_replace(' ', '', $postdata['personal_phone']); $message = 'Location: ' . $postdata['cont_locations'] . ' '; $message .= 'Party Planned on: ' . $postdata['cont_date'] . ' '; $message .= 'Estimated headcount: ' . $postdata['cont_estimate'] . ' '; $message .= 'Add-ons/Special Requests: ' . $postdata['cont_message']; $apiPostData['message'] = $message; $ContactForm = fieldday()->api->ContactFormAPI($apiPostData); if ($ContactForm->statusCode === 200) { wp_send_json(['status' => 'success', 'message' => 'Thank you! your request is submitted successfully.']); } else { wp_send_json(['status' => 'fail', 'message' => $ContactForm->message]); } exit; } /*To display the Sticky Element*/ public function StickyWidget() { global $fielddaySetting; $StickyOption = fieldday()->engine->getValue('fieldday_sticky_option', $fielddaySetting, false); if ($StickyOption) { $content = fieldday()->engine->getView($StickyOption, ['captcha' => 'c-recaptch', 'phoneID' => 'phoneS']); wp_send_json(['status' => 'success', 'content' => $content]); } exit; } /*Event Purchase*/ public function EventPurchase() { global $fielddaySetting; $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'] ?? 'false'; $countrycode = $postdata['user-country-code']; $event_discount = $postdata['ATC']['event_discount']; $eventpromocode = $postdata['eventpromocode']; if (isset($postdata['parent']['name']) || isset($postdata['parent']['lname'])) { $km_full_name = $postdata['parent']['name'] . ' ' . $postdata['parent']['lname']; $apiPostData['parent']['name'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $km_full_name); } if (isset($postdata['parent']['guestEmail'])) { $km_guestEmail = $postdata['parent']['guestEmail']; $apiPostData['parent']['guestEmail'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $km_guestEmail); } if (isset($postdata['parent']['phone'])) { $km_phone = str_replace(' ', '', $postdata['parent']['phone']); $apiPostData['parent']['phone'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $km_phone); } if (isset($postdata['user-country-code'])) { $apiPostData['parent']['countryCode'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $countrycode); } if (isset($postdata['parent']['address'])) { $km_address = $postdata['parent']['address']; $apiPostData['paymentAddress']['city'] = preg_replace(fieldday_NOT_ALLOWED_INPUT_CHAR, '', $km_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'] = $fielddaySetting['offset']; //330; if ($cardId) { $apiPostData['cardId'] = $cardId; } if (!isset($postdata['parent']['guestEmail'])) { $apiPostData['saveCard'] = $saveCard; } $apiPostData['stripeToken'] = $stripeToken; $apiPostData['paymentMethod'] = $paymentmethod; if ($event_discount == 'yes') { $apiPostData['applyMilitaryDiscount'] = 'true'; } if ($eventpromocode) { $apiPostData['couponCode'] = $eventpromocode; } $response = fieldday()->api->EventsPurchase($apiPostData); if ($response->statusCode != 201) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } else { $redirect = fieldday()->engine->ThankyouRedirect(); if (isset($redirect) && $redirect != '') { $redirect .= '?orderid=' . $response->data->_id; } wp_send_json(['status' => 'success', 'message' => $response->message, 'log' => $response, 'redirect' => $redirect]); } exit; } /*Multiweek Purchase*/ public function MultiweekPurchase() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionid = $postdata['ATC']['session_id']; $startingDate = $postdata['ATC']['startingdate']; $storeCreditUsed = $postdata['storeCreditUsed']; $daysOfWeek = $postdata['ATC']['daysOfWeek']; $kidscount = $postdata['kidscount']; $cardId = $postdata['ATC']['cardId']; $paymentMethod = $postdata['ATC']['paymentmethod']; $stripeToken = $postdata['ATC']['stripeToken']; $saveCard = $postdata['ATC']['savecard'] ?? 'false'; $kidsarray = $postdata['ATC']['kids']; $kids_ids = array(); foreach ($kidsarray as $key => $value) { array_push($kids_ids, $value['_id']); } $apiPostData = []; $apiPostData['sessionId'] = $sessionid; if ($startingDate) { $apiPostData['startingDate'] = $startingDate; } if ($daysOfWeek) { $apiPostData['daysOfWeek'] = $daysOfWeek; } if ($storeCreditUsed) { $apiPostData['storeCreditUsed'] = 'true'; $apiPostData['storeCreditId'] = $storeCreditUsed; } if ($cardId != '') { $apiPostData['cardId'] = $cardId; } if (isset($stripeToken)) { $apiPostData['stripeToken'] = $stripeToken; } $apiPostData['kidId'] = $kids_ids; $apiPostData['offset'] = $fielddaySetting['offset']; $apiPostData['saveCard'] = $saveCard; $apiPostData['paymentMethod'] = $paymentMethod; $response = fieldday()->api->MultiweekRegistrationPurchase($apiPostData); if ($response->statusCode != 200) { wp_send_json(['status' => 'fail', 'message' => $response->message, 'log' => $response]); } else { $redirect = fieldday()->engine->ThankyouRedirect(); if (isset($redirect) && $redirect != '') { $redirect .= '?orderid=' . $response->data->_id; } wp_send_json(['status' => 'success', 'message' => $response->message, 'log' => $response, 'redirect' => $redirect]); } 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; } public function MultiweekCalculations() { global $fielddaySetting; $postdata = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); $sessionid = $postdata['ATC']['session_id']; $packageid = $postdata['ATC']['package_id']; $kidsarray = $postdata['ATC']['kids']; $kidscount = $postdata['kidscount']; $daysOfWeek = $postdata['ATC']['daysOfWeek']; $startingdate = $postdata['ATC']['startingdate']; $apiPostData = []; $apidata['kidsCount'] = $kidscount; $apidata['sessionId'] = $sessionid; if ($daysOfWeek) { $apidata['daysOfWeek'] = $daysOfWeek; } if ($startingdate) { $apidata['startingDate'] = $startingdate; } $apidata['offset'] = $fielddaySetting['offset']; /*if($storeCreditUsed){ $apidata['storeCreditUsed'] = true; $apidata['storeCreditId'] = $storeCreditUsed; }*/ $response = fieldday()->api->multiWeekRegistrationsCalc($apidata); //print_r($response); if ($response->statusCode === 200 || $response->status == 'success') { wp_send_json(['status' => 'success', 'message' => $response->message, 'data' => $response->data]); 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 .= "
"; $header = 'Confirm and Pay'; wp_send_json(['status' => 'success', 'isLoggedin' => $isLoggedin, 'header' => $header, '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->GetProviderSessionsNew($queryParams); $engine = fieldday()->engine; foreach ($sessions->data->sessions as $counter => $mySession): //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();