upgraded new changes

This commit is contained in:
Inshal 2024-10-27 02:14:52 +05:00
parent 2ba27c9ba8
commit c22c3b1e98
41 changed files with 443 additions and 253 deletions

View File

@ -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)
{
try {
$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];
} 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)
],

View File

@ -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

View File

@ -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.');
});
}
}

View File

@ -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.');
});
}
}

View File

@ -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
View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

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

View File

@ -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">

View File

@ -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 {

View File

@ -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>

View File

@ -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>

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -8,7 +8,7 @@ const router = useRouter()
const route = useRoute()
const cartEncoded = ref(
{
"gender": "male",
"gender": "Male",
"doctor_visit": "89.00",
"products": [
{

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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>

View File

@ -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'
},

View File

@ -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) => {

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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();

View 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))

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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 -->

View File

@ -164,7 +164,7 @@
<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>
</tr>
@ -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>

View File

@ -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>

View File

@ -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>