upgraded new changes
This commit is contained in:
parent
2ba27c9ba8
commit
c22c3b1e98
@ -9,6 +9,9 @@ use Exception;
|
||||
use GuzzleHttp\Client;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use Kevinrob\GuzzleCache\CacheMiddleware;
|
||||
use Kevinrob\GuzzleCache\Strategy\GreedyCacheStrategy;
|
||||
|
||||
class Calendly
|
||||
{
|
||||
@ -117,6 +120,24 @@ class Calendly
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function getUserSlug()
|
||||
{
|
||||
// 1. Call the /users/me API to get user information
|
||||
$client = new Client();
|
||||
try {
|
||||
$response = $client->request('GET', 'https://api.calendly.com/users/me', [
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer ' . $this->accessToken(),
|
||||
'Content-Type' => 'application/json',
|
||||
]
|
||||
]);
|
||||
|
||||
$data = json_decode($response->getBody(), true);
|
||||
return $userUri = $data['resource']['slug'];
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function eventTypes()
|
||||
{
|
||||
// 1. Call the /users/me API to get user information
|
||||
@ -145,7 +166,89 @@ class Calendly
|
||||
|
||||
$setting->save();
|
||||
}
|
||||
function getAvailableDates($even_type_url, $month, $tz = "UTC")
|
||||
function mapTimezone($tz){
|
||||
$timezone_maping = [
|
||||
"PST"=> "America/Los_Angeles",
|
||||
"EST"=> "America/New_York",
|
||||
"CST"=> "America/Chicago",
|
||||
"MST"=> "America/Denver",
|
||||
"PST"=> "America/Los_Angeles",
|
||||
"AST"=> "America/Halifax",
|
||||
];
|
||||
return data_get($timezone_maping, $tz, $tz);
|
||||
}
|
||||
|
||||
function getAvailableDates($even_type_url, $month, $tz = "UTC"){
|
||||
$user_slug = $this->getUserSlug();
|
||||
//https://calendly.com/api/booking/event_types/lookup?event_type_slug=15-minute&profile_slug=vini-peptidewebmd
|
||||
//https://api.calendly.com/event_types/527074d7-c194-419a-9575-60de51220a8e/calendar/range?timezone=America/Chicago&diagnostics=false&range_start=2024-10-01&range_end=2024-10-31&scheduling_link_uuid=cmm8-rtf-7q6
|
||||
//https://calendly.com/api/booking/event_types/527074d7-c194-419a-9575-60de51220a8e/calendar/range?timezone=Asia%2FKarachi&diagnostics=false&range_start=2024-10-26&range_end=2024-10-31&scheduling_link_uuid=cmm8-rtf-7q6
|
||||
// $user_slug = explode('/', $userUri)[4];
|
||||
$client = new Client();
|
||||
|
||||
|
||||
$response = $client->request('GET', $even_type_url, [
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer ' . $this->accessToken(),
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
// 'query' => $queryParams
|
||||
]);
|
||||
$event = json_decode($response->getBody(), true);
|
||||
$web_event = json_decode($this->makeRequest("https://calendly.com/api/booking/event_types/lookup?event_type_slug={$event['resource']['slug']}&profile_slug={$user_slug}"),true);
|
||||
// var_Dump("https://calendly.com/api/booking/event_types/lookup?event_type_slug={$event['resource']['slug']}&profile_slug={$user_slug}");
|
||||
$event_slug = data_get($web_event,"uuid");
|
||||
// $eventDetails = json_decode($this->makeRequest($eventDetailsUrl));
|
||||
// $eventDetailsUrl = "https://calendly.com/api/booking/event_types/lookup?event_type_slug=$event_type&profile_slug=$owner_id";
|
||||
$current_month = Carbon::now()->month;
|
||||
$current_date = Carbon::now()->day;
|
||||
$timezone = $this->mapTimezone($tz);
|
||||
// if ($month == $current_month && $current_date > 15) {}
|
||||
$date = Carbon::createFromDate(Carbon::now()->year, $month, 1);
|
||||
// $start_date = Carbon::now()->startOfMonth()->tz("UTC");
|
||||
$start_date = $date->startOfMonth()->format('Y-m-d');
|
||||
$end_date = $date->endOfMonth()->format('Y-m-d');
|
||||
$uid = data_get($web_event,"scheduling_link.uid");
|
||||
$url = "https://calendly.com/api/booking/event_types/{$event_slug}/calendar/range?timezone=$timezone&diagnostics=false&range_start=$start_date&range_end=$end_date&scheduling_link_uuid={$uid}";
|
||||
$response = $client->request('GET', $url, [
|
||||
'headers' => [
|
||||
'Authorization' => 'Bearer ' . $this->accessToken(),
|
||||
'Content-Type' => 'application/json',
|
||||
],
|
||||
]);
|
||||
|
||||
$eventDetails = json_decode($this->makeRequest($url),true);
|
||||
$availableSlots = [];
|
||||
foreach ($eventDetails['days'] as $_event) {
|
||||
if($_event['status'] == 'available') {
|
||||
$slots = [
|
||||
// 'date' => $event['date'],
|
||||
|
||||
];
|
||||
foreach ($_event['spots'] as $slot) {
|
||||
if($slot['status'] == 'available'){
|
||||
$slotDateTime = Carbon::parse($slot['start_time'])->tz($timezone);
|
||||
$slot['formatted_datetime'] = $slotDateTime->format('Y-m-d g:i:00');
|
||||
$slot['scheduling_url'] = "https://calendly.com/$user_slug/{$event['resource']['slug']}/{$slot['start_time']}";
|
||||
}
|
||||
$slots[] = $slot;
|
||||
}
|
||||
$availableSlots[$_event['date']] = $slots;
|
||||
}
|
||||
}
|
||||
|
||||
// var_dump($eventDetails);
|
||||
return $availableSlots;
|
||||
|
||||
}
|
||||
function getAvailableDatesOld($even_type_url, $month, $tz = "UTC")
|
||||
{
|
||||
$cacheKey = $even_type_url . $month . $tz;
|
||||
return Cache::remember($cacheKey, now()->addMinutes(2), function () use ($even_type_url, $month, $tz) {
|
||||
return $this->getAvailableDates2($even_type_url, $month, $tz);
|
||||
});
|
||||
}
|
||||
function getAvailableDates2($even_type_url, $month, $tz = "UTC")
|
||||
{
|
||||
|
||||
try {
|
||||
@ -161,7 +264,6 @@ class Calendly
|
||||
$start_time = $date->startOfDay()->format('Y-m-d\T24:00:00.000000\Z');
|
||||
$end_time = $date->addDays(7)->endOfDay()->format('Y-m-d\T24:00:00.000000\Z');
|
||||
|
||||
|
||||
$client = new Client();
|
||||
try {
|
||||
|
||||
@ -172,6 +274,7 @@ class Calendly
|
||||
'start_time' => $start_time,
|
||||
'end_time' => $end_time
|
||||
];
|
||||
// dd($queryParams);
|
||||
$str = "event_type=" . urlencode($queryParams['event_type']) . "&" . "start_time=" . urlencode($queryParams['start_time']) . "&" . "end_time=" . urlencode($queryParams['end_time']);
|
||||
$eventTypeUrl = $eventTypeUrl . "?" . ($str);
|
||||
// Send the request to Calendly
|
||||
@ -252,12 +355,15 @@ class Calendly
|
||||
|
||||
function getCrfToken($url)
|
||||
{
|
||||
$response = $this->makeRequest($url);
|
||||
|
||||
// var_dump($response);
|
||||
//<meta name="csrf-token" content="mTW6eNk5xiDTzby7yHl_iVTO1_pi-CXZ2U9MYPcXGJGMpksW4iGLJniNxs-T4xrmYlLbXFaLuU8FZ75cuorz8w" />
|
||||
preg_match('/<meta name="csrf-token" content="(.*?)" \/>/', $response, $matches);
|
||||
return $matches[1];
|
||||
try {
|
||||
$response = $this->makeRequest($url);
|
||||
preg_match('/<meta name="csrf-token" content="(.*?)" \/>/', $response, $matches);
|
||||
return $matches[1];
|
||||
} catch (Exception $e) {
|
||||
$response = $this->makeRequest($url);
|
||||
preg_match('/<meta name="csrf-token" content="(.*?)" \/>/', $response, $matches);
|
||||
return $matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
function getEventDetails($url)
|
||||
@ -284,14 +390,16 @@ class Calendly
|
||||
$bookingDate = $url_parts[5];
|
||||
$event_type = $url_parts[4];
|
||||
$owner_id = $url_parts[3];
|
||||
$eventDetailsUrl = "https://calendly.com/api/booking/profiles/$owner_id/event_types/$event_type";
|
||||
$eventDetailsUrl = "https://calendly.com/api/booking/event_types/lookup?event_type_slug=$event_type&profile_slug=$owner_id";
|
||||
$eventDetails = json_decode($this->makeRequest($eventDetailsUrl));
|
||||
// var_dump($eventDetails);
|
||||
$crfToken = $this->getCrfToken($url);
|
||||
|
||||
$eventUuid = $eventDetails->uuid;
|
||||
$link_uuid = $eventDetails->scheduling_link->uid;
|
||||
$custom_fields_id = $eventDetails->custom_fields[0]->id;
|
||||
$timezone = $this->mapTimezone($timezone);
|
||||
// $eventUuid = $eventDetails->uuid;
|
||||
$eventUuid = data_get($eventDetails, 'eventDetails.uid');
|
||||
$link_uuid = data_get($eventDetails, 'scheduling_link.uid');
|
||||
// $custom_fields_id = $eventDetails->custom_fields[0]->id;
|
||||
$custom_fields_id = data_get($eventDetails, 'custom_fields.0.id');
|
||||
$booking_request_id = urlencode($this->generateRandomString(36) . "|$bookingDate|$eventUuid|$name");
|
||||
//convert to php array
|
||||
$bookingData = [
|
||||
@ -305,14 +413,14 @@ class Calendly
|
||||
"booking_flow" => "v3",
|
||||
"seconds_to_convert" => 200
|
||||
],
|
||||
"embed" => [],
|
||||
"embed" => (object)[],
|
||||
"event" => [
|
||||
"start_time" => $bookingDate,
|
||||
"location_configuration" => [
|
||||
"location_configuration" => data_get($eventDetails,"location_configurations.0",[
|
||||
"location" => "",
|
||||
"phone_number" => "",
|
||||
"additional_info" => ""
|
||||
],
|
||||
]),
|
||||
"guests" => []
|
||||
],
|
||||
"event_fields" => [
|
||||
@ -333,7 +441,7 @@ class Calendly
|
||||
"full_name" => $name,
|
||||
"email" => $email
|
||||
],
|
||||
"payment_token" => [],
|
||||
"payment_token" => (object)[],
|
||||
"tracking" => [
|
||||
"fingerprint" => $this->generateRandomString(32)
|
||||
],
|
||||
|
@ -1705,9 +1705,9 @@ class PatientController extends Controller
|
||||
}
|
||||
public function planProductUpdateMultiple(Request $request)
|
||||
{
|
||||
$products = $request->input('products');
|
||||
$products = $request->input('body');
|
||||
|
||||
foreach ($products as $productData) {
|
||||
foreach ($products['products'] as $productData) {
|
||||
$product_id = $productData['product_id'];
|
||||
$product_name = $productData['product_name'];
|
||||
$product_slug = $productData['product_slug'];
|
||||
@ -1715,10 +1715,7 @@ class PatientController extends Controller
|
||||
$product_category = $productData['product_category'];
|
||||
$product_image = $productData['product_image'];
|
||||
|
||||
self::product_category($product_category,$product_id);
|
||||
|
||||
$plan = PlanV1::find($product_id);
|
||||
|
||||
if ($plan) {
|
||||
// Update existing product
|
||||
$plan->title = $product_name;
|
||||
@ -1744,6 +1741,7 @@ class PatientController extends Controller
|
||||
$plan->price = $product_price;
|
||||
$plan->save();
|
||||
}
|
||||
self::product_category($product_category,$product_id);
|
||||
}
|
||||
return response()->json(['message' => 'Products updated successfully']);
|
||||
}
|
||||
@ -1771,7 +1769,6 @@ class PatientController extends Controller
|
||||
$categorySave->category_name = $category_name[$key];
|
||||
$categorySave->save();
|
||||
}
|
||||
|
||||
ProductCategory::create([
|
||||
'product_id' => $product_id,
|
||||
'category_id' => $cat_id
|
||||
|
@ -43,5 +43,13 @@ class SendAppointmentBookedEmail implements ShouldQueue
|
||||
$message->to($patient->email, $patient->first_name)
|
||||
->subject('Appointment Booked.');
|
||||
});
|
||||
Mail::send('emails.appointmentBooked', [
|
||||
'patient' => $patient,
|
||||
'appointment' => $appointment,
|
||||
'setting' => $setting
|
||||
], function ($message) use ($patient) {
|
||||
$message->to(ENV('ADMIN_EMAIL'), $patient->first_name)
|
||||
->subject('Appointment Booked.');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -28,5 +28,9 @@ class SendPaymentProcessedEmail implements ShouldQueue
|
||||
$message->to($patient->email, $patient->first_name)
|
||||
->subject('Payment Processed Successfully.');
|
||||
});
|
||||
Mail::send('emails.process-payment', [], function ($message) {
|
||||
$message->to(ENV('ADMIN_EMAIL'), "Awais")
|
||||
->subject('Payment Processed Successfully.');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
"agence104/livekit-server-sdk": "^1.2",
|
||||
"fakerphp/faker": "^1.23",
|
||||
"guzzlehttp/guzzle": "^7.2",
|
||||
"kevinrob/guzzle-cache-middleware": "^5.1",
|
||||
"laravel/framework": "^10.10",
|
||||
"laravel/sanctum": "^3.2",
|
||||
"laravel/tinker": "^2.8",
|
||||
|
87
composer.lock
generated
87
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "ef6cab73e6119be26c66ac2906eef800",
|
||||
"content-hash": "1302f567ac93a1fe133298b2a9441d06",
|
||||
"packages": [
|
||||
{
|
||||
"name": "agence104/livekit-server-sdk",
|
||||
@ -1397,6 +1397,91 @@
|
||||
],
|
||||
"time": "2023-12-03T19:50:20+00:00"
|
||||
},
|
||||
{
|
||||
"name": "kevinrob/guzzle-cache-middleware",
|
||||
"version": "v5.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Kevinrob/guzzle-cache-middleware.git",
|
||||
"reference": "6bd64dbbe5155107d84a0f67140a8822a709c6d0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Kevinrob/guzzle-cache-middleware/zipball/6bd64dbbe5155107d84a0f67140a8822a709c6d0",
|
||||
"reference": "6bd64dbbe5155107d84a0f67140a8822a709c6d0",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/guzzle": "^6.0 || ^7.0",
|
||||
"guzzlehttp/promises": "^1.4 || ^2.0",
|
||||
"guzzlehttp/psr7": "^1.7.0 || ^2.0.0",
|
||||
"php": ">=7.2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"cache/array-adapter": "^0.4 || ^0.5 || ^1.0",
|
||||
"cache/simple-cache-bridge": "^0.1 || ^1.0",
|
||||
"doctrine/cache": "^1.10",
|
||||
"illuminate/cache": "^5.0",
|
||||
"league/flysystem": "^2.5",
|
||||
"phpunit/phpunit": "^8.5.15 || ^9.5",
|
||||
"psr/cache": "^1.0",
|
||||
"symfony/cache": "^4.4 || ^5.0",
|
||||
"symfony/phpunit-bridge": "^4.4 || ^5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"doctrine/cache": "This library has a lot of ready-to-use cache storage (to be used with Kevinrob\\GuzzleCache\\Storage\\DoctrineCacheStorage). Use only versions >=1.4.0 < 2.0.0",
|
||||
"guzzlehttp/guzzle": "For using this library. It was created for Guzzle6 (but you can use it with any PSR-7 HTTP client).",
|
||||
"laravel/framework": "To be used with Kevinrob\\GuzzleCache\\Storage\\LaravelCacheStorage",
|
||||
"league/flysystem": "To be used with Kevinrob\\GuzzleCache\\Storage\\FlysystemStorage",
|
||||
"psr/cache": "To be used with Kevinrob\\GuzzleCache\\Storage\\Psr6CacheStorage",
|
||||
"psr/simple-cache": "To be used with Kevinrob\\GuzzleCache\\Storage\\Psr16CacheStorage"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Kevinrob\\GuzzleCache\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kevin Robatel",
|
||||
"email": "kevinrob2@gmail.com",
|
||||
"homepage": "https://github.com/Kevinrob"
|
||||
}
|
||||
],
|
||||
"description": "A HTTP/1.1 Cache for Guzzle 6. It's a simple Middleware to be added in the HandlerStack. (RFC 7234)",
|
||||
"homepage": "https://github.com/Kevinrob/guzzle-cache-middleware",
|
||||
"keywords": [
|
||||
"Etag",
|
||||
"Flysystem",
|
||||
"Guzzle",
|
||||
"cache",
|
||||
"cache-control",
|
||||
"doctrine",
|
||||
"expiration",
|
||||
"guzzle6",
|
||||
"handler",
|
||||
"http",
|
||||
"http 1.1",
|
||||
"middleware",
|
||||
"performance",
|
||||
"php",
|
||||
"promise",
|
||||
"psr6",
|
||||
"psr7",
|
||||
"rfc7234",
|
||||
"validation"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/Kevinrob/guzzle-cache-middleware/issues",
|
||||
"source": "https://github.com/Kevinrob/guzzle-cache-middleware/tree/v5.1.0"
|
||||
},
|
||||
"time": "2023-11-09T06:53:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v10.48.12",
|
||||
|
BIN
public/product/test.png
Normal file
BIN
public/product/test.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
BIN
public/product/testTest.png
Normal file
BIN
public/product/testTest.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
File diff suppressed because one or more lines are too long
@ -65,14 +65,14 @@ const handleNavScroll = evt => {
|
||||
<VImg :src="seetingPlanLogo" width="150" height="50" class="logo-img" />
|
||||
</h1>
|
||||
</RouterLink>
|
||||
<RouterLink to="/" v-if="currentUser == 'patient'"
|
||||
<a href="https://rejuvallife.com/" v-if="currentUser == 'patient'"
|
||||
class="app-logo d-flex align-center gap-x-3 app-title-wrapper">
|
||||
<!-- <div class="d-flex " /> -->
|
||||
|
||||
<h1 class="leading-normal text-primary" style="margin-right: 27px;">
|
||||
<VImg :src="seetingPlanLogo" width="150" height="50" class="logo-img" />
|
||||
</h1>
|
||||
</RouterLink>
|
||||
</a>
|
||||
</slot>
|
||||
</div>
|
||||
<slot name="before-nav-items">
|
||||
|
@ -146,6 +146,7 @@ const logout = () => {
|
||||
localStorage.removeItem("selectedSidebarMenu");
|
||||
localStorage.removeItem("plan_name");
|
||||
localStorage.removeItem("plan_price");
|
||||
localStorage.removeItem("getCalendlyAvailableTImes");
|
||||
if (currentUser.value == "agent") {
|
||||
router.push("/provider/login");
|
||||
} else {
|
||||
|
@ -1,14 +1,21 @@
|
||||
<script setup>
|
||||
import axios from '@axios';
|
||||
const seetingFooterText = ref();
|
||||
const constact = () => {
|
||||
// window.open('/terms-and-conditions', '_blank');
|
||||
window.open('https://rejuvallife.com/contact/')
|
||||
};
|
||||
const gotoTermsCondition = () => {
|
||||
window.open('/terms-and-conditions', '_blank');
|
||||
// window.open('/terms-and-conditions', '_blank');
|
||||
window.open('https://rejuvallife.com/terms-conditions/')
|
||||
};
|
||||
const gotoPrivacyPolicy = () => {
|
||||
window.open('/privacy-policy', '_blank');
|
||||
// window.open('/privacy-policy', '_blank');
|
||||
window.open('https://rejuvallife.com/privacy-policy/')
|
||||
};
|
||||
const gotoRefundPolicy = () => {
|
||||
window.open('/refund-policy', '_blank');
|
||||
// window.open('/refund-policy', '_blank');
|
||||
window.open('https://rejuvallife.com/refund_returns/')
|
||||
};
|
||||
onMounted(async () => {
|
||||
|
||||
@ -25,7 +32,7 @@ onMounted(async () => {
|
||||
</span>
|
||||
<!-- 👉 Footer: right content -->
|
||||
<div class="d-flex align-center">
|
||||
<a type="button" class="mr-3 ">Contact Us</a>
|
||||
<a type="button" class="mr-3 " @click="constact()">Contact Us</a>
|
||||
<a type="button" class="mr-3 " @click="gotoTermsCondition()">Terms & Conditions</a>
|
||||
<a type="button" class="mr-3 " @click="gotoPrivacyPolicy()">Privacy Policy</a>
|
||||
<a type="button" class="" @click="gotoRefundPolicy()">Refund Policy</a>
|
||||
|
@ -16,7 +16,7 @@ const props = defineProps({
|
||||
<v-spacer></v-spacer>
|
||||
|
||||
<!-- Links on the right -->
|
||||
<v-btn text color="black" href="#">Live Chat</v-btn>
|
||||
<!-- <v-btn text color="black" href="#">Live Chat</v-btn> -->
|
||||
<v-btn text color="black" href="https://rejuvallife.com/contact/" target="_blank">Contact Us</v-btn>
|
||||
</v-app-bar>
|
||||
|
||||
|
@ -610,7 +610,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
@ -651,7 +651,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.total-font {
|
||||
|
@ -260,7 +260,11 @@ const getMonthName = (monthNumber, year = new Date().getFullYear()) => {
|
||||
const getFormattedDatetimes = (date) => {
|
||||
// Ensure the date is in the format "YYYY-MM-DD"
|
||||
const formattedDate = date.replace(/\//g, '-');
|
||||
let obj = store.getters.getCalendlyAvailableTImes
|
||||
let obj = [];
|
||||
if(!store.getters.getCalendlyAvailableTImes)
|
||||
obj = JSON.parse(localStorage.getItem('getCalendlyAvailableTImes'))
|
||||
else
|
||||
obj = store.getters.getCalendlyAvailableTImes
|
||||
console.log('//////formattedDate',formattedDate,obj)
|
||||
// Check if the date exists in the object
|
||||
if (obj.hasOwnProperty(formattedDate)) {
|
||||
@ -488,6 +492,7 @@ const scheduleEvent = async () => {
|
||||
timeSlotString: timeSlotString.value,
|
||||
url:getSchedulingUrl(store.getters.getCalendlyAvailableTImes,calanderFormatedDate.value,isTimeSlot.value),
|
||||
}
|
||||
console.log('>>>apptData',apptData)
|
||||
// await openSchedulingURL(apptData.appointment_date, apptData.appointment_time);
|
||||
localStorage.setItem('patient_appointment_details', JSON.stringify(apptData))
|
||||
console.log(JSON.parse(localStorage.getItem('patient_appointment_details')))
|
||||
@ -648,7 +653,7 @@ const backFun = () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup>
|
||||
<!-- <StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup> -->
|
||||
<VDialog v-model="store.getters.getIsLoading" width="110" height="150" color="primary">
|
||||
<VCardText class="" style="color: white !important;">
|
||||
<div class="demo-space-x">
|
||||
@ -935,7 +940,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
@ -975,7 +980,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.total-font {
|
||||
|
@ -258,7 +258,6 @@ const validatePayment = async () => {
|
||||
if (isValid) {
|
||||
await saveOrderInfo()
|
||||
await processPayment()
|
||||
|
||||
// await updatePatientAddress()
|
||||
// if (prescreptionRequired.value)
|
||||
if (!store.getters.getErrorMessage) {
|
||||
@ -269,7 +268,6 @@ const validatePayment = async () => {
|
||||
}, 5000)
|
||||
}
|
||||
}
|
||||
|
||||
// else
|
||||
// router.replace(route.query.to && route.query.to != '/checkout' ? String(route.query.to) : '/thankyou')
|
||||
}
|
||||
@ -447,7 +445,7 @@ const backFun = () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup>
|
||||
<!-- <StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup> -->
|
||||
<VDialog v-model="store.getters.getIsLoading" width="110" height="150" color="yellow-theme-button">
|
||||
<VCardText class="" style="color: white !important;">
|
||||
<div class="demo-space-x">
|
||||
@ -603,7 +601,6 @@ const backFun = () => {
|
||||
<v-card>
|
||||
<v-card-text>
|
||||
<div class="mt-2 mb-2">
|
||||
<h4>We've Found a Match from your Address.</h4>
|
||||
<small>Select the correct address that match your current
|
||||
address</small>
|
||||
</div>
|
||||
@ -670,7 +667,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
@ -710,7 +707,7 @@ const backFun = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.total-font {
|
||||
|
@ -8,7 +8,7 @@ const router = useRouter()
|
||||
const route = useRoute()
|
||||
const cartEncoded = ref(
|
||||
{
|
||||
"gender": "male",
|
||||
"gender": "Male",
|
||||
"doctor_visit": "89.00",
|
||||
"products": [
|
||||
{
|
||||
|
@ -763,17 +763,17 @@ const formatDate = (date) => {
|
||||
to="/queue"
|
||||
target="_blank"
|
||||
>
|
||||
<VBtn
|
||||
<!-- <VBtn
|
||||
style="border-radius: 20px"
|
||||
block
|
||||
class="mt-3 text-white"
|
||||
color="rgb(var(--v-theme-yellow-theme-button))"
|
||||
>
|
||||
Go to Meeting
|
||||
</VBtn>
|
||||
</VBtn> -->
|
||||
</RouterLink>
|
||||
<span v-else>
|
||||
<VBtn
|
||||
<!-- <VBtn
|
||||
block
|
||||
style="border-radius: 20px"
|
||||
class="mt-3 text-white"
|
||||
@ -781,7 +781,7 @@ const formatDate = (date) => {
|
||||
disabled
|
||||
>
|
||||
Go to Meeting
|
||||
</VBtn>
|
||||
</VBtn> -->
|
||||
</span>
|
||||
</VCardText>
|
||||
</div>
|
||||
|
@ -689,7 +689,7 @@ const formatTotalCurrency = (amount) => {
|
||||
}}</span>
|
||||
</div>
|
||||
<span v-if="isMeeting">
|
||||
<RouterLink to="/queue" target="_blank">
|
||||
<!-- <RouterLink to="/queue" target="_blank">
|
||||
<VBtn
|
||||
style="border-radius: 20px; color: #fff"
|
||||
block
|
||||
@ -698,17 +698,17 @@ const formatTotalCurrency = (amount) => {
|
||||
>
|
||||
Go to Meeting
|
||||
</VBtn>
|
||||
</RouterLink>
|
||||
</RouterLink> -->
|
||||
</span>
|
||||
<span v-else>
|
||||
<VBtn
|
||||
<!-- <VBtn
|
||||
block
|
||||
style="border-radius: 20px; color: #fff"
|
||||
class="mt-3"
|
||||
color="rgb(var(--v-theme-yellow-theme-button))"
|
||||
disabled
|
||||
>Go to Meeting
|
||||
</VBtn>
|
||||
</VBtn> -->
|
||||
</span>
|
||||
</div>
|
||||
</VCardText>
|
||||
|
@ -220,7 +220,7 @@ const convertUtcDateTimeToLocal = (utcDate, utcTime, type) => {
|
||||
<VSpacer />
|
||||
|
||||
<div class="d-flex flex-column text-sm-end gap-2">
|
||||
<div class="order-sm-0 order-1 pt-0 mt-3">
|
||||
<!-- <div class="order-sm-0 order-1 pt-0 mt-3">
|
||||
<RouterLink v-if="isMeetingEnable" to="/queue" target="_blank">
|
||||
<VBtn color="primary" class="me-2">
|
||||
Go to Meeting
|
||||
@ -230,7 +230,7 @@ const convertUtcDateTimeToLocal = (utcDate, utcTime, type) => {
|
||||
<VBtn class="" color="primary" disabled>Go to Meeting
|
||||
</VBtn>
|
||||
</span>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- <span class="mt-auto order-sm-1 order-0">Card expires at {{ card.expiry }}</span> -->
|
||||
</div>
|
||||
|
@ -927,7 +927,7 @@ const formatTotalCurrency = (amount) => {
|
||||
</v-list>
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-card-text>
|
||||
<!-- <v-card-text>
|
||||
<RouterLink
|
||||
to="/queue"
|
||||
target="_blank"
|
||||
@ -952,7 +952,7 @@ const formatTotalCurrency = (amount) => {
|
||||
>Go to Meeting
|
||||
</VBtn>
|
||||
</span>
|
||||
</v-card-text>
|
||||
</v-card-text> -->
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
@ -207,7 +207,7 @@ const changeEmailSignUp = () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup>
|
||||
<!-- <StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup> -->
|
||||
<VDialog v-model="store.getters.getIsLoading" width="110" height="150" color="primary">
|
||||
|
||||
<VCardText class="" style="color: white !important;">
|
||||
@ -375,7 +375,7 @@ const changeEmailSignUp = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
|
@ -17,6 +17,7 @@ import {
|
||||
import { onBeforeMount, onMounted, onUnmounted } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { useStore } from 'vuex';
|
||||
import { VDateInput } from 'vuetify/lib/labs/components.mjs';
|
||||
const store = useStore()
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
@ -374,7 +375,7 @@ const isUserAuthenticate = () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup>
|
||||
<!-- <StartOverPupup :showPopup="store.getters.getShowStartOverPupup"></StartOverPupup> -->
|
||||
<!-- <HeaderTopBar></HeaderTopBar> -->
|
||||
<VContainer fluid :class="isMobile ? '' : 'container-padding'">
|
||||
<VRow style="min-height: 65px;"><CustomNav :logo='seetingPlanLogo'></CustomNav></VRow>
|
||||
@ -453,8 +454,19 @@ const isUserAuthenticate = () => {
|
||||
placeholder="i.e. (000) 000-0000" @input="formatPhoneNumber" max="14" density="comfortable" />
|
||||
</VCol>
|
||||
<VCol cols="12" md="4">
|
||||
<VTextField v-model="dob" :max="getCurrentDate()" label="Date of Birth" placeholder="Date of Birth"
|
||||
type="date" :rules="[requiredDate]" :error-messages="errors.dob" density="comfortable" />
|
||||
<!-- <v-date-input v-model="dob" :max="getCurrentDate()" label="Date of Birth" placeholder="Date of Birth"
|
||||
:rules="[requiredDate]" :error-messages="errors.dob" density="comfortable" prepend-icon=""
|
||||
variant="solo"></v-date-input> -->
|
||||
<v-date-input
|
||||
v-model="dob"
|
||||
:max="getCurrentDate()"
|
||||
:rules="[requiredDate]" :error-messages="errors.dob"
|
||||
label="Date of Birth"
|
||||
placeholder="Date of Birth"
|
||||
prepend-icon=""
|
||||
variant="outlined"
|
||||
density="comfortable"
|
||||
></v-date-input>
|
||||
</VCol>
|
||||
|
||||
</VRow>
|
||||
@ -489,7 +501,7 @@ const isUserAuthenticate = () => {
|
||||
<h4>Personal Information</h4>
|
||||
</VCol>
|
||||
<VCol cols="12" md="4">
|
||||
<VTextField v-model="dob" :max="getCurrentDate()" label="Date of Birth" placeholder="Date of Birth"
|
||||
<VDateInput v-model="dob" :max="getCurrentDate()" label="Date of Birth" placeholder="Date of Birth"
|
||||
type="date" :rules="[requiredDate]" :error-messages="errors.dob" />
|
||||
</VCol>
|
||||
<VCol cols="12" md="4">
|
||||
@ -518,7 +530,7 @@ const isUserAuthenticate = () => {
|
||||
<VCheckbox v-model="termAndCondtiton" :error-messages="errors.termAndCondtiton"
|
||||
:rules="[requiredValidator]" label="I agree to the Terms and Conditions" />
|
||||
<VCheckbox v-model="receviceSMs" :error-messages="errors.receviceSMs" :rules="[requiredValidator]"
|
||||
label="I agree to receive via SMS news and special offers" />
|
||||
label="I agree to receive SMS and Email Notifications." />
|
||||
<!-- <VCheckbox v-model="isPolicy" :error-messages="errors.isPolicy" :rules="[requiredValidator]"
|
||||
label="I agree to the Privacy Policy" /> -->
|
||||
<!-- <VCheckbox v-model="isPolicy" :rules="[requiredValidator]" :error-messages="errors.isPolicy">
|
||||
@ -665,7 +677,7 @@ const isUserAuthenticate = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
@ -714,7 +726,7 @@ const isUserAuthenticate = () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.total-font {
|
||||
|
@ -38,6 +38,12 @@ const access_token = localStorage.getItem("access_token");
|
||||
const appointmentDetails = JSON.parse(
|
||||
localStorage.getItem("patient_appointment_details")
|
||||
);
|
||||
const timezoneMap = {
|
||||
'EST': 'America/New_York',
|
||||
'PST': 'America/Los_Angeles',
|
||||
'CST': 'America/Chicago',
|
||||
'MST': 'America/Denver'
|
||||
};
|
||||
onBeforeMount(async () => {
|
||||
store.dispatch("updateIsLoading", true);
|
||||
store.dispatch("updateCurrentPage", "review-appointment");
|
||||
@ -82,15 +88,30 @@ onBeforeMount(async () => {
|
||||
dob.value = `${parts[1]}-${parts[2]}-${parts[0]}`;
|
||||
|
||||
const appointment_date = new Date(appointmentDetails.appointment_date);
|
||||
const formattedDate = new Intl.DateTimeFormat("en-US", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
}).format(appointment_date);
|
||||
console.log("formattedDate", formattedDate);
|
||||
scheduleDate.value = formattedDate;
|
||||
// const formattedDate = new Intl.DateTimeFormat("en-US", {
|
||||
// year: "numeric",
|
||||
// month: "long",
|
||||
// day: "numeric",
|
||||
// }).format(appointment_date);
|
||||
// console.log("formattedDate", formattedDate);
|
||||
scheduleDate.value = formatDate(appointmentDetails.appointment_date);
|
||||
console.log('formatWithTimeZone',formatDate(appointmentDetails.appointment_date))
|
||||
store.dispatch("updateIsLoading", false);
|
||||
});
|
||||
const formatDate = (dateStr) => {
|
||||
const months = [
|
||||
"January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"
|
||||
];
|
||||
|
||||
// Split the input date string by the hyphen
|
||||
const [year, month, day] = dateStr.split("-");
|
||||
|
||||
// Convert month from "10" to "October" (month - 1 as months array is 0-based)
|
||||
const formattedDate = `${months[parseInt(month) - 1]} ${parseInt(day)}, ${year}`;
|
||||
|
||||
return formattedDate;
|
||||
};
|
||||
onMounted(async () => {
|
||||
let setting = await axios.post("/api/settings", {});
|
||||
console.log(setting.data);
|
||||
@ -170,9 +191,9 @@ const confirmFun = async () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<StartOverPupup
|
||||
<!-- <StartOverPupup
|
||||
:showPopup="store.getters.getShowStartOverPupup"
|
||||
></StartOverPupup>
|
||||
></StartOverPupup> -->
|
||||
<VDialog
|
||||
v-model="store.getters.getIsLoading"
|
||||
width="110"
|
||||
@ -262,8 +283,7 @@ const confirmFun = async () => {
|
||||
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
We will email you telehealth instructions. This is
|
||||
your appointment to confirm it.
|
||||
We will email you the telehealth instructions shortly. Please confirm your appointment by clicking the button below.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -342,7 +362,7 @@ const confirmFun = async () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.total-font {
|
||||
@ -396,7 +416,7 @@ const confirmFun = async () => {
|
||||
}
|
||||
|
||||
.bg-custom-color {
|
||||
background: #f1e7e4;
|
||||
background: #fedfde;
|
||||
}
|
||||
|
||||
.bg-white bg-change-bk .current-plan {
|
||||
|
@ -445,7 +445,6 @@ const backFun = () => {
|
||||
<v-card>
|
||||
<v-card-text>
|
||||
<div class="mt-2 mb-2">
|
||||
<h4>We've Found a Match from your Address.</h4>
|
||||
<small>Select the correct address that match your current
|
||||
address</small>
|
||||
</div>
|
||||
|
@ -33,7 +33,7 @@ const theme = {
|
||||
'perfect-scrollbar-thumb': '#DBDADE',
|
||||
'skin-bordered-background': '#fff',
|
||||
'skin-bordered-surface': '#fff',
|
||||
'yellow': '#f1e7e4',
|
||||
'yellow': '#fedfde',
|
||||
'yellow-theme-button': '#f84791',
|
||||
'footer': '#212121'
|
||||
},
|
||||
|
@ -1046,6 +1046,7 @@ export default createStore({
|
||||
.then((response) => {
|
||||
commit("setLoading", false);
|
||||
commit("setRedirectTo", "review-appointment");
|
||||
localStorage.setItem('getCalendlyAvailableTImes',JSON.stringify(response.data.slots))
|
||||
commit("setCalendlyAvailableTImes", response.data.slots);
|
||||
})
|
||||
.catch((error) => {
|
||||
|
@ -108,7 +108,7 @@ const illustrationJohn = computed(() => global.name.value === 'dark' ? illustrat
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<VBtn class="mt-3" color="rgb(var(--v-theme-yellow))">Go to Meeting</VBtn>
|
||||
<!-- <VBtn class="mt-3" color="rgb(var(--v-theme-yellow))">Go to Meeting</VBtn> -->
|
||||
<!-- 👉 Person Actions -->
|
||||
</div>
|
||||
|
||||
|
@ -8,14 +8,24 @@ const date = ref()
|
||||
const initialize = () => {
|
||||
date.value = new Date().getFullYear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
const constact = () => {
|
||||
// window.open('/terms-and-conditions', '_blank');
|
||||
window.open('https://rejuvallife.com/contact/')
|
||||
};
|
||||
const gotoTermsCondition = () => {
|
||||
router.push('/terms-and-conditions');
|
||||
// window.open('/terms-and-conditions', '_blank');
|
||||
window.open('https://rejuvallife.com/terms-conditions/')
|
||||
};
|
||||
const gotoPrivacyPolicy = () => {
|
||||
router.push('/privacy-policy');
|
||||
// window.open('/privacy-policy', '_blank');
|
||||
window.open('https://rejuvallife.com/privacy-policy/')
|
||||
};
|
||||
const gotoRefundPolicy = () => {
|
||||
router.push('/refund-policy');
|
||||
// window.open('/refund-policy', '_blank');
|
||||
window.open('https://rejuvallife.com/refund_returns/')
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
@ -107,7 +117,7 @@ const gotoRefundPolicy = () => {
|
||||
<!-- <span>Message and data rates may apply</span> -->
|
||||
</div>
|
||||
<div class="contact-icons">
|
||||
<a href="#">Contact Us</a>
|
||||
<a @click="constact()">Contact Us</a>
|
||||
</div>
|
||||
<div class="contact-icons">
|
||||
<a type="button" @click="gotoTermsCondition()">Terms & Conditions</a>
|
||||
|
@ -123,7 +123,7 @@ const isAgentCall = () => {
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<RouterLink v-if="!isDisableMeeting" to="/queue">
|
||||
<!-- <RouterLink v-if="!isDisableMeeting" to="/queue">
|
||||
<VBtn class="mt-3" color="rgb(var(--v-theme-yellow))">
|
||||
Go to Meeting Test{{ callEnd }}
|
||||
</VBtn>
|
||||
@ -132,7 +132,7 @@ const isAgentCall = () => {
|
||||
<VBtn class="mt-3" color="rgb(var(--v-theme-yellow))" disabled>Go to
|
||||
Meeting Disabled
|
||||
</VBtn>
|
||||
</span>
|
||||
</span> -->
|
||||
<!-- <RouterLink to="/meeting">
|
||||
<VBtn class="mt-3" color="error" :disabled="isDisableMeeting">Go to Meeting
|
||||
</VBtn>
|
||||
|
@ -216,7 +216,7 @@ const togglePanel = (index) => {
|
||||
<VBtn class="mt-3" color="error">Go to Meeting
|
||||
</VBtn>
|
||||
</RouterLink> -->
|
||||
<RouterLink v-if="isMeetingEnable" to="/queue" target="_blank">
|
||||
<!-- <RouterLink v-if="isMeetingEnable" to="/queue" target="_blank">
|
||||
<VBtn class="mt-3" color="rgb(var(--v-theme-yellow))">
|
||||
Go to Meeting
|
||||
</VBtn>
|
||||
@ -224,7 +224,7 @@ const togglePanel = (index) => {
|
||||
<span v-else>
|
||||
<VBtn class="mt-3" color="rgb(var(--v-theme-yellow))" disabled>Go to Meeting
|
||||
</VBtn>
|
||||
</span>
|
||||
</span> -->
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
<script setup>
|
||||
import questionries from '@/views/pages/questionere/combine-questins';
|
||||
import axios from '@axios';
|
||||
import avatar1 from '@images/avatars/avatar-1.png';
|
||||
const profileDetail = ref();
|
||||
@ -173,148 +174,7 @@ const getPatientMedicalHistory = async () => {
|
||||
// }
|
||||
// };
|
||||
|
||||
const questions = ref([
|
||||
{
|
||||
question_key: 'why_interested_hrt',
|
||||
question: "What aspects of hormone replacement therapy (HRT) intrigue you?",
|
||||
type: "text",
|
||||
},
|
||||
{
|
||||
question_key: 'goal_loss_weight',
|
||||
question: "Is your objective with the program to achieve weight loss?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'what_biological_sex',
|
||||
question: "What is your assigned sex at birth?",
|
||||
type: "radio",
|
||||
options: ["Male", "Female"],
|
||||
},
|
||||
{
|
||||
question_key: '3_years_physical_test',
|
||||
question: "Have you undergone a comprehensive physical examination by a medical professional within the past three years, which included assessments of vital signs such as weight, blood pressure, and heart rate?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'medical_problems',
|
||||
question: "Did you experience any medical issues? If so, could you please elaborate?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'have_prostate_cancer',
|
||||
question: "Have you ever received a diagnosis of prostate cancer?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'what_height',
|
||||
question: "How tall are you?",
|
||||
type: "dropdown",
|
||||
options: ["5 ft 1 in",
|
||||
"5 ft 2 in",
|
||||
"5 ft 3 in",
|
||||
"5 ft 4 in",
|
||||
"5 ft 5 in",
|
||||
"5 ft 6 in",
|
||||
"5 ft 7 in",
|
||||
"5 ft 8 in",
|
||||
],
|
||||
},
|
||||
{
|
||||
question_key: 'whight',
|
||||
question: "What is your weight?",
|
||||
type: "text",
|
||||
},
|
||||
// {
|
||||
// question_key: 'birthdate',
|
||||
// question: "When were you born?",
|
||||
// type: "date",
|
||||
// sub_title: 'To proceed with medication, kindly input your accurate date of birth using the format mm/dd/yyyy.'
|
||||
// },
|
||||
{
|
||||
question_key: 'past_harmone_treatments',
|
||||
question: "Have you been prescribed any hormone treatments currently or in the past?",
|
||||
type: "radio",
|
||||
options: ["thyroid_medication", "testosterone_treatment", "estrogen_blocker", "hgh", "ipamoreline", "colomipheine", "hcg", "other", "none"],
|
||||
},
|
||||
{
|
||||
question_key: 'take_medications',
|
||||
question: "Are you currently using or have you used any over-the-counter or prescription medications, excluding hormone treatments? (Please note that your responses will be cross-checked against prescription and insurance records. Failure to disclose current prescriptions and/or medical conditions may result in disapproval for your safety.)",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'have_medications_allegies',
|
||||
question: "Do you have any allergies to medications?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'plan_children',
|
||||
question: "Do you intend to have children at some point in the future?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'partner_pregnant',
|
||||
question: "Is your partner currently pregnant or breastfeeding?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No", "not applicab_e"],
|
||||
},
|
||||
{
|
||||
question_key: 'experience_ed',
|
||||
question: "Are you currently experiencing any erectile dysfunction (ED) issues?",
|
||||
type: "radio",
|
||||
options: ["never", "almost_never", "occasionally", "almost_always", "always"],
|
||||
},
|
||||
{
|
||||
question_key: 'thyroid_disorders',
|
||||
question: "Have you ever been diagnosed with thyroid disorders such as hypothyroidism (underactive thyroid), hyperthyroidism (overactive thyroid), Hashimoto's Disease, or Graves' Disease?",
|
||||
type: "radio",
|
||||
options: ["Yes", "No"],
|
||||
},
|
||||
{
|
||||
question_key: 'family_history',
|
||||
question: "Does your family have a history of any of the following disorders?",
|
||||
type: "radio",
|
||||
options: ["drug_alcohol", "cancer", "heart_disease", "thyroid_disease", "low_testosterone",
|
||||
"none"],
|
||||
},
|
||||
{
|
||||
question_key: 'patient_concent',
|
||||
question: "Please read and accept",
|
||||
linktext: "Patient Content",
|
||||
type: "signalCheckbox",
|
||||
},
|
||||
{
|
||||
question_key: 'appointment_cancel',
|
||||
question: "Please read and accept",
|
||||
linktext: "Appointment Cancel",
|
||||
type: "signalCheckbox",
|
||||
},
|
||||
{
|
||||
question_key: 'medicare_disclaimer',
|
||||
question: "Please read and accept",
|
||||
linktext: "Medicare Disclaimer",
|
||||
type: "signalCheckbox",
|
||||
},
|
||||
{
|
||||
question_key: 'telehealth_concent',
|
||||
question: "Please read and accept",
|
||||
linktext: "Telehealth Concent",
|
||||
type: "signalCheckbox",
|
||||
},
|
||||
{
|
||||
question_key: 'secondary_contact',
|
||||
question: "Please read and accept",
|
||||
linktext: "Secondary Contact Disclosure(optional)",
|
||||
type: "signalCheckbox",
|
||||
},
|
||||
|
||||
]);
|
||||
const questions = ref(questionries);
|
||||
|
||||
const getCurrentDate = () => {
|
||||
const today = new Date();
|
||||
|
74
resources/js/views/pages/questionere/combine-questins.js
Normal file
74
resources/js/views/pages/questionere/combine-questins.js
Normal file
@ -0,0 +1,74 @@
|
||||
import allergyasthma from './allergy-asthma-form.js';
|
||||
import antiaging from './anti-aging-form.js';
|
||||
import cardiology from './cardiology-form.js';
|
||||
import dermatology from './dermatology-form.js';
|
||||
import dnarepair from './dna-repair-form.js';
|
||||
import doctorintakerequest from './doctor-intake-request-form.js';
|
||||
import sleepquality from './sleep-quality.js';
|
||||
import hairgrowth from './hair-growth-form.js';
|
||||
import medicalhistory from './medical-history-form.js';
|
||||
import musclegrowth from './muscle-growth-form.js';
|
||||
import neurology from './neurology-form.js';
|
||||
import oncology from './oncology-form.js';
|
||||
import sexualwellness from './sexual-wellness-form.js';
|
||||
import urology from './urology-form.js';
|
||||
import weightloss from './weight-loss-form.js';
|
||||
import guthealth from './gut-health-form.js';
|
||||
import anxiety from './anxiety-form.js';
|
||||
import injuryrepair from './injury-repair-form.js';
|
||||
import menopause from './menopause-form.js';
|
||||
|
||||
function questionsMapping(data){
|
||||
const step = data.steps
|
||||
const schema = data.schema
|
||||
const questions = []
|
||||
for(let pageNo in step){
|
||||
const page = step[pageNo]
|
||||
let questionHeading = ""
|
||||
// let question = page.elements[2]
|
||||
for(let i = 0; i < page.elements.length; i++){
|
||||
const element = schema[page.elements[i]]
|
||||
if(!element)
|
||||
continue;
|
||||
if(element.type == "static" ) {
|
||||
|
||||
questionHeading += element.content+" "
|
||||
continue;
|
||||
}
|
||||
let questionObj = {
|
||||
pageNo: pageNo,
|
||||
label: i < 3 ? questionHeading: "",
|
||||
question: i < 3 ? questionHeading: "",
|
||||
// subHeading: schema[subHeading].content,
|
||||
key: page.elements[i],
|
||||
question_key: page.elements[i],
|
||||
type: 'exact_match'
|
||||
}
|
||||
questions.push(questionObj)
|
||||
}
|
||||
}
|
||||
return questions
|
||||
}
|
||||
export default [
|
||||
...questionsMapping(cardiology),
|
||||
...questionsMapping(oncology),
|
||||
...questionsMapping(dermatology),
|
||||
...questionsMapping(medicalhistory),
|
||||
...questionsMapping(urology),
|
||||
...questionsMapping(doctorintakerequest),
|
||||
...questionsMapping(allergyasthma),
|
||||
...questionsMapping(weightloss),
|
||||
...questionsMapping(musclegrowth),
|
||||
...questionsMapping(sexualwellness),
|
||||
...questionsMapping(hairgrowth),
|
||||
...questionsMapping(antiaging),
|
||||
...questionsMapping(dnarepair),
|
||||
...questionsMapping(sleepquality),
|
||||
...questionsMapping(guthealth),
|
||||
...questionsMapping(anxiety),
|
||||
...questionsMapping(injuryrepair),
|
||||
...questionsMapping(menopause),
|
||||
|
||||
]
|
||||
|
||||
console.log(JSON.stringify(questionsExport))
|
@ -322,8 +322,8 @@
|
||||
<div class="content">
|
||||
|
||||
<!-- START CENTERED WHITE CONTAINER -->
|
||||
<span class="preheader">This is preheader text. Some clients will show this text as a
|
||||
preview.</span>
|
||||
<span class="preheader">This is just a friendly reminder that you have an upcoming virtual appointment
|
||||
scheduled for.</span>
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main">
|
||||
|
||||
<!-- START MAIN CONTENT AREA -->
|
||||
@ -337,7 +337,7 @@
|
||||
{{ $appointment->timezone }}
|
||||
</p>
|
||||
<p>To ensure a smooth visit, please log into your {{$setting->domain_name}} account at least 10 minutes prior to your appointment time.</p>
|
||||
<p> You can access your account via our <a href="https://app.youngerlivingnow.com/login">{{$setting->domain_name}}</a>.</p>
|
||||
<p> You can access your account via our <a href="{{config('app.url')}}">{{$setting->domain_name}}</a>.</p>
|
||||
<P>Please have the following ready for your appointment:</P>
|
||||
<div>✔️ A quiet, private space to ensure privacy</div>
|
||||
<div>✔️ A list of any new symptoms or health updates since your last visit</div>
|
||||
|
@ -349,7 +349,7 @@
|
||||
<p>By confirming your email, you'll gain full access to all the features and benefits of our platform.</p>
|
||||
<p>If you didn't create an account with us, please disregard this email.</p>
|
||||
Thank you,
|
||||
<p>HGH Team</p>
|
||||
<p>{{config('app.name')}} Team</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -361,7 +361,7 @@
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="content-block powered-by">
|
||||
© Copyright 2024, HGH. All Rights Reserved. </a>
|
||||
© Copyright 2024, {{config('app.name')}}. All Rights Reserved. </a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -342,7 +342,7 @@
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="content-block powered-by">
|
||||
© Copyright 2024, {{$setting->footer_text}} </a>
|
||||
© Copyright 2024 {{config('app.name')}} , {{$setting->footer_text}} </a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -266,6 +266,7 @@
|
||||
.btn table {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
|
||||
}
|
||||
|
||||
.btn a {
|
||||
@ -362,7 +363,7 @@
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="content-block powered-by">
|
||||
© Copyright 2024, {{$setting->footer_text}} </a>
|
||||
© Copyright 2024 {{config('app.name')}}, {{$setting->footer_text}} </a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -322,8 +322,8 @@
|
||||
<div class="content">
|
||||
|
||||
<!-- START CENTERED WHITE CONTAINER -->
|
||||
<span class="preheader">This is preheader text. Some clients will show this text as a
|
||||
preview.</span>
|
||||
<!-- <span class="preheader">This is preheader text. Some clients will show this text as a
|
||||
preview.</span> -->
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main">
|
||||
|
||||
<!-- START MAIN CONTENT AREA -->
|
||||
|
@ -164,9 +164,9 @@
|
||||
<tr>
|
||||
<td style="padding-right: 0px;padding-left: 0px;" align="center">
|
||||
|
||||
<img align="center" border="0" src="{{ url('assets/email-template/registration/logo.png') }}" alt="" title="{{config('app.name')}} logo" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;height: 100px;float: none;width: 100px;max-width: 290px;" width="290" class="v-src-width v-src-max-width" />
|
||||
<img align="center" border="0" src="{{ url('assets/logo/logo-peptied-web.webp') }}" alt="" title="{{config('app.name')}} logo" style="outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;clear: both;display: inline-block !important;border: none;float: none;max-width: 290px;" class="v-src-width v-src-max-width" />
|
||||
|
||||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@ -265,7 +265,7 @@
|
||||
<td class="v-container-padding-padding" style="overflow-wrap:break-word;word-break:break-word;padding:10px 40px 40px;font-family:arial,helvetica,sans-serif;" align="left">
|
||||
|
||||
<div style="font-family: Quicksand; font-size: 14px; line-height: 140%; text-align: justify; word-wrap: break-word;">
|
||||
<p style="line-height: 140%;">Dear abc </p>
|
||||
<p style="line-height: 140%;">Dear {{ $patient->first_name }} {{ $patient->last_name }}, </p>
|
||||
<p style="line-height: 140%;"> </p>
|
||||
<p style="line-height: 140%;">Welcome to {{config('app.name')}} We're delighted to have you join our community dedicated to health and wellness through {{config('app.name')}} therapy.<br /><br /></p>
|
||||
<p style="line-height: 140%;">Thank you for registering your account with us. This email confirms that your account has been successfully created. You're now part of a vibrant community where you'll find valuable resources and support for your health journey.<br /><br /></p>
|
||||
@ -308,7 +308,7 @@
|
||||
<td class="v-container-padding-padding" style="overflow-wrap:break-word;word-break:break-word;padding:30px;font-family:arial,helvetica,sans-serif;" align="left">
|
||||
|
||||
<div style="font-family: Quicksand; font-size: 14px; line-height: 140%; text-align: justify; word-wrap: break-word;">
|
||||
<p style="line-height: 140%;">We're excited to accompany you on your journey toward better health and vitality. If you have any questions about your account or how to get started with {{config('app.name')}} therapy, please feel free to contact us at <a rel="noopener" href="{{config('app.url')}}" target="_blank">support@{{config('app.name')}}.com</a>.</p>
|
||||
<p style="line-height: 140%;">We're excited to accompany you on your journey toward better health and vitality. If you have any questions about your account or how to get started with {{config('app.name')}} therapy, please feel free to contact us at <a rel="noopener" href="{{config('app.url')}}" target="_blank">support@rejuvallife.com</a>.</p>
|
||||
<p style="line-height: 140%;"><br /><br />Thank you for choosing {{config('app.name')}} . Here's to your health and well-being!</p>
|
||||
<p style="line-height: 140%;"> </p>
|
||||
<p style="line-height: 140%;">Best regards,</p>
|
||||
|
@ -327,8 +327,8 @@
|
||||
<div class="content">
|
||||
|
||||
<!-- START CENTERED WHITE CONTAINER -->
|
||||
<span class="preheader">This is preheader text. Some clients will show this text as a
|
||||
preview.</span>
|
||||
<!-- <span class="preheader">This is preheader text. Some clients will show this text as a
|
||||
preview.</span> -->
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0" class="main">
|
||||
|
||||
<!-- START MAIN CONTENT AREA -->
|
||||
@ -342,7 +342,7 @@
|
||||
<p>Date: {{ $appointment->appointment_date }}</p>
|
||||
<p>Time: {{ $appointment->appointment_time }}</p>
|
||||
{{-- <p>Meeting Link: [Include Meeting Link ]</p> --}}
|
||||
<p>Click on the meeting link provided above or login to your HGH portal and join the
|
||||
<p>Click on the meeting link provided above or login to your {{config('app.name')}} portal and join the
|
||||
meeting.</p>
|
||||
<p>Ensure your audio and video settings are configured correctly.</p>
|
||||
<p>Agenda:</p>
|
||||
@ -374,7 +374,7 @@
|
||||
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="content-block powered-by">
|
||||
© Copyright 2024, HGH. All Rights Reserved. </a>
|
||||
© Copyright 2024, {{config('app.name')}}. All Rights Reserved. </a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
@ -373,14 +373,14 @@
|
||||
<p style="line-height: 140%; text-align: justify;">
|
||||
<span
|
||||
style="font-family: Quicksand; line-height: 19.6px;">To
|
||||
ensure a smooth visit, please log into your HGH
|
||||
ensure a smooth visit, please log into your {{config('app.name')}}
|
||||
account at least 10 minutes prior to your
|
||||
appointment time.</span><br /><br /></p>
|
||||
<p style="line-height: 140%; text-align: justify;">
|
||||
<span
|
||||
style="font-family: Quicksand; line-height: 19.6px;">You
|
||||
can access your account via our HGH platform: <a
|
||||
rel="noreferrer" target="_new">HGH
|
||||
can access your account via our {{config('app.name')}} platform: <a
|
||||
rel="noreferrer" target="_new">{{config('app.name')}}
|
||||
Login</a>.</span><br /><br /></p>
|
||||
<p style="line-height: 140%; text-align: justify;">
|
||||
<span
|
||||
@ -414,7 +414,7 @@
|
||||
<p style="line-height: 140%; text-align: justify;">
|
||||
<span
|
||||
style="font-family: Quicksand; line-height: 19.6px;">Sincerely,</span><br /><span
|
||||
style="font-family: Quicksand; line-height: 19.6px;">HGH
|
||||
style="font-family: Quicksand; line-height: 19.6px;">{{config('app.name')}}
|
||||
Team.</span></p>
|
||||
</div>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user