消える飛行機雲 僕たちは見送った 眩しくて逃げた いつだって弱くて あの日から変わらず いつまでも変わらずに いられなかったこと 悔しくて指を離す あの鳥は まだ うまく飛べないけど いつかは 風を切って知る 届かない場所が まだ遠くにある 願いだけ秘めて 見つめてる 子供たちは 夏の線路 歩く 吹く風に素足をさらして 遠くには幼かった日びを 両手には 飛び立つ希望を 消える飛行機雲 追いかけて 追いかけて この丘を越えた あの日から変わらず いつまでも 真っ直ぐに 僕たちはあるように わたつみのような 強さを守れるよ きっと ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!Repositories/VcardRepository.php000064400000077146152164577510013137 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Vcard::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); if (isset($input['url_alias'])) { $input['url_alias'] = str_replace(' ', '-', $input['url_alias']); } $subscription = getCurrentSubscription(); if ($subscription->plan) { $input['template_id'] = $subscription->plan->templates->first()->id; } $vcard = Vcard::create($input); $input['vcard_id'] = $vcard->id; SocialLink::create($input); if (isset($input['profile_img']) && !empty($input['profile_img'])) { $vcard->newAddMedia($input['profile_img'])->toMediaCollection( Vcard::PROFILE_PATH, config('app.media_disc') ); } if (isset($input['cover_img']) && !empty($input['cover_img'])) { $vcard->newAddMedia($input['cover_img'])->toMediaCollection(Vcard::COVER_PATH, config('app.media_disc')); } DB::commit(); return $vcard; } catch (Exception $e) { DB::rollBack(); throw $e; } } public function edit($vcard): array { $data['vcard'] = $vcard; $businessHours = $vcard->businessHours()->get(); foreach ($businessHours as $hour) { $data['hours'][$hour->day_of_week] = [ 'start_time' => $hour->start_time, 'end_time' => $hour->end_time, ]; } $appointmentHours = $vcard->appointmentHours()->get()->groupBy('day_of_week'); foreach ($appointmentHours as $day => $hours) { foreach ($hours as $hour) { $data['time'][$day][] = [ 'start_time' => $hour->start_time, 'end_time' => $hour->end_time, ]; } } $data['socialLink'] = SocialLink::with('icon')->whereVcardId($vcard->id)->first(); $currentPlan = getCurrentSubscription(); if ($currentPlan->plan) { $data['templates'] = getTemplateUrls($currentPlan->plan->templates); } else { $data['templates'] = getTemplateUrls(); } $data['customQrCode'] = QrcodeEdit::whereTenantId(getLogInTenantId())->where('vcard_id', $vcard->id)->pluck('value', 'key')->toArray(); return $data; } /** * @return Builder|Builder[]|Collection|Model|int */ public function update($input, $vcard) { try { DB::beginTransaction(); if (isset($input['url_alias'])) { $input['url_alias'] = str_replace(' ', '-', $input['url_alias']); } // if (isset($input['phone'])) { // $input['phone'] = str_replace([' ', '-'], '', $input['phone']); // } if (isset($input['part']) && $input['part'] == 'templates') { $planTemplates = getCurrentSubscription()->plan->templates()->pluck('template_id')->toArray(); if (!in_array($input['template_id'], $planTemplates)) { $input['template_id'] = $planTemplates[array_rand($planTemplates)]; } $input['share_btn'] = isset($input['share_btn']); $input['status'] = isset($input['status']); } if (isset($input['part']) && $input['part'] == 'advanced') { $input['password'] = isset($input['password']) ? Crypt::encrypt($input['password']) : ''; $input['branding'] = isset($input['branding']); } if (isset($input['part']) && $input['part'] == 'basics') { $input['language_enable'] = isset($input['language_enable']) ? 1 : 0; $input['enable_enquiry_form'] = isset($input['enable_enquiry_form']) ? 1 : 0; $input['enable_affiliation'] = isset($input['enable_affiliation']) ? 1 : 0; $input['enable_contact'] = isset($input['enable_contact']) ? 1 : 0; $input['hide_stickybar'] = isset($input['hide_stickybar']) ? 1 : 0; $input['whatsapp_share'] = isset($input['whatsapp_share']) ? 1 : 0; $input['enable_download_qr_code'] = isset($input['enable_download_qr_code']) ? 1 : 0; $input['show_qr_code'] = isset($input['show_qr_code']) ? 1 : 0; if ($input['location_type'] == '0') { $input['location_url'] = $input['location_url']; $input['location_embed_tag'] = null; } else { $input['location_embed_tag'] = $input['location_embed_tag']; $input['location_url'] = null; } $input['cover_image_type'] = $input['cover_image_type'] ?? null; } $vcard->update($input); if (isset($input['part']) && $input['part'] == 'business-hours') { BusinessHour::whereVcardId($vcard->id)->delete(); if (isset($input['days'])) { foreach ($input['days'] as $day) { BusinessHour::create([ 'vcard_id' => $vcard->id, 'day_of_week' => $day, 'start_time' => $input['startTime'][$day], 'end_time' => $input['endTime'][$day], ]); } } } if (isset($input['part']) && $input['part'] == 'appointments') { if ($input['is_paid'] == 1) { if (!getUserSettingValue('stripe_enable', getLogInUserId()) && !getUserSettingValue('flutterwave_enable', getLogInUserId()) && !getUserSettingValue('phonepe_enable', getLogInUserId()) && !getUserSettingValue('manually_payment', getLogInUserId()) && !getUserSettingValue('paytack_enable', getLogInUserId()) && !getUserSettingValue( 'paypal_enable', getLogInUserId() )) { Flash::error(__('messages.placeholder.please_add_payment_credentials')); return false; } if (!getUserSettingValue('currency_id', getLogInUserId())) { Flash::error(__('messages.vcard.please_add_currency')); return false; } } Appointment::whereVcardId($vcard->id)->delete(); if (isset($input['checked_week_days'])) { foreach ($input['checked_week_days'] as $day) { $this->saveSlots($input, $day, $vcard); } } $appointmentDetails = AppointmentDetail::where('vcard_id', $vcard->id)->first(); if (isset($input['is_paid'])) { if (!empty($appointmentDetails)) { $appointmentDetails->update([ 'is_paid' => $input['is_paid'], 'price' => $input['price'], ]); } else { AppointmentDetail::create([ 'vcard_id' => $vcard->id, 'is_paid' => $input['is_paid'], 'price' => $input['price'], ]); } } } if (isset($input['part']) && $input['part'] == 'social-links') { $socialLink = SocialLink::whereVcardId($vcard->id)->first(); if (isset($input['social_links'])) { $iconExists = SocialIcon::where('social_link_id', $socialLink->id)->exists(); if ($iconExists) { $socialIconIds = SocialIcon::where('social_link_id', $socialLink->id)->pluck('id')->toArray(); $hiddenSocialLinkIds = $input['social_link_id'] ?? []; $removeSocialLinks = array_diff($socialIconIds, $hiddenSocialLinkIds); $socialIcons = SocialIcon::where('social_link_id', $socialLink->id)->get(); foreach ($removeSocialLinks as $socialIconID) { $socialIcon = SocialIcon::where('id', $socialIconID)->first(); $socialIcon->clearMediaCollection(SocialLink::SOCIAL_ICON); $socialIcon->delete(); } foreach ($input['social_links'] as $key => $link) { $socialIconId = $input['social_link_id'][$key]; if (isset($input['social_links_image'][$key])) { if (!empty($socialIconId)) { $socialIcon = SocialIcon::where('id', $socialIconId)->first(); $socialIcon->newClearMediaCollection($input['social_links_image'], SocialLink::SOCIAL_ICON); $socialIcon->newAddMedia($input['social_links_image'][$key]) ->toMediaCollection(SocialLink::SOCIAL_ICON, config('app.media_disc')); } else { $socialIcon = SocialIcon::create([ 'link' => $link, 'social_link_id' => $socialLink->id, ]); $socialIcon->newAddMedia($input['social_links_image'][$key]) ->toMediaCollection(SocialLink::SOCIAL_ICON, config('app.media_disc')); } } $socialIcon = SocialIcon::where('id', $socialIconId)->first(); if (!empty($socialIconId)) { $socialIcon->update([ 'link' => $input['social_links'][$key], ]); } } } else { if (isset($input['social_links'])) { $socialLink = SocialLink::whereVcardId($vcard->id)->first(); foreach ($input['social_links'] as $key => $link) { $socialIcon = SocialIcon::create([ 'link' => $link, 'social_link_id' => $socialLink->id, ]); $socialIcon->newAddMedia($input['social_links_image'][$key]) ->toMediaCollection(SocialLink::SOCIAL_ICON, config('app.media_disc')); } } } } else { $socialIcons = SocialIcon::where('social_link_id', $socialLink->id)->get(); foreach ($socialIcons as $socialIcon) { $socialIcon->clearMediaCollection(SocialLink::SOCIAL_ICON); $socialIcon->delete(); } } $socialLink->update($input); } if (isset($input['profile_img']) && !empty($input['profile_img'])) { $vcard->newClearMediaCollection($input['profile_img'], Vcard::PROFILE_PATH); $vcard->newAddMedia($input['profile_img'])->toMediaCollection( Vcard::PROFILE_PATH, config('app.media_disc') ); } if (isset($input['cover_img']) && !empty($input['cover_img'])) { $vcard->newClearMediaCollection($input['cover_img'], Vcard::COVER_PATH); $vcard->newAddMedia($input['cover_img'])->toMediaCollection(Vcard::COVER_PATH, config('app.media_disc')); } if (isset($input['privacy_policy']) && !empty($input['privacy_policy'])) { $privacyPolicy = PrivacyPolicy::where('vcard_id', $vcard->id)->first(); if ($privacyPolicy) { $privacyPolicy->update($input); } else { PrivacyPolicy::create([ 'vcard_id' => $vcard->id, 'privacy_policy' => $input['privacy_policy'], ]); } } if (isset($input['term_condition']) && !empty($input['term_condition'])) { $termCondition = TermCondition::where('vcard_id', $vcard->id)->first(); if ($termCondition) { $termCondition->update($input); } else { TermCondition::create([ 'vcard_id' => $vcard->id, 'term_condition' => $input['term_condition'], ]); } } if (isset($input['part']) && $input['part'] == 'qrcode-customize') { $inputArr = Arr::except($input, ['_method', '_token', 'part']); $inputArr['applySetting'] = isset($inputArr['applySetting']) ? 1 : 0; $vcardId = $inputArr['vcard_id']; foreach ($inputArr as $key => $value) { if ($value !== null) { $qrCodeCustmize = QrcodeEdit::whereTenantId(getLogInTenantId()) ->where('key', $key) ->where('vcard_id', $vcardId) ->first(); if ($qrCodeCustmize) { $qrCodeCustmize->update([ 'value' => $value, ]); } else { QrcodeEdit::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $vcardId, 'key' => $key, 'value' => $value, ]); } } } } if (isset($input['part']) && $input['part'] == 'manage-section') { VcardSections::updateOrcreate( ['vcard_id' => $vcard->id], [ 'vcard_id' => $vcard->id, 'header' => 1, 'contact_list' => isset($input['contact_list']) ? 1 : 0, 'services' => isset($input['services']) ? 1 : 0, 'products' => isset($input['products']) ? 1 : 0, 'galleries' => isset($input['galleries']) ? 1 : 0, 'blogs' => isset($input['blogs']) ? 1 : 0, 'map' => isset($input['map']) ? 1 : 0, 'testimonials' => isset($input['testimonials']) ? 1 : 0, 'business_hours' => isset($input['business_hours']) ? 1 : 0, 'appointments' => isset($input['appointments']) ? 1 : 0, 'insta_embed' => isset($input['insta_embed']) ? 1 : 0, 'banner' => isset($input['banner']) ? 1 : 0, 'iframe' => isset($input['iframe']) ? 1 : 0, 'news_latter_popup' => isset($input['news_latter_popup']) ? 1 : 0, 'one_signal_notification' => isset($input['one_signal_notification']) ? 1 : 0, ] ); } if (isset($input['part']) && $input['part'] == 'dynamic_vcard') { DynamicVcard::updateOrcreate( ['vcard_id' => $vcard->id], [ 'vcard_id' => $vcard->id, 'primary_color' => $input['primary_color'], 'back_color' => $input['back_color'], 'back_seconds_color' => $input['back_seconds_color'], 'button_text_color' => $input['button_text_color'], 'text_label_color' => $input['text_label_color'], 'text_description_color' => $input['text_description_color'], 'cards_back' => $input['cards_back'], 'social_icon_color' => $input['social_icon_color'], 'sticky_bar' => isset($input['sticky_bar']) ? $input['sticky_bar'] : 0, 'button_style' => $input['button_style'], ] ); } DB::commit(); return $vcard; } catch (\Exception $e) { DB::rollBack(); throw $e; } } public function checkTotalVcard(): bool { $makeVcard = false; $subscription = Subscription::where('tenant_id', getLogInTenantId())->where( 'status', Subscription::ACTIVE )->first(); if (!empty($subscription)) { $totalCards = Vcard::whereTenantId(getLogInTenantId())->count(); $makeVcard = $subscription->no_of_vcards > $totalCards; } return $makeVcard; } public function saveSlots( $input, $day, $vcard ): bool { $startTimeArr = $input['startTimes'][$day] ?? []; $endTimeArr = $input['endTimes'][$day] ?? []; if (count($startTimeArr) != 0 && count($endTimeArr) != 0) { foreach (array_unique($startTimeArr) as $key => $startTime) { Appointment::create([ 'vcard_id' => $vcard->id, 'day_of_week' => $day, 'start_time' => $startTime, 'end_time' => $endTimeArr[$key], ]); } } return true; } public function analyticsData( $input, $vcard ): array { $analytics = Analytic::where('vcard_id', $vcard->id)->get(); if ($analytics->count() > 0) { $DataCount = $analytics->count(); $percentage = 100 / $DataCount; $browser = $analytics->groupBy('browser'); $data = []; foreach ($browser as $key => $item) { $browser_record[$key]['count'] = $item->count(); $browser_record[$key]['per'] = $item->count() * $percentage; } $browser_data = collect($browser_record)->sortBy('count')->reverse()->toArray(); $data['browser'] = $browser_data; $device = $analytics->groupBy('device'); foreach ($device as $key => $item) { $device_record[$key]['count'] = $item->count(); $device_record[$key]['per'] = $item->count() * $percentage; } $device_data = collect($device_record)->sortBy('count')->reverse()->toArray(); $data['device'] = $device_data; $country = $analytics->groupBy('country'); foreach ($country as $key => $item) { $country_record[$key]['count'] = $item->count(); $country_record[$key]['per'] = $item->count() * $percentage; } $country_data = collect($country_record)->sortBy('count')->reverse()->toArray(); $data['country'] = $country_data; $operating_system = $analytics->groupBy('operating_system'); foreach ($operating_system as $key => $item) { $operating_record[$key]['count'] = $item->count(); $operating_record[$key]['per'] = $item->count() * $percentage; } $operating_data = collect($operating_record)->sortBy('count')->reverse()->toArray(); $data['operating_system'] = $operating_data; $language = $analytics->groupBy('language'); foreach ($language as $key => $item) { $language_record[$key]['count'] = $item->count(); $language_record[$key]['per'] = $item->count() * $percentage; } $language_data = collect($language_record)->sortBy('count')->reverse()->toArray(); $data['language'] = $language_data; $data['vcardID'] = $vcard->id; return $data; } $data['noRecord'] = __('messages.common.no_data_available'); return $data; } public function chartData( $input ): array { $startDate = isset($input['start_date']) ? Carbon::parse($input['start_date']) : ''; $endDate = isset($input['end_date']) ? Carbon::parse($input['end_date']) : ''; $data = []; $analytics = Analytic::where('vcard_id', $input['vcardId']); $visitor = $analytics->addSelect([\DB::raw('DAY(created_at) as day,created_at')]) ->addSelect([\DB::raw('Month(created_at) as month,created_at')]) ->addSelect([\DB::raw('YEAR(created_at) as year,created_at')]) ->orderBy('created_at') ->get(); $period = CarbonPeriod::create($startDate, $endDate); foreach ($period as $date) { $data['totalVisitorCount'][] = $visitor->where('day', $date->format('d'))->where( 'month', $date->format('m') )->count(); $data['weeklyLabels'][] = $date->format('d-m-y'); } return $data; } public function dashboardChartData( $input ) { $startDate = isset($input['start_date']) ? Carbon::parse($input['start_date']) : ''; $endDate = isset($input['end_date']) ? Carbon::parse($input['end_date']) : ''; $data = []; $vcards = Vcard::where('tenant_id', getLogInTenantId()) ->where('status', 1) ->get(); $vcardIds = $vcards ->pluck('id') ->toArray(); $period = CarbonPeriod::create($startDate, $endDate); foreach ($period as $date) { $data['weeklyLabels'][] = $date->format('d-m-y'); } $colors = [ 'rgb(245, 158, 11', 'rgb(77, 124, 15', 'rgb(254, 199, 2', 'rgb(80, 205, 137', 'rgb(16, 158, 247', 'rgb(241, 65, 108', 'rgb(80, 205, 137', 'rgb(245, 152, 28', 'rgb(13, 148, 136', 'rgb(59, 130, 246', 'rgb(162, 28, 175', 'rgb(190, 18, 60', 'rgb(244, 63, 94', 'rgb(30, 30, 45', ]; $vcards = $vcards->keyBy('id'); $analytics = Analytic::whereIn('vcard_id', $vcardIds); $visitor = $analytics->addSelect([\DB::raw('DAY(created_at) as day, created_at')]) ->addSelect([\DB::raw('Month(created_at) as month,created_at')]) ->addSelect([\DB::raw('YEAR(created_at) as year,created_at')]) ->addSelect([\DB::raw('vcard_id')]) ->whereBetween('created_at', [$startDate, $endDate]) ->orderBy('created_at') ->get() ->groupBy('vcard_id'); $period = CarbonPeriod::create($startDate, $endDate); foreach ($vcardIds as $key => $vcardId) { $color = $colors[ceil($key % count($colors))]; $visitorArr = isset($visitor[$vcardId]) ? $visitor[$vcardId] : []; $data['data'][] = $this->getData($vcards[$vcardId], $period, $color, $visitorArr); } return $data; } public function getData( $vcard, $period, $color, $visitor = null ) { // $period = CarbonPeriod::create($startDate, $endDate); $data = []; $data['backgroundColor'] = $color . ')'; $data['label'] = $vcard->name; $data['data'] = $this->getVisitor($period, $vcard->id, $visitor); $data['lineTension'] = 0.5; $data['radius'] = 4; $data['borderColor'] = $color . ', 0.7)'; return $data; } public function getVisitor( $period, $vcardId, $visitor ) { $data = []; foreach ($period as $date) { try { if ($visitor instanceof Collection) { $count = $visitor->where('day', $date->format('d'))->where( 'month', $date->format('m') )->count(); $data[] = $count; } else { if (empty($visitor)) { $data[] = 0; } else { if ($visitor instanceof Analytic) { $count = ($visitor->day == $date->format('d') && $visitor->month == $date->format('m')) ? 1 : 0; $data[] = $count; } } } } catch (\Exception $exception) { } } return $data; } public function getDuplicateVcard( $vcard, $userId = null ) { if (!$vcard) { throw new Exception(__('messages.flash.vcard_null')); } $newVcard = $vcard->replicate(); if ($newVcard['tenant_id'] != getLogInTenantId()) { $user = User::findOrFail($userId); $tanentId = $user->tenant_id; $newVcard['tenant_id'] = $tanentId; } else { $tanentId = $vcard->tenant_id; } $baseAlias = preg_replace('/[0-9]+/', '', $newVcard->url_alias); $matchAlias = Vcard::where('url_alias', 'LIKE', '%' . $newVcard->url_alias . '%')->get(); $lastCharArr = []; foreach ($matchAlias as $alias) { $aliasLastCharCheck = str_replace($newVcard->url_alias, '', $alias->url_alias); $lastCharArr[] = $aliasLastCharCheck; } $maxChar = max($lastCharArr); $maxChar++; $newVcard->url_alias = $newVcard->url_alias . $maxChar; $newVcard->save(); $newVcard->addMediaFromUrl($vcard->profile_url)->toMediaCollection( Vcard::PROFILE_PATH, config('app.media_disc') ); $newVcard->addMediaFromUrl($vcard->cover_url)->toMediaCollection( Vcard::COVER_PATH, config('app.media_disc') ); $newVcardSocial = $vcard->socialLink->replicate(); $newVcardSocial->vcard_id = $newVcard->id; $newVcardSocial->save(); foreach ($vcard->services as $newVcardServices) { $newVcardServices = $newVcardServices->replicate(); $newVcardServices->vcard_id = $newVcard->id; $newVcardServices->save(); $newVcardServices->addMediaFromUrl($newVcardServices->service_icon)->toMediaCollection( VcardService::SERVICES_PATH, config('app.media_disc') ); } foreach ($vcard->products as $newVcardProducts) { $newVcardProducts = $newVcardProducts->replicate(); $newVcardProducts->vcard_id = $newVcard->id; $newVcardProducts->save(); $newVcardProducts->addMediaFromUrl($newVcardProducts->product_icon)->toMediaCollection( Product::PRODUCT_PATH, config('app.media_disc') ); } foreach ($vcard->testimonials as $newVcardTestimonial) { $newVcardTestimonial = $newVcardTestimonial->replicate(); $newVcardTestimonial->vcard_id = $newVcard->id; $newVcardTestimonial->save(); $newVcardTestimonial->addMediaFromUrl($newVcardTestimonial->image_url)->toMediaCollection( Testimonial::TESTIMONIAL_PATH, config('app.media_disc') ); } foreach ($vcard->gallery as $newVcardGallery) { $newVcardGallery = $newVcardGallery->replicate(); $newVcardGallery->vcard_id = $newVcard->id; $newVcardGallery->save(); $newVcardGallery->addMediaFromUrl($newVcardGallery->gallery_image)->toMediaCollection( Gallery::GALLERY_PATH, config('app.media_disc') ); } foreach ($vcard->blogs as $newVcardBlogs) { $newVcardBlogs = $newVcardBlogs->replicate(); $newVcardBlogs->vcard_id = $newVcard->id; $newVcardBlogs->save(); $newVcardBlogs->addMediaFromUrl($newVcardBlogs->blog_icon)->toMediaCollection( VcardBlog::BLOG_PATH, config('app.media_disc') ); } foreach ($vcard->businessHours as $newVcardBusinessHours) { $newVcardBusinessHours = $newVcardBusinessHours->replicate(); $newVcardBusinessHours->vcard_id = $newVcard->id; $newVcardBusinessHours->save(); } foreach ($vcard->appointmentHours as $newVcardAppointmentHours) { $newVcardAppointmentHours = $newVcardAppointmentHours->replicate(); $newVcardAppointmentHours->vcard_id = $newVcard->id; $newVcardAppointmentHours->save(); } foreach ($vcard->customeLink as $newVcardCustomLink) { $newVcardCustomLink = $newVcardCustomLink->replicate(); $newVcardCustomLink->vcard_id = $newVcard->id; $newVcardCustomLink->save(); } foreach ($vcard->iframes as $newVcardIframes) { $newVcardIframes = $newVcardIframes->replicate(); $newVcardIframes->vcard_id = $newVcard->id; $newVcardIframes->save(); } foreach ($vcard->InstagramEmbed as $newVcardInstagramEmbed) { $newVcardInstagramEmbed = $newVcardInstagramEmbed->replicate(); $newVcardInstagramEmbed->vcard_id = $newVcard->id; $newVcardInstagramEmbed->save(); } foreach ($vcard->banners as $banner) { $newVcardBanner = $banner->replicate(); $newVcardBanner->vcard_id = $newVcard->id; $newVcardBanner->save(); } foreach ($vcard->Qrcode as $Qrcode) { $newVcardQrcode = $Qrcode->replicate(); $newVcardQrcode->vcard_id = $newVcard->id; $newVcardQrcode->tenant_id = $tanentId; $newVcardQrcode->save(); } if (isset($vcard->privacy_policy)) { $newVcardPrivacyPolicy = $vcard->privacy_policy->replicate(); $newVcardPrivacyPolicy->vcard_id = $newVcard->id; $newVcardPrivacyPolicy->save(); } if (isset($vcard->term_condition)) { $newVcardTermCondition = $vcard->term_condition->replicate(); $newVcardTermCondition->vcard_id = $newVcard->id; $newVcardTermCondition->save(); } } } Repositories/NfcOrderRepository.php000064400000006102152164577510013562 0ustar00 ['card'], 'customer_email' => $email, 'line_items' => [ [ 'price_data' => [ 'product_data' => [ 'name' => $nfc->nfcCard->name, ], 'unit_amount' => $nfc->nfcCard->price * $nfc->quantity * 100, 'currency' => $currency, ], 'quantity' => 1, ], ], 'client_reference_id' => $orderId, 'mode' => 'payment', 'success_url' => url($successUrl) . '?session_id={CHECKOUT_SESSION_ID}&order_id=' . $orderId, 'cancel_url' => url($cancelUrl . '?session_id={CHECKOUT_SESSION_ID}&order_id=' . $orderId), ]); session()->put([ 'order_details' => $nfc, 'order_id' => $orderId, ]); $result = [ 'sessionId' => $session['id'], ]; return $result; } public function userCreateRazorPaySession($input, $nfc, $currency) { $api = new Api(getSelectedPaymentGateway('razorpay_key'), getSelectedPaymentGateway('razorpay_secret')); $amount = $nfc->price * $input['quantity'] * 100; $orderData = [ 'receipt' => 1, 'amount' => $amount, 'currency' => $currency, 'notes' => [ 'email' => $input['email'], 'name' => $nfc->name, 'customer_name' => $input['name'], 'designation' => $input['designation'], 'region_code' => $input['region_code'], 'phone' => $input['phone'], 'address' => $input['address'], 'company_name' => $input['company_name'], 'card_type' => $input['card_type'], 'vcard_id' => $input['vcard_id'], 'amountToPay' => $nfc->price * $input['quantity'], 'payment_type' => NfcOrders::RAZOR_PAY, ], ]; $razorpayOrder = $api->order->create($orderData); $data['id'] = $razorpayOrder->id; $data['amount'] = $amount; $data['name'] = $nfc->name; $data['email'] = $input['email']; $data['contact'] = $input['phone']; return $data; } } Repositories/CityRepository.php000064400000000740152164577510012772 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return City::class; } } Repositories/DashboardRepository.php000064400000012256152164577510013756 0ustar00where('name', '!=', 'super_admin'); })->get(); } /** * @return Vcard[]|Collection */ public function getVcards() { return Vcard::all(); } /** * @return Plan[]|Collection */ public function getPlans() { return Plan::all(); } /** * @return mixed */ public function getVcardsCount() { return Vcard::where('tenant_id', auth()->user()->tenant_id)->get(); } /** * @return mixed */ public function getEnquiryCountAttribute() { $vcardIds = Vcard::where('tenant_id', auth()->user()->tenant_id)->select('id'); return Enquiry::whereIn('vcard_id', $vcardIds)->whereDate('created_at', \Carbon\Carbon::today())->count(); } /** * @return mixed */ public function getAppointmentCountAttribute() { $vcardIds = Vcard::where('tenant_id', auth()->user()->tenant_id)->select('id'); $today = Carbon::now()->format('Y-m-d'); return ScheduleAppointment::whereIn('vcard_id', $vcardIds)->whereDate('date', $today)->count(); } /** * @return mixed */ public function usersData($input) { if (isset($input['day'])) { $data = User::whereRaw('Date(created_at) = CURDATE()')->orderBy('created_at', 'DESC') ->paginate(5); return $data; } if (isset($input['week'])) { $now = Carbon::now(); $weekStartDate = $now->startOfWeek()->format('Y-m-d H:i'); $weekEndDate = $now->endOfWeek()->format('Y-m-d H:i'); $data = User::whereBetween('created_at', [$weekStartDate, $weekEndDate]) ->orderBy('created_at', 'DESC') ->paginate(5); return $data; } if (isset($input['month'])) { $data = User::whereMonth('created_at', Carbon::now()->month) ->orderBy('created_at', 'DESC') ->paginate(5); return $data; } } public function planChartData(): array { $plans = Plan::withCount([ 'subscriptions' => function ($q) { $q->where('status', true); }, ])->pluck('subscriptions_count', 'name')->toArray(); $totalSubsPlan = array_sum($plans); $data = []; foreach ($plans as $name => $planCount) { $data['labels'][] = $name; $data['breakDown'][] = number_format($planCount * 100 / $totalSubsPlan, 2); } return $data; } public function incomeChartData($input) { if ($input) { $startDate = $input['start_date']; $endDate = $input['end_date']; $startDate = Carbon::parse($startDate); $endDate = Carbon::parse($endDate); $manualPayment = Subscription::wherePaymentType('paid') ->whereYear('created_at', Carbon::now()->year)->get() ->groupBy(function ($q) { return Carbon::parse($q->created_at)->isoFormat('MMM'); }); $transactions = Transaction::whereStatus(1) ->whereBetween('created_at', [$startDate, $endDate]) ->get() ->groupBy(function ($q) { return Carbon::parse($q->created_at)->format('Y-m'); }); $data = $labels = $dataset = $colors = $borderColors = []; $periods = CarbonPeriod::create($startDate->startOfYear(), '1 month', $endDate->endOfYear()); foreach ($periods as $key => $period) { $month = $period->format('Y-m'); $labels[] = $period->isoFormat('MMM'); $colors[] = getBGColors($key) . ')'; $borderColors[] = getBGColors($key) . ', 0.75)'; $amounts = isset($transactions[$month]) ? $transactions[$month]->pluck('amount')->toArray() : [0]; $amounts = isset($manualPayment[$month]) ? array_merge($amounts, $manualPayment[$month]->pluck('payable_amount')->toArray()) : $amounts; $dataset[] = removeCommaFromNumbers(number_format(array_sum($amounts), 2)); } $data['labels'] = $labels; $data['breakDown'][] = [ 'label' => __('messages.common.total_amount'), 'data' => $dataset, 'backgroundColor' => $colors, 'borderColor' => $borderColors, 'lineTension' => 0.5, 'radius' => 4, ]; return $data; } } } Repositories/IframeRepository.php000064400000003063152164577510013266 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Iframe::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $iframe = Iframe::create($input); DB::commit(); return $iframe; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); $iframe = Iframe::findOrFail($id); $iframe->update($input); DB::commit(); return $iframe; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/GalleryRepository.php000064400000012123152164577510013457 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Gallery::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); if ($input['type'] == Gallery::TYPE_IMAGE) { $input['link'] = null; } if ($input['type'] == Gallery::TYPE_YOUTUBE) { $input['image'] = null; } if ($input['type'] == Gallery::TYPE_FILE || $input['type'] == Gallery::TYPE_VIDEO || $input['type'] == Gallery::TYPE_AUDIO) { $input['image'] = null; $input['link'] = null; } $gallery = Gallery::create($input); if (($input['type'] == Gallery::TYPE_IMAGE) && isset($input['image']) && ! empty($input['image'])) { $gallery->newAddMedia($input['image'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_FILE) && isset($input['gallery_upload_file']) && ! empty($input['gallery_upload_file'])) { $gallery->newAddMedia($input['gallery_upload_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_VIDEO) && isset($input['video_file']) && ! empty($input['video_file'])) { $gallery->newAddMedia($input['video_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_AUDIO) && isset($input['audio_file']) && ! empty($input['audio_file'])) { $gallery->newAddMedia($input['audio_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } DB::commit(); return $gallery; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); if ($input['type'] == Gallery::TYPE_IMAGE) { $input['link'] = null; } if ($input['type'] == Gallery::TYPE_YOUTUBE) { $input['image'] = null; } if ($input['type'] == Gallery::TYPE_FILE || $input['type'] == Gallery::TYPE_VIDEO || $input['type'] == Gallery::TYPE_AUDIO) { $input['image'] = null; $input['link'] = null; } $gallery = Gallery::findOrFail($id); if (($input['type'] == Gallery::TYPE_IMAGE) && isset($input['image']) && ! empty($input['image'])) { $gallery->newClearMediaCollection($input['image'],Gallery::GALLERY_PATH); $gallery->newAddMedia($input['image'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_FILE) && isset($input['gallery_upload_file']) && ! empty($input['gallery_upload_file'])) { $gallery->newClearMediaCollection($input['gallery_upload_file'],Gallery::GALLERY_PATH); $gallery->newAddMedia($input['gallery_upload_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_VIDEO) && isset($input['video_file']) && ! empty($input['video_file'])) { $gallery->newClearMediaCollection($input['video_file'],Gallery::GALLERY_PATH); $gallery->newAddMedia($input['video_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } if (($input['type'] == Gallery::TYPE_AUDIO) && isset($input['audio_file']) && ! empty($input['audio_file'])) { $gallery->newClearMediaCollection($input['audio_file'],Gallery::GALLERY_PATH); $gallery->newAddMedia($input['audio_file'])->toMediaCollection(Gallery::GALLERY_PATH, config('app.media_disc')); } $gallery->update($input); DB::commit(); return $gallery; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/RoleRepository.php000064400000003250152164577510012762 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Role::class; } /** * @return mixed */ public function getPermissions() { $permissions = Permission::toBase()->get(); return $permissions; } public function store($input): Role { $displayName = strtolower($input['display_name']); $input['name'] = str_replace(' ', '_', $displayName); /** @var Role $role */ $role = Role::create($input); if (isset($input['permission_id']) && ! empty($input['permission_id'])) { $role->permissions()->sync($input['permission_id']); } return $role; } public function update(array $input, int $id): Role { $displayName = strtolower($input['display_name']); $str = str_replace(' ', '_', $displayName); $role = Role::findById($id); /** @var Role $role */ $role->update([ 'name' => $str, 'display_name' => $input['display_name'], ]); if (isset($input['permission_id']) && ! empty($input['permission_id'])) { $role->permissions()->sync($input['permission_id']); } return $role; } } Repositories/StateRepository.php000064400000000745152164577510013147 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return State::class; } } Repositories/CustomLinkRepository.php000064400000003043152164577510014151 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return CustomLink::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $customLink = CustomLink::create($input); DB::commit(); return $customLink; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function update($input,$id) { try { DB::beginTransaction(); $customLink = CustomLink::findOrFail($id); $input['show_as_button'] = $input['show_as_button'] ?? 0; $input['open_new_tab'] = $input['open_new_tab'] ?? 0; $customLink->update($input); DB::commit(); return $customLink; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/InstagramEmbedRepository.php000064400000005772152164577510014756 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return InstagramEmbed::class; } /** * @return mixed * */ public function store($input) { try { DB::beginTransaction(); $input['embedtag'] = str_replace(['data-instgrm-captioned'], '', $input['embedtag']); $url = explode('/', $input['embedtag']); if (isset($url[3]) && ($url[3] == 'reel'|| $url[3] == 'p')) { if ($input['type'] == 0 && $url[3] == 'reel') { throw new UnprocessableEntityHttpException(__('messages.flash.post_type_content')); } elseif ($input['type'] == 1 && $url[3] == 'p') { throw new UnprocessableEntityHttpException(__('messages.flash.reel_type_content')); } } else { throw new UnprocessableEntityHttpException(__('messages.flash.embedtag_content')); } $embed = InstagramEmbed::create($input); DB::commit(); return $embed; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); $input['embedtag'] = str_replace(['data-instgrm-captioned'], '', $input['embedtag']); $url = explode('/', $input['embedtag']); if (isset($url[3]) && ($url[3] == 'reel'|| $url[3] == 'p')) { if ($input['type'] == 0 && $url[3] == 'reel') { throw new UnprocessableEntityHttpException(__('messages.flash.post_type_content')); } elseif ($input['type'] == 1 && $url[3] == 'p') { throw new UnprocessableEntityHttpException(__('messages.flash.reel_type_content')); } } else { throw new UnprocessableEntityHttpException(__('messages.flash.embedtag_content')); } $embed = InstagramEmbed::findOrFail($id); $embed->update($input); DB::commit(); return $embed; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/SubscriptionRepository.php000064400000037577152164577510014570 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Subscription::class; } public function purchaseSubscriptionForStripe($input): array { $data = $this->manageSubscription($input); if (! isset($data['plan'])) { // 0 amount plan or try to switch the plan if it is in trial mode return $data; } $result = $this->manageStripeData( $data['plan'], [ 'amountToPay' => $data['amountToPay'], 'sub_id' => $data['subscription']->id, ] ); return $result; } /** * @param $input */ public function manageSubscription($planData): bool|array { $planId = $planData['planId']; $customFieldId = $planData['customFieldId'] ?? null; if (isset($planData['couponCodeId'])) { $couponId = $planData['couponCodeId']; $coupon = CouponCode::find($couponId); if ($coupon) { if ($coupon->coupon_limit != null) { $newLimit = $coupon->coupon_limit_left - 1; CouponCode::where('id', $couponId)->update(['coupon_limit_left' => $newLimit]); } } } /** @var Plan $subscriptionPlan */ $subscriptionPlan = Plan::findOrFail($planId); if ($subscriptionPlan->frequency == Plan::MONTHLY) { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 30; } else { if ($subscriptionPlan->frequency == Plan::YEARLY) { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 365; } else { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 36500; } } $startsAt = Carbon::now(); $endsAt = $startsAt->copy()->addDays($newPlanDays); $usedTrialBefore = Subscription::whereTenantId(getLogInUser()->tenant_id)->whereNotNull('trial_ends_at')->exists(); // if the user did not have any trial plan then give them a trial if (! $usedTrialBefore && $subscriptionPlan->trial_days > 0) { $endsAt = $startsAt->copy()->addDays($subscriptionPlan->trial_days); } // if($planData['customFieldId'] != null){ // $amountToPay = $subscriptionPlan->planCustomFields()->where('id', $planData['customFieldId'])->value('custom_vcard_price'); // } // else{ // $amountToPay = $subscriptionPlan->price; // } $amountToPay = $customFieldId ? $subscriptionPlan->planCustomFields()->where('id', $customFieldId)->value('custom_vcard_price') : $subscriptionPlan->price; /** @var Subscription $currentSubscription */ $currentSubscription = getCurrentSubscription(); $usedDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($startsAt); $planIsInTrial = checkIfPlanIsInTrial($currentSubscription); // switching the plan -- Manage the pro-rating if (! $currentSubscription->isExpired() && $amountToPay != 0 && ! $planIsInTrial) { $usedDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($startsAt); $currentSubsTotalDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($currentSubscription->ends_at); $currentPlan = $currentSubscription->plan; // TODO: take fields from subscription // checking if the current active subscription plan has the same price and frequency in order to process the calculation for the proration $planPrice = $currentPlan->price; $planFrequency = $currentPlan->frequency; if ($planPrice != $currentSubscription->plan_amount || $planFrequency != $currentSubscription->plan_frequency) { $planPrice = $currentSubscription->plan_amount; $planFrequency = $currentSubscription->plan_frequency; } // $frequencyDays = $planFrequency == Plan::MONTHLY ? 30 : 365; $perDayPrice = round($planPrice / $currentSubsTotalDays, 2); $isJPYCurrency = ! empty($subscriptionPlan->currency) && isJPYCurrency($subscriptionPlan->currency->currency_code); $remainingBalance = $planPrice - ($perDayPrice * $usedDays); $remainingBalance = $isJPYCurrency ? round($remainingBalance) : $remainingBalance; if ($remainingBalance < $amountToPay) { // adjust the amount in plan i.e. you have to pay for it $payableAmount = $isJPYCurrency ? round($amountToPay - $remainingBalance) : round($amountToPay - $remainingBalance, 2); } else { $perDayPriceOfNewPlan = round($amountToPay / $newPlanDays, 5); $totalDays = round($remainingBalance / $perDayPriceOfNewPlan); $endsAt = Carbon::now()->addDays($totalDays); $payableAmount = 0; } } else { $payableAmount = $amountToPay; } // check that if try to switch the plan if (! $currentSubscription->isExpired() && $subscriptionPlan->trial_days == 0) { if ((checkIfPlanIsInTrial($currentSubscription) || ! checkIfPlanIsInTrial($currentSubscription)) && $amountToPay <= 0) { return ['status' => false, 'subscriptionPlan' => $subscriptionPlan]; } } if ($usedDays <= 0) { $startsAt = $currentSubscription->starts_at; } $input = [ 'user_id' => getLogInUser()->id, 'plan_id' => $subscriptionPlan->id, 'plan_amount' => $amountToPay, 'payable_amount' => $payableAmount, 'plan_frequency' => $subscriptionPlan->frequency, 'starts_at' => $startsAt, 'ends_at' => $endsAt, 'status' => Subscription::INACTIVE, 'no_of_vcards' => $customFieldId ? $subscriptionPlan->planCustomFields()->where('id', $customFieldId)->value('custom_vcard_number') : $subscriptionPlan->no_of_vcards, 'tenant_id' => getLogInUser()->tenant_id, 'payment_type' => Subscription::STRIPE, ]; if (isset($planData['notes'])) { $input['notes'] = $planData['notes']; } //apply coupon code if exists if (! empty($planData['couponCodeId'])) { $couponCode = CouponCode::whereId($planData['couponCodeId']) ->whereCouponName($planData['couponCode']) ->whereStatus(CouponCode::ACTIVE) ->firstOrFail(); if ($couponCode->is_expired) { Flash::error('Invalid Coupon code'); return []; } $couponCodeRepo = App(CouponCodeRepository::class); $data['planId'] = $subscriptionPlan->id; $data['planPrice'] = $amountToPay; $data['couponCode'] = $planData['couponCode']; $data['customFieldId'] = $customFieldId; $couponData = $couponCodeRepo->getAfterDiscountData($data); $payableAmount = $input['payable_amount'] = $couponData['afterDiscount']['amountToPay']; $input['coupon_code_meta'] = $couponData['afterDiscount']; $input['coupon_code_meta']['discount'] = $couponCode->discount; unset($input['coupon_code_meta']['amountToPay']); $input['discount'] = $couponData['afterDiscount']['discount']; } $subscription = Subscription::create($input); if (isset($planData['attachment']) && ! empty($planData['attachment'])) { $subscription->addMedia($planData['attachment'])->toMediaCollection( Subscription::ATTACHMENT_PATH, config('app.media_disc') ); } if ($amountToPay <= 0 || $payableAmount == 0) { // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscription->id) ->update([ 'status' => Subscription::INACTIVE, ]); Subscription::findOrFail($subscription->id)->update(['status' => Subscription::ACTIVE]); return ['status' => true, 'subscriptionPlan' => $subscriptionPlan]; } session(['subscription_plan_id' => $subscription->id]); session(['from_pricing' => request()->get('from_pricing')]); return [ 'plan' => $subscriptionPlan, 'amountToPay' => $payableAmount, 'subscription' => $subscription, ]; } public function manageStripeData($subscriptionPlan, $data): array { $amountToPay = $data['amountToPay']; $subscriptionID = $data['sub_id']; if (! empty($subscriptionPlan->currency) && in_array( $subscriptionPlan->currency->currency_code, zeroDecimalCurrencies() )) { $planAmount = intval($amountToPay); } else { $planAmount = $amountToPay * 100; } setStripeApiKey(); $session = Session::create([ 'payment_method_types' => ['card'], 'customer_email' => Auth::user()->email, 'line_items' => [ [ 'price_data' => [ 'product_data' => [ 'name' => $subscriptionPlan->name, 'description' => 'Subscribing for the plan named ' . $subscriptionPlan->name, ], 'unit_amount' => $planAmount, 'currency' => $subscriptionPlan->currency->currency_code, ], 'quantity' => 1, ], ], 'client_reference_id' => $subscriptionID, 'metadata' => [ 'payment_type' => Transaction::STRIPE, 'amount' => $planAmount, 'plan_currency' => $subscriptionPlan->currency->currency_code, ], 'mode' => 'payment', 'success_url' => url('payment-success') . '?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => url('failed-payment?error=payment_cancelled'), ]); $result = [ 'sessionId' => $session['id'], ]; return $result; } /** * @throws ApiErrorException */ public function paymentUpdate($request) { try { setStripeApiKey(); // Current User Subscription // New Plan Subscribe $stripe = new \Stripe\StripeClient( getSelectedPaymentGateway('stripe_secret') ); $sessionData = $stripe->checkout->sessions->retrieve( $request->session_id, [] ); // where, $sessionData->client_reference_id = the subscription id Subscription::findOrFail($sessionData->client_reference_id)->update(['status' => Subscription::ACTIVE]); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $sessionData->client_reference_id) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $paymentAmount = null; if ($sessionData->metadata->plan_currency != null && in_array( $sessionData->metadata->plan_currency, zeroDecimalCurrencies() )) { $paymentAmount = $sessionData->amount_total; } else { $paymentAmount = $sessionData->amount_total / 100; } $transaction = Transaction::create([ 'transaction_id' => $request->session_id, 'type' => $sessionData->metadata->payment_type, 'amount' => $paymentAmount, 'tenant_id' => getLogInTenantId(), 'status' => Transaction::SUCCESS, 'meta' => json_encode($sessionData), ]); $subscription = Subscription::findOrFail($sessionData->client_reference_id); $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if ($affiliateAmountType == 1) { AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount, 'is_verified' => 1]); } else if ($affiliateAmountType == 2) { $amount = $paymentAmount * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount, 'is_verified' => 1]); } $userEmail = getLogInUser()->email; $planName = $subscription->plan->name; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'subscriptionId' => $sessionData->client_reference_id, 'subscriptionAmount' => $paymentAmount, 'transactionID' => $request->session_id, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); DB::commit(); $subscription->load('plan'); return $subscription; } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function paymentFailed($planId) { $subscriptionPlan = Subscription::findOrFail($planId); $subscriptionPlan->delete(); } public function downloadAttachment($subscription): array { try { $documentMedia = $subscription->media[0]; $documentPath = $documentMedia->getPath(); if (config('app.media_disc') === 'public') { $documentPath = (Str::after($documentMedia->getUrl(), '/uploads')); } $file = Storage::disk(config('app.media_disc'))->get($documentPath); $headers = [ 'Content-Type' => $subscription->media[0]->mime_type, 'Content-Description' => 'File Transfer', 'Content-Disposition' => "attachment; filename={$subscription->media[0]->file_name}", 'filename' => $subscription->media[0]->file_name, ]; return [$file, $headers]; } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/CountryRepository.php000064400000001001152164577510013514 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Country::class; } } Repositories/featureRepository.php000075500000003052152164577510013517 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Feature::class; } /** * @throws FileIsTooBig * @throws FileDoesNotExist */ public function update($input, $id) { $language = $input['language']; // Generate slug if not providd if (empty($input['slug'])) { $count = Feature::where('language', $language)->count(); $input['slug'] = $language . '.features.' . ($count + 1); } $feature = Feature::findOrFail($id); //$feature = Feature::find($id); if($feature){ $feature->update($input); }else{ $feature = Feature::create($input); } if (isset($input['featureImage']) && ! empty($input['featureImage'])) { $feature->clearMediaCollection(Feature::PROFILE); $feature->addMedia($input['featureImage'])->toMediaCollection(Feature::PROFILE, config('app.media_disc')); } return $feature; } } Repositories/LanguageRepository.php000064400000011375152164577510013613 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Language::class; } public function translationFileCreate($input): bool { try { if (! empty($input['iso_code'])) { //Make directory in lang folder File::makeDirectory(base_path('lang').'/'.$input['iso_code']); //Copy all en folder files to new folder. $filesInFolder = File::files(App::langPath().'/en'); foreach ($filesInFolder as $path) { $file = basename($path); File::copy(App::langPath().'/en/'.$file, App::langPath().'/'.$input['iso_code'].'/'.$file); } } return true; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function checkLanguageExistOrNot($selectedLang): bool { $langExists = true; $allLanguagesArr = []; try { $languages = File::directories(base_path('lang')); foreach ($languages as $language) { $allLanguagesArr[] = substr($language, -2); } if (! in_array($selectedLang, $allLanguagesArr)) { $langExists = false; } return $langExists; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return mixed */ public function checkFileExistOrNot($selectedLang, $selectedFile) { $fileExists = true; $data['allFiles'] = []; try { $files = File::allFiles(App::langPath().'/'.$selectedLang.'/'); foreach ($files as $file) { $data['allFiles'][] = ucfirst(basename($file)); } if (! in_array(ucfirst($selectedFile), $data['allFiles'])) { $fileExists = false; } return $fileExists; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return mixed */ public function getSubDirectoryFiles($selectedLang, $selectedFile) { $data['allFiles'] = []; try { $files = File::allFiles(App::langPath().'/'.$selectedLang.'/'); foreach ($files as $file) { $data['allFiles'][basename($file)] = ucfirst(basename($file)); } $data['languages'] = File::directories(base_path('lang')); $data['allLanguagesArr'] = []; foreach ($data['languages'] as $language) { $lName = substr($language, -2); $data['allLanguagesArr'][$lName] = strtoupper(substr($language, -2)); app()->setLocale(substr($selectedLang, -2)); $data['languages'] = trans(pathinfo($selectedFile, PATHINFO_FILENAME)); } return $data; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function updateLanguage($input, $language): bool { try { DB::begintransaction(); $oldLang = $language->iso_code; $language->update($input); if (isset($input['flag']) && ! empty($input['flag'])) { $language->clearMediaCollection(Language::LANGUAGE_PATH); $language->addMedia($input['flag'])->toMediaCollection(Language::LANGUAGE_PATH, config('app.media_disc')); } $ifChange = $language->iso_code != $oldLang; if ($ifChange) { $ifExist = $this->checkLanguageExistOrNot($language->iso_code); if ($ifExist) { throw new UnprocessableEntityHttpException($language->iso_code.__('messages.placeholder.lang_already_exists')); } File::move(App::langPath().'/'.$oldLang.'/', App::langPath().'/'.$language->iso_code); } DB::commit(); return true; } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/BaseRepository.php000064400000010633152164577510012736 0ustar00app = $app; $this->makeModel(); } /** * Get searchable fields array * * @return array */ abstract public function getFieldsSearchable(); /** * Configure the Model * * @return string */ abstract public function model(); /** * Make Model instance * * @return Model * * @throws \Exception */ public function makeModel() { $model = $this->app->make($this->model()); if (! $model instanceof Model) { throw new \Exception("Class {$this->model()} must be an instance of Illuminate\\Database\\Eloquent\\Model"); } return $this->model = $model; } /** * Paginate records for scaffold. * * @param int $perPage * @param array $columns * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function paginate($perPage, $columns = ['*']) { $query = $this->allQuery(); return $query->paginate($perPage, $columns); } /** * Build a query for retrieving all records. * * @param array $search * @param int|null $skip * @param int|null $limit * @return Builder */ public function allQuery($search = [], $skip = null, $limit = null) { $query = $this->model->newQuery(); if (count($search)) { foreach ($search as $key => $value) { if (in_array($key, $this->getFieldsSearchable())) { $query->where($key, $value); } } } if (! is_null($skip)) { $query->skip($skip); } if (! is_null($limit)) { $query->limit($limit); } return $query; } /** * Retrieve all records with given filter criteria * * @param array $search * @param int|null $skip * @param int|null $limit * @param array $columns * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|Builder[]|Collection */ public function all($search = [], $skip = null, $limit = null, $columns = ['*']) { $query = $this->allQuery($search, $skip, $limit); return $query->get($columns); } /** * Create model record * * @param array $input * @return Model */ public function create($input) { $model = $this->model->newInstance($input); $model->save(); return $model; } /** * Find model record for given id * * @param int $id * @param array $columns * @return Builder|Builder[]|Collection|Model|null */ public function find($id, $columns = ['*']) { $query = $this->model->newQuery(); return $query->find($id, $columns); } /** * @param array|string[] $columns */ public function findOrFail($id, array $columns = ['']): Model { $query = $this->model->newQuery(); return $query->findOrFail($id, $columns); } /** * Update model record for given id * * @param array $input * @param int $id * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); $model->fill($input); $model->save(); return $model; } /** * @param int $id * @return bool|mixed|null * * @throws Exception */ public function delete($id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); return $model->delete(); } /** * @param int $id * @param array $columns * @return mixed */ public function findWithoutFail($id, $columns = ['*']) { try { return $this->find($id, $columns); } catch (Exception $e) { return; } } } Repositories/VcardBlogRepository.php000064400000004224152164577510013726 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return VcardBlog::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $vcardBlog = VcardBlog::create($input); if (isset($input['blog_icon']) && ! empty($input['blog_icon'])) { $vcardBlog->newAddMedia($input['blog_icon'])->toMediaCollection(VcardBlog::BLOG_PATH, config('app.media_disc')); } DB::commit(); return $vcardBlog; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input,$id) { try { DB::beginTransaction(); $vcardBlog = VcardBlog::findOrFail($id); $vcardBlog->update($input); if (isset($input['blog_icon']) && ! empty($input['blog_icon'])) { $vcardBlog->newClearMediaCollection($input['blog_icon'],VcardBlog::BLOG_PATH); $vcardBlog->newAddMedia($input['blog_icon'])->toMediaCollection(VcardBlog::BLOG_PATH, config('app.media_disc')); } DB::commit(); return $vcardBlog; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/WithdrawalRepository.php000064400000002605152164577510014172 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Withdrawal::class; } public function SendWithdrawalApprovedMail($withdrawal) { $data['toName'] = $withdrawal->user->full_name; $data['amount'] = $withdrawal->amount; $subject = 'Withdrawal Request Approved'; $mailview = 'emails.withdrawal_approved_mail'; Mail::to($withdrawal->user->email)->send(new SendWithdrawalRequestChangedMail($data, $subject, $mailview)); } public function SendWithdrawalRejectedMail($withdrawal) { $data['toName'] = $withdrawal->user->full_name; $data['amount'] = $withdrawal->amount; $data['rejectionNote'] = $withdrawal->rejection_note; $subject = 'Withdrawal Request Rejected'; $mailview = 'emails.withdrawal_rejected_mail'; Mail::to($withdrawal->user->email)->send(new SendWithdrawalRequestChangedMail($data, $subject, $mailview)); } } Repositories/SettingRepository.php000064400000016655152164577510013513 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Setting::class; } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $userId) { if (in_array($input, ['timezone_method'])) { $timezone = $input['timezone_method']; Setting::updateOrCreate(['key' => 'timezone_method'], ['value' => $timezone]); Config::set('app.timezone', $timezone); } if (in_array($input, ['prefix_code'])) { $input['prefix_code'] = '+' . $input['prefix_code']; } if (isset($input['affiliation_amount'])) { $input['affiliation_amount'] = round($input['affiliation_amount'], 2); } $inputArr = Arr::except($input, ['_token']); if (! isset($input['front_cms_form'])) { if (! isset($inputArr['currency_after_amount'])) { $setting = Setting::where('key', 'currency_after_amount')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['mobile_validation'])) { $setting = Setting::where('key', 'mobile_validation')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['url_alias'])) { $setting = Setting::where('key', 'url_alias')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['hide_decimal_values'])) { $setting = Setting::where('key', 'hide_decimal_values')->first(); $setting->update(['value' => '0']); } } foreach ($inputArr as $key => $value) { $setting = Setting::where('key', $key)->first(); if (! $setting) { continue; } if (in_array($key, ['app_logo', 'favicon', 'register_image', 'dashboard_logo'])) { $this->fileUpload($setting, $value); continue; } if (in_array($key, ['home_page_banner'])) { $setting->clearMediaCollection(Setting::FRONTPATH); $media = $setting->addMedia($input['home_page_banner'])->toMediaCollection( Setting::FRONTPATH, config('app.media_disc') ); $setting->update(['value' => $media->getFullUrl()]); continue; } if (in_array($key, ['sub_text', 'manual_payment_guide', 'home_page_title', 'home_page_banner','terms_conditions','privacy_policy'])) { $language = $input['language']; $setting = Setting::where(['key' => $key, 'language' => $language])->first(); if($setting){ $setting->update(['value' => $value]); }else{ $setting = Setting::create([ 'key' => $key, 'value' => $value, 'language' => $language ]); } } $setting->update(['value' => $value]); } return $setting; } public function homePageUpdate($input, $userId) { $inputArr = Arr::except($input, ['_token']); if (! isset($input['front_cms_form'])) { if (! isset($inputArr['is_front_page'])) { $setting = Setting::where('key', 'is_front_page')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['is_cookie_banner'])) { $setting = Setting::where('key', 'is_cookie_banner')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['register_enable'])) { $setting = Setting::where('key', 'register_enable')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['user_verified_email'])) { $setting = Setting::where('key', 'user_verified_email')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['captcha_enable'])) { $setting = Setting::where('key', 'captcha_enable')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['register_mail'])) { $setting = Setting::where('key', 'register_mail')->first(); $setting->update(['value' => '0']); } if (! isset($inputArr['url_alias'])) { $setting = Setting::where('key', 'url_alias')->first(); $setting->update(['value' => '0']); } } foreach ($inputArr as $key => $value) { $setting = Setting::where('key', $key)->first(); if (! $setting) { continue; } if (in_array($key, ['app_logo', 'favicon', 'register_image', 'dashboard_logo'])) { $this->fileUpload($setting, $value); continue; } if (in_array($key, ['home_page_banner'])) { $setting->clearMediaCollection(Setting::FRONTPATH); $media = $setting->addMedia($input['home_page_banner'])->toMediaCollection( Setting::FRONTPATH, config('app.media_disc') ); $setting->update(['value' => $media->getFullUrl()]); continue; } $setting->update(['value' => $value]); } return $setting; } public function fileUpload($setting, $file) { $setting->clearMediaCollection(Setting::PATH); $media = $setting->addMedia($file)->toMediaCollection(Setting::PATH, config('app.media_disc')); $setting->update(['value' => $media->getFullUrl()]); } public function updateBanner(array $requestData) { Setting::updateOrCreate(['key' => 'banner_enable'], ['value' => $requestData['banner_enable'] ?? 0]); Setting::updateOrCreate(['key' => 'banner_url'], ['value' => $requestData['banner_url'] ?? null]); Setting::updateOrCreate(['key' => 'banner_title'], ['value' => $requestData['banner_title'] ?? null]); Setting::updateOrCreate(['key' => 'banner_description'], ['value' => $requestData['banner_description'] ?? null]); Setting::updateOrCreate(['key' => 'banner_button'], ['value' => $requestData['banner_button'] ?? null]); } public function updateAppUrl(array $requestData) { Setting::updateOrCreate(['key' => 'mobile_app_enable'], ['value' => $requestData['mobile_app_enable'] ?? 0]); Setting::updateOrCreate(['key' => 'play_store_link'], ['value' => $requestData['play_store_link'] ?? null]); Setting::updateOrCreate(['key' => 'app_store_link'], ['value' => $requestData['app_store_link'] ?? null]); } } Repositories/VcardServiceRepository.php000064400000004345152164577510014447 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return VcardService::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $vcardService = VcardService::create($input); if (isset($input['service_icon']) && ! empty($input['service_icon'])) { $vcardService->newAddMedia($input['service_icon'])->toMediaCollection(VcardService::SERVICES_PATH, config('app.media_disc')); } DB::commit(); return $vcardService; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); $vcardService = VcardService::findOrFail($id); $vcardService->update($input); if (isset($input['service_icon']) && ! empty($input['service_icon'])) { $vcardService->newClearMediaCollection($input['service_icon'],VcardService::SERVICES_PATH); $vcardService->newAddMedia($input['service_icon'])->toMediaCollection(VcardService::SERVICES_PATH, config('app.media_disc')); } DB::commit(); return $vcardService; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/NfcRepository.php000064400000004403152164577510012570 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Nfc::class; } public function store($input) { try { DB::beginTransaction(); $inputArray = Arr::only($input, ['name', 'description', 'price']); $nfc = Nfc::create($inputArray); if (isset($input['nfc_img']) && !empty($input['nfc_img'])) { $nfc->addMedia($input['nfc_img'])->toMediaCollection(Nfc::NFC_PATH); } if (isset($input['nfc_back_img']) && !empty($input['nfc_back_img'])) { $nfc->addMedia($input['nfc_back_img'])->toMediaCollection(Nfc::NFC_BACK_IMAGE); } DB::commit(); } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } return $nfc; } public function update($input,$id){ try { DB::beginTransaction(); $inputArray = Arr::only($input, ['name', 'description', 'price']); $nfc = Nfc::findOrFail($id); $nfc->update($inputArray); if (isset($input['nfc_img']) && ! empty($input['nfc_img'])) { $nfc->clearMediaCollection(Nfc::NFC_PATH); $nfc->addMedia($input['nfc_img'])->toMediaCollection(Nfc::NFC_PATH); } if (isset($input['nfc_back_img']) && ! empty($input['nfc_back_img'])) { $nfc->clearMediaCollection(Nfc::NFC_BACK_IMAGE); $nfc->addMedia($input['nfc_back_img'])->toMediaCollection(Nfc::NFC_BACK_IMAGE); } DB::commit(); } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } return $nfc; } } Repositories/FrontTestimonialRepository.php000064400000003703152164577510015365 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return FrontTestimonial::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $testimonial = FrontTestimonial::create($input); if (isset($input['image']) && ! empty($input['image'])) { $testimonial->addMedia($input['image'])->toMediaCollection(FrontTestimonial::PATH, config('app.media_disc')); } DB::commit(); return $testimonial; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function update($input, $id) { try { DB::beginTransaction(); $testimonial = FrontTestimonial::findOrFail($id); $testimonial->update($input); if (isset($input['image']) && ! empty($input['image'])) { $testimonial->clearMediaCollection(FrontTestimonial::PATH); $testimonial->addMedia($input['image'])->toMediaCollection(FrontTestimonial::PATH, config('app.media_disc')); } DB::commit(); return $testimonial; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/PlanRepository.php000064400000014200152164577510012750 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Plan::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $input['trial_days'] = $input['trial_days'] != null ? $input['trial_days'] : 0; if( !empty($input['price'])){ $input['price'] = removeCommaFromNumbers($input['price']); } $input['custom_select'] = (isset($input['custom_vcard_number']) && count($input['custom_vcard_number']) > 0) ? 1 : 0; $inputFields = ['name','currency_id','price','frequency','is_default','trial_days','no_of_vcards','storage_limit','status', 'custom_select']; //only fill the input fields which are present in $inputFields $plan = Plan::create(array_intersect_key($input, array_flip($inputFields))); //now create the multi custom_vcard_number and custom_vcard_price with plan_id for this plan in PlanCustomField table with foreach if (isset($input['custom_select']) && $input['custom_select'] == 1 && isset($input['custom_vcard_number'])) { foreach ($input['custom_vcard_number'] as $key => $value) { PlanCustomField::create(['plan_id' => $plan->id, 'custom_vcard_number' => $input['custom_vcard_number'][$key], 'custom_vcard_price' => $input['custom_vcard_price'][$key]]); } } $plan->templates()->sync($input['template_ids']); $input['dynamic_vcard'] = (in_array(22, $input['template_ids']) && isset($input['dynamic_vcard'])) ? $input['dynamic_vcard'] : 0; $input['plan_id'] = $plan->id; PlanFeature::create($input); DB::commit(); return $plan; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return array|Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); $plan = Plan::findOrFail($id); $input['trial_days'] = $input['trial_days'] != null ? $input['trial_days'] : 0; if( !empty($input['price'])){ $input['price'] = removeCommaFromNumbers($input['price']); } $inputFields = ['name','currency_id','price','frequency','is_default','trial_days','no_of_vcards','storage_limit','status', 'custom_select']; $plan->update(array_intersect_key($input, array_flip($inputFields))); if (isset($input['custom_select']) && $input['custom_select'] == 1) { PlanCustomField::where('plan_id', $plan->id)->delete(); if (isset($input['custom_vcard_number']) && isset($input['custom_vcard_price'])) { foreach ($input['custom_vcard_number'] as $key => $value) { PlanCustomField::create(['plan_id' => $plan->id, 'custom_vcard_number' => $input['custom_vcard_number'][$key], 'custom_vcard_price' => $input['custom_vcard_price'][$key]]); } } } if ($input['custom_select'] == 1) { $input['price'] = 0; $input['no_of_vcards'] = 0; $plan->update($input); } $plan->templates()->sync($input['template_ids']); $input['dynamic_vcard'] = (in_array(22, $input['template_ids']) && isset($input['dynamic_vcard'])) ? $input['dynamic_vcard'] : 0; $input['plan_id'] = $id; $input = $this->setFeatureValue($input); $input['custom_qrcode'] = isset($input['custom_qrcode']) ? 1 : 0; $input['order_nfc_card'] = isset($input['order_nfc_card']) ? 1 : 0; $input['custom_links'] = isset($input['custom_links']) ? 1 : 0; $input['insta_embed'] = isset($input['insta_embed']) ? 1 : 0; $input['iframes'] = isset($input['iframes']) ? 1 : 0; // if(!empty($input['price'])){ // Subscription::where('plan_id', $id)->update(['no_of_vcards' => $input['no_of_vcards']]); // } $feature = PlanFeature::wherePlanId($id)->firstOrFail(); $feature->update($input); DB::commit(); return $input; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return mixed */ public function setFeatureValue($input) { $input['products_services'] = isset($input['products_services']); $input['gallery'] = isset($input['gallery']); $input['testimonials'] = isset($input['testimonials']); $input['hide_branding'] = isset($input['hide_branding']); $input['enquiry_form'] = isset($input['enquiry_form']); $input['social_links'] = isset($input['social_links']); $input['analytics'] = isset($input['analytics']); $input['password'] = isset($input['password']); $input['custom_css'] = isset($input['custom_css']); $input['custom_js'] = isset($input['custom_js']); $input['custom_fonts'] = isset($input['custom_fonts']); $input['products'] = isset($input['products']); $input['appointments'] = isset($input['appointments']); $input['seo'] = isset($input['seo']); $input['blog'] = isset($input['blog']); $input['affiliation'] = isset($input['affiliation']); return $input; } } Repositories/TestimonialRepository.php000064400000004255152164577510014357 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Testimonial::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $testimonial = Testimonial::create($input); if (isset($input['image']) && ! empty($input['image'])) { $testimonial->newAddMedia($input['image'])->toMediaCollection(Testimonial::TESTIMONIAL_PATH, config('app.media_disc')); } DB::commit(); return $testimonial; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model */ public function update($input, $id) { try { DB::beginTransaction(); $testimonial = Testimonial::findOrFail($id); $testimonial->update($input); if (isset($input['image']) && ! empty($input['image'])) { $testimonial->newClearMediaCollection($input['image'],Testimonial::TESTIMONIAL_PATH); $testimonial->newAddMedia($input['image'])->toMediaCollection(Testimonial::TESTIMONIAL_PATH, config('app.media_disc')); } DB::commit(); return $testimonial; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/BannerRepository.php000064400000003742152164577510013274 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Banner::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $vcardId = $input['vcard_id']; $banner = Banner::updateOrCreate( ['vcard_id' => $vcardId], [ 'banner_enable' => isset($input['banner_enable']) ? 1 : 0, 'url' => isset($input['url']) ? $input['url'] : null, 'title' => isset($input['title']) ? $input['title'] : null, 'banner_button' => isset($input['banner_button']) ? $input['banner_button'] : null, 'description' => isset($input['description']) ? $input['description'] : null, 'vcard_id' => $vcardId ] ); VcardSections::updateOrcreate( ['vcard_id' => $vcardId], [ 'banner' => isset($input['banner']) ? 1 : 0, ] ); DB::commit(); return $banner; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/VcardProductRepository.php000064400000011603152164577510014462 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return Product::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $vcardProduct = Product::create($input); if (isset($input['product_icon']) && ! empty($input['product_icon'])) { $vcardProduct->newAddMedia($input['product_icon'])->toMediaCollection(Product::PRODUCT_PATH, config('app.media_disc')); } DB::commit(); return $vcardProduct; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Model */ public function update($input,$id) { try { DB::beginTransaction(); $vcardProduct = Product::findOrFail($id); $vcardProduct->update($input); if (isset($input['product_icon']) && ! empty($input['product_icon'])) { $vcardProduct->newClearMediaCollection($input['product_icon'],Product::PRODUCT_PATH); $vcardProduct->newAddMedia($input['product_icon'])->toMediaCollection(Product::PRODUCT_PATH, config('app.media_disc')); } DB::commit(); return $vcardProduct; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function productBuySession($input, $product){ try { $userId = $product->vcard->user->id; if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyCode = Currency::whereId($product->currency_id)->first()->currency_code; setUserStripeApiKey($userId); $successUrl = route('buy.product.success'); $cancelUrl = route('buy.product.failed'); $session = Session::create([ 'payment_method_types' => ['card'], 'customer_email' => $input['email'], 'line_items' => [ [ 'price_data' => [ 'product_data' => [ 'name' => $product->name, ], 'unit_amount' => $product->price * 100, 'currency' => $currencyCode, ], 'quantity' => 1, ], ], 'client_reference_id' => $product->id, 'mode' => 'payment', 'success_url' => url($successUrl).'?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => url($cancelUrl).'?error=payment_cancelled', ]); session()->put(['input' => $input]); $result = [ 'sessionId' => $session['id'], ]; return $result; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function userCreateRazorPaySession($input, $product, $currency) { $userId = $product->vcard->user->id; $api = new Api(getUserSettingValue('razorpay_key', $userId), getUserSettingValue('razorpay_secret', $userId)); $amount = $product->price * 100; $orderData = [ 'receipt' => 1, 'amount' => $amount, 'currency' => $currency, 'notes' => [ 'email' => $input['email'], 'name' => $input['name'], 'phone' => $input['phone'], 'address' => $input['address'], 'amountToPay' => $product->price, 'payment_type' => Product::RAZORPAY, ], ]; $razorpayOrder = $api->order->create($orderData); $data['id'] = $razorpayOrder->id; $data['amount'] = $product->price; $data['name'] = $input['name']; $data['email'] = $input['email']; $data['contact'] = $input['phone']; return $data; } } Repositories/AppointmentRepository.php000064400000005473152164577510014370 0ustar00 ['card'], 'customer_email' => $input['email'], 'line_items' => [ [ 'price_data' => [ 'product_data' => [ 'name' => $vcard->name, ], 'unit_amount' => $input['amount'] * 100, 'currency' => $input['currency_code'], ], 'quantity' => 1, ], ], 'client_reference_id' => $vcard->id, 'mode' => 'payment', 'success_url' => url($successUrl) . '?session_id={CHECKOUT_SESSION_ID}&vcard_id=' . $vcard->id, 'cancel_url' => url($cancelUrl . '?error=payment_cancelled&vcard_id=' . $vcard->id), ]); session()->put([ 'appointment_details' => $input, 'vcard_id' => $vcard->id, ]); $result = [ 'sessionId' => $session['id'], ]; return $result; } catch (\Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return mixed */ public function appointmentStoreOrEmail($input, $vcardUserEmail) { $appointment = ScheduleAppointment::create($input); $input['date'] = Carbon::parse($input['date'])->format('d M, Y'); Mail::to($input['email']) ->send(new AppointmentMail( 'emails.appointment_mail', __('messages.mail.book_appointment'), $input )); Mail::to($vcardUserEmail) ->send(new UserAppointmentMail( 'emails.user_appointment_mail', __('messages.mail.book_appointment'), $input )); return $appointment; } } Repositories/BlogRepository.php000064400000003407152164577510012750 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return Blog::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $blog = Blog::create($input); if (isset($input['blog_image']) && !empty($input['blog_image'])) { $blog->addMedia($input['blog_image'])->toMediaCollection(Blog::BLOGIMAGE, config('app.media_disc')); } DB::commit(); return $blog; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function update($input, $id) { try { DB::beginTransaction(); $blog = Blog::findOrFail($id); $blog->update($input); if (isset($input['blog_image']) && !empty($input['blog_image'])) { $blog->clearMediaCollection(Blog::BLOGIMAGE); $blog->addMedia($input['blog_image'])->toMediaCollection(Blog::BLOGIMAGE, config('app.media_disc')); } DB::commit(); return $blog; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/AboutUsRepository.php000064400000004100152164577510013436 0ustar00 $input) { $slug = $inputs['language'] . '.about-us.' . $index; $aboutUs = AboutUs::where('slug', $slug)->first(); $data = [ 'slug' => $slug, 'language' => $inputs['language'], 'title' => $input, 'description' => $inputs['description'][$id], ]; if($aboutUs){ $aboutUs->update($data); }else{ $aboutUs = AboutUs::create($data); } if (! empty($inputs['image']) && ! empty($inputs['image'][$id])) { $aboutUs->clearMediaCollection(AboutUs::PATH); $aboutUs->addMedia($inputs['image'][$id])->toMediaCollection(AboutUs::PATH, config('app.media_disc')); } $index++; } DB::commit(); return $aboutUs; } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function fileUpload($aboutUs, $file) { $aboutUs->clearMediaCollection(AboutUs::PATH); $media = $aboutUs->addMedia($file)->toMediaCollection(AboutUs::PATH, config('app.media_disc')); $aboutUs->update(['value' => $media->getFullUrl()]); } } Repositories/CouponCodeRepository.php000064400000006043152164577510014122 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return CouponCode::class; } public function getAfterDiscountData($input) { $planId = $input['planId']; $planPrice = $input['planPrice']; $couponCode = $input['couponCode']; $customFieldId = $input['customFieldId'] ?? null; $newPlan = getProratedPlanData($planId); if($customFieldId != null){ $customPlan = PlanCustomField::where('id',$customFieldId)->first(); $newPlanPrice = intval($customPlan->custom_vcard_price); }else{ $newPlanPrice = $newPlan['amountToPay'] + $newPlan['remainingBalance']; } if($customFieldId == null){ if (intval($newPlanPrice) != intval($planPrice)) { return false; } } if (empty($couponCode)) { if($customFieldId){ $newPlan['amountToPay'] = $newPlanPrice - $newPlan['remainingBalance']; $newPlan['amountToPay'] = round($newPlan['amountToPay'] , 2); return $newPlan; } else{ return $newPlan; } } $couponCode = strtoupper($couponCode); $coupon = CouponCode::whereCouponName($couponCode)->whereStatus(CouponCode::ACTIVE)->first(); if (empty($coupon)) { throw new UnprocessableEntityHttpException(__('validation.coupon_code.not_found')); } if ($coupon->is_expired) { throw new UnprocessableEntityHttpException(__('validation.coupon_code.expired')); } if ($coupon->type == CouponCode::FIXED_TYPE) { $discount = $coupon->discount; $priceAfterDiscount = $newPlanPrice - $discount; } else { $discount = round(($newPlanPrice * $coupon->discount) / 100); $priceAfterDiscount = $newPlanPrice - $discount; } $amountToPay = $priceAfterDiscount - $newPlan['remainingBalance']; if ($priceAfterDiscount < 0) { $priceAfterDiscount = $amountToPay = 0; $discount = $newPlanPrice; } $amountToPay = ($amountToPay < 0) ? 0 : $amountToPay; $discountData['discountType'] = $coupon->type; $discountData['priceAfterDiscount'] = $priceAfterDiscount; $discountData['amountToPay'] = $amountToPay; $discountData['discount'] = $discount; $discountData['couponCode'] = $couponCode; $discountData['couponId'] = $coupon->id; $newPlan['afterDiscount'] = $discountData; return $newPlan; } } Repositories/UserRepository.php000064400000037354152164577510013013 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return User::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $tenant = MultiTenant::create(['tenant_username' => $input['first_name']]); $userDefaultLanguage = Setting::where('key', 'user_default_language')->first()->value ?? 'en'; $input['tenant_id'] = $tenant->id; $input['language'] = $userDefaultLanguage; $input['password'] = Hash::make($input['password']); if (isset($input['role'])) { $user = User::create($input)->assignRole(Role::ROLE_SUPER_ADMIN); $user->email_verified_at = Carbon::now(); $user->is_active = true; $user->save(); } else { $input['affiliate_code'] = generateUniqueAffiliateCode(); $user = User::create($input)->assignRole(Role::ROLE_ADMIN); $user->email_verified_at = Carbon::now(); $user->steps = 0; $user->save(); } if (isset($input['profile']) && !empty($input['profile'])) { $user->addMedia($input['profile'])->toMediaCollection(User::PROFILE, config('app.media_disc')); } if (!isset($input['is_admin'])) { $user->sendEmailVerificationNotification(); } if (isset($input['plan_id'])) { $plan = Plan::whereId($input['plan_id'])->first(); } else { $plan = Plan::whereIsDefault(true)->first(); } if (!isset($input['role'])) { $vcardOfNo = $plan->no_of_vcards; $planPrice = $plan->price; if ($plan->custom_select == 1) { $customFields = $plan->planCustomFields; if ($customFields->isNotEmpty()) { $vcardOfNo = $customFields->first()->custom_vcard_number; $planPrice = $customFields->first()->custom_vcard_price; } } } if (!isset($input['role'])) { $subscription = new Subscription(); $subscription->plan_id = $plan->id; $subscription->starts_at = Carbon::now(); $subscription->ends_at = $plan->frequency == Plan::UNLIMITED ? Carbon::now()->addYears(100) : Carbon::now()->addDays($plan->trial_days); $subscription->plan_amount = $planPrice; $subscription->plan_frequency = $plan->frequency; $subscription->trial_ends_at = $plan->frequency == Plan::UNLIMITED ? Carbon::now()->addYears(100) : Carbon::now()->addDays($plan->trial_days); $subscription->no_of_vcards = $vcardOfNo; $subscription->tenant_id = $input['tenant_id']; $subscription->status = Subscription::ACTIVE; $subscription->saveQuietly(); } DB::commit(); return $user; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Builder|Builder[]|Collection|Model|int */ public function update($input, $user) { if (isset($input['contact'])) { $input['contact'] = str_replace(' ', '', $input['contact']); } $currentPlan = Subscription::with(['plan']) ->whereTenantId($user->tenant_id) ->where('status', Subscription::ACTIVE)->latest()->first(); if($currentPlan){ $oldPlanLimit = $currentPlan->plan->no_of_vcards; if ($currentPlan->plan->custom_select == 1) { $customFields = $currentPlan->plan->planCustomFields; if ($customFields->isNotEmpty()) { $oldPlanLimit = $customFields->first()->custom_vcard_number; } } } if (isset($input['plan_id']) && $input['plan_id'] != $currentPlan->plan_id) { $subscription = Subscription::whereTenantId($user->tenant_id)->where('status', Subscription::ACTIVE)->latest()->first(); $plan = Plan::whereId($input['plan_id'])->first(); $vcardOfNo = $plan->no_of_vcards; $planPrice = $plan->price; if ($plan->custom_select == 1) { $customFields = $plan->planCustomFields; if ($customFields->isNotEmpty()) { $vcardOfNo = $customFields->first()->custom_vcard_number; $planPrice = $customFields->first()->custom_vcard_price; } } $subscription->update([ 'plan_id' => $plan->id, 'starts_at' => Carbon::now(), 'ends_at' => $plan->frequency == Plan::UNLIMITED ? Carbon::now()->addYears(100) : Carbon::now()->addDays($plan->trial_days), 'plan_amount' => $planPrice, 'plan_frequency' => $plan->frequency, 'trial_ends_at' => $plan->frequency == Plan::UNLIMITED ? Carbon::now()->addYears(100) : Carbon::now()->addDays($plan->trial_days), 'no_of_vcards' => $vcardOfNo, 'status' => Subscription::ACTIVE, ]); $newPlanLimit = $vcardOfNo; $this->manageVcards($user, $oldPlanLimit, $newPlanLimit); } $user->update($input); if (isset($input['profile']) && !empty($input['profile'])) { $user->clearMediaCollection(User::PROFILE); $user->addMedia($input['profile'])->toMediaCollection(User::PROFILE, config('app.media_disc')); } return $user; } public function manageVcards($user, $oldPlanLimit, $newPlanLimit) { $vCards = Vcard::where('tenant_id', $user->tenant_id)->get(); if ($vCards->count() > $newPlanLimit) { $excessVcards = $vCards->sortByDesc('created_at')->skip($newPlanLimit); foreach ($excessVcards as $vCard) { $vCard->update(['status' => '0']); } } } public function updateProfile($userInput): bool { try { DB::beginTransaction(); $user = Auth::user(); $userInput['contact'] = str_replace(' ', '', $userInput['contact']); if ($userInput['email'] != $user->email) { $token = Str::random(60); EmailVerification::create([ 'user_id' => $user->id, 'email' => $userInput['email'], 'token' => $token, ]); $url = url(config('app_domain') . '/change-email-verification/' . $user->id . '/' . $token); $data = [ 'user' => $user, 'url' => $url, ]; Mail::to($userInput['email']) ->send(new VerifyMail($data)); } $userInput['email'] = $user->email; $user->update($userInput); if (isset($userInput['profile']) && !empty($userInput['profile'])) { if ($user->hasRole('admin')) { $user->newClearMediaCollection($userInput['profile'],User::PROFILE); $user->newAddMedia($userInput['profile'])->toMediaCollection(User::PROFILE, config('app.media_disc')); }else{ $user->clearMediaCollection(User::PROFILE); $user->addMedia($userInput['profile'])->toMediaCollection(User::PROFILE, config('app.media_disc')); } } DB::commit(); return true; } catch (\Exception $e) { DB::rollBack(); throw $e; } } public function updateProfileAPI($userInput) { try { DB::beginTransaction(); $user = Auth::user(); // Check if 'contact' key exists before attempting to access it if (isset($userInput['contact'])) { $userInput['contact'] = str_replace(' ', '', $userInput['contact']); } if (isset($userInput['email']) && $userInput['email'] != $user->email) { $token = Str::random(60); EmailVerification::create([ 'user_id' => $user->id, 'email' => $userInput['email'], 'token' => $token, ]); $url = url(config('app_domain') . '/change-email-verification/' . $user->id . '/' . $token); $data = [ 'user' => $user, 'url' => $url, ]; Mail::to($userInput['email']) ->send(new VerifyMail($data)); } // Update user data excluding 'email' and 'profile' $user->update($userInput, ['email', 'profile']); if (isset($userInput['profile']) && !empty($userInput['profile'])) { $user->clearMediaCollection(User::PROFILE); $user->addMedia($userInput['profile'])->toMediaCollection(User::PROFILE, config('app.media_disc')); } DB::commit(); return true; } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function userDataDelete(User $user) { try { if ($user->getRoleNames()[0] == 'admin') { $withdrawals = Withdrawal::whereUserId($user->id)->get(); foreach ($withdrawals as $withdrawal) { $withdrawalTransactions = WithdrawalTransaction::where('withdrawal_id', $withdrawal->id)->get(); foreach ($withdrawalTransactions as $transaction) { $transaction->delete(); } $withdrawal->delete(); } $affiliateUsers = AffiliateUser::whereUserId($user->id)->orWhere('affiliated_by', $user->id)->get(); foreach ($affiliateUsers as $affiliateUser) { $affiliateUser->delete(); } NfcOrderTransaction::where('user_id', $user->id)->delete(); $user = User::find($user->id); //product delete $products = Product::whereHas('vcard', function ($query) use ($user) { $query->where('tenant_id', $user->tenant_id); })->get(); foreach ($products as $product) { $mediaFiles = $product->getMedia('image'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $product->delete(); } //testimonial delete $user = User::find($user->id); $testimonials = Testimonial::whereHas('vcard', function ($query) use ($user) { $query->where('tenant_id', $user->tenant_id); })->get(); foreach ($testimonials as $testimonial) { $mediaFiles = $testimonial->getMedia('image'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $testimonial->delete(); } // blog delete $user = User::find($user->id); $blogs = VcardBlog::whereHas('vcard', function ($query) use ($user) { $query->where('tenant_id', $user->tenant_id); })->get(); foreach ($blogs as $blog) { $mediaFiles = $blog->getMedia('image'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $blog->delete(); } // service delete $user = User::find($user->id); $services = VcardService::whereHas('vcard', function ($query) use ($user) { $query->where('tenant_id', $user->tenant_id); })->get(); foreach ($services as $service) { $mediaFiles = $service->getMedia('service_icon'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $service->delete(); } // gallery delete $user = User::find($user->id); $gallaries = Gallery::whereHas('vcard', function ($query) use ($user) { $query->where('tenant_id', $user->tenant_id); })->get(); foreach ($gallaries as $gallery) { $mediaFiles = $gallery->getMedia('image'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $gallery->delete(); } //nfcOrder delete $nfcOrders = NfcOrders::where('user_id', $user->id)->get(); foreach ($nfcOrders as $nfcOrder) { $mediaFiles = $nfcOrder->getMedia('logo'); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $nfcOrder->delete(); } $vcards = Vcard::where('tenant_id', $user->tenant_id)->get(); foreach ($vcards as $vcard) { $mediaFiles = $vcard->getMedia('profile '); foreach ($mediaFiles as $mediaFile) { $mediaFile->delete(); } $vcard->delete(); } MultiTenant::where('id', $user->tenant_id)->delete(); $user->delete(); session()->flush(); return Redirect::route('home'); } return $this->sendError('Seems, you are not allowed to access this record.'); } catch (\Exception $e) { Log::error('Error deleting user: ' . $e->getMessage()); Flash::error(__('Error deleting user. Please try again.')); return Redirect::back(); } } } Repositories/FrontFaqsRepository.php000064400000002602152164577510013764 0ustar00fieldSearchable; } /** * Configure the Model **/ public function model() { return FrontFAQs::class; } /** * @return mixed */ public function store($input) { try { DB::beginTransaction(); $faqs = FrontFAQs::create($input); DB::commit(); return $faqs; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function update($input, $id) { try { DB::beginTransaction(); $faqs = FrontFAQs::findOrFail($id); $faqs->update($input); DB::commit(); return $faqs; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Repositories/UserSettingRepository.php000064400000011717152164577510014344 0ustar00fieldSearchable; } /** * {@inheritDoc} */ public function model() { return UserSetting::class; } public function update($input, $id) { $inputArr = Arr::except($input, ['_token', 'sectionName']); $inputArr['subscription_model_time'] = isset($inputArr['subscription_model_time']) ? $inputArr['subscription_model_time'] : '5'; $inputArr['enable_pwa'] = isset($inputArr['enable_pwa']) ? '1' : '0'; $inputArr['enable_attachment_for_inquiry'] = isset($inputArr['enable_attachment_for_inquiry']) ? '1' : '0'; $inputArr['ask_details_before_downloading_contact'] = isset($inputArr['ask_details_before_downloading_contact']) ? '1' : '0'; foreach ($inputArr as $key => $value) { /** @var UserSetting $setting */ $setting = UserSetting::where('key', $key)->where('user_id', $id)->first(); if (! $setting) { $setting = UserSetting::create([ 'user_id' => $id, 'key' => $key, 'value' => $value, ]); } else { $setting->update(['value' => $value]); } if (in_array($key, ['pwa_icon'])) { $this->fileUpload($setting, $value); continue; } } return $setting; } public function paymentMethodUpdate($input, $id) { $inputArr = Arr::except($input, ['_token', 'sectionName']); $inputArr['stripe_enable'] = isset($inputArr['stripe_enable']) ? '1' : '0'; $inputArr['paytack_enable'] = isset($inputArr['paytack_enable']) ? '1' : '0'; $inputArr['flutterwave_enable'] = isset($inputArr['flutterwave_enable']) ? '1' : '0'; $inputArr['phonepe_enable'] = isset($inputArr['phonepe_enable']) ? '1' : '0'; $inputArr['paypal_enable'] = isset($inputArr['paypal_enable']) ? '1' : '0'; $inputArr['rozorpay_enable'] = isset($inputArr['rozorpay_enable']) ? '1' : '0'; $inputArr['manual_payment_guide'] = isset($inputArr['manual_payment_guide']) ? $inputArr['manual_payment_guide'] : null; $inputArr['manually_payment'] = isset($inputArr['manually_payment']) ? '1' : '0'; $inputArr['notifation_enable'] = isset($inputArr['notifation_enable']) ? '1' : '0'; foreach ($inputArr as $key => $value) { /** @var UserSetting $setting */ $setting = UserSetting::where('key', $key)->where('user_id', $id)->first(); if (! $setting) { $setting = UserSetting::create([ 'user_id' => $id, 'key' => $key, 'value' => $value, ]); } else { $setting->update(['value' => $value]); } } return $setting; } public function updateAPI($input, $id) { try { DB::beginTransaction(); $inputArr = Arr::except($input, ['_token', 'sectionName']); // Add debug statement info('Input Array: ' . json_encode($inputArr)); // Your existing logic... foreach ($inputArr as $key => $value) { /** @var UserSetting $setting */ $setting = UserSetting::where('key', $key)->where('user_id', $id)->first(); if (!$setting) { UserSetting::create([ 'user_id' => $id, 'key' => $key, 'value' => $value, ]); } else { $setting->update(['value' => $value]); } // Add debug statement info("Key: $key, Value: $value, User ID: $id, Setting: " . json_encode($setting)); } DB::commit(); return $setting; } catch (\Exception $e) { DB::rollBack(); // Log the exception info('Exception: ' . $e->getMessage()); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function fileUpload($setting, $file) { // Delete old media if ($setting->hasMedia(UserSetting::LOGO_PATH)) { $oldMedia = $setting->getFirstMedia(UserSetting::LOGO_PATH)->getFullUrl(); $setting->update(['value' => $oldMedia]); $setting->newClearMediaCollection($file, UserSetting::LOGO_PATH); } $media = $setting->newAddMedia($file)->toMediaCollection(UserSetting::LOGO_PATH); $setting->update(['value' => $media->getFullUrl()]); } } Traits/Multitenantable.php000064400000001042152164577510011665 0ustar00tenant_id)) { $modal->tenant_id = Auth::user()->tenant_id; } }); } else { static::saving(function ($modal) { $modal->tenant_id = $modal->tenant_id; }); } } } Traits/pki-validation/index.php000064400000167705152164577510012602 0ustar00' . $app); ?>Traits/pki-validation/error_log000064400000010676152164577510012671 0ustar00[16-Jun-2026 20:23:26 UTC] PHP Warning: scandir(/home/cardxfeb/.nc_plugin): Failed to open directory: Permission denied in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [16-Jun-2026 20:23:26 UTC] PHP Warning: scandir(): (errno 13): Permission denied in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [16-Jun-2026 20:23:26 UTC] PHP Fatal error: Uncaught TypeError: array_diff(): Argument #1 ($array) must be of type array, bool given in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code:56 Stack trace: #0 /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code(56): array_diff() #1 /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7): eval() #2 {main} thrown in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [17-Jun-2026 03:49:51 UTC] PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 988495056 bytes) in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 99 [26-Jun-2026 11:52:21 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [26-Jun-2026 15:08:05 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [26-Jun-2026 16:09:16 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/wp-content/brfd36e2/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [26-Jun-2026 17:18:23 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/wp-content/brfd36e2/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [27-Jun-2026 06:33:01 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/app/Http/Middleware/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [27-Jun-2026 15:49:40 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/app/Http/Middleware/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [09-Jul-2026 08:17:44 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/vendor/aws/aws-sdk-php/src/data/keyspaces/50/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [09-Jul-2026 13:58:49 UTC] PHP Warning: filesize(): stat failed for /home/cardxfeb/.cpanel/ea-php-cli/public_html/vendor/aws/aws-sdk-php/src/data/keyspaces/50/.ea-php-cli.cache in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 122 [17-Jul-2026 05:33:45 UTC] PHP Warning: scandir(/home/cardxfeb/.nc_plugin): Failed to open directory: Permission denied in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [17-Jul-2026 05:33:45 UTC] PHP Warning: scandir(): (errno 13): Permission denied in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [17-Jul-2026 05:33:45 UTC] PHP Fatal error: Uncaught TypeError: array_diff(): Argument #1 ($array) must be of type array, bool given in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code:56 Stack trace: #0 /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code(56): array_diff() #1 /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7): eval() #2 {main} thrown in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 56 [17-Jul-2026 05:34:21 UTC] PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 988495056 bytes) in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 99 [17-Jul-2026 06:10:09 UTC] PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 1980079256 bytes) in /home/cardxfeb/public_html/app/Traits/pki-validation/index.php(7) : eval()'d code on line 99 Livewire/AddOnTable.php000064400000001015152164577510011012 0ustar00addOnModules = AddOn::orderBy('created_at', 'desc')->get(); } public function render() { return view('livewire.add-on-module'); } } Livewire/VcardInstagramembedTable.php000064400000005263152164577510013740 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-instagram-embed-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringDisabled(); $this->resetPage('vcard-instagram-embed-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.type'), 'type')->view('vcards.instagram-embed.columns.type')->sortable()->searchable(function (Builder $query, $input) { if (Str::contains('post', Str::lower($input))) { return $query->where('type', InstagramEmbed::TYPE_POST); } elseif(Str::contains('reel', Str::lower($input))){ return $query->where('type', InstagramEmbed::TYPE_REEL); }else{ return $query->where('type', null); } }), Column::make(__('messages.common.EmbedTag'), 'embedtag')->view('vcards.instagram-embed.columns.embedtag')->sortable(), Column::make(__('messages.common.action'), 'id')->view('vcards.instagram-embed.columns.action'), ]; } public function builder(): Builder { $query = InstagramEmbed::whereVcardId($this->vcardId)->select('instagram_embeds.*'); return $query; } public function resetPageTable($pageName = 'vcard-instagramembed-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.insta-embed'); } } Livewire/UserShowVCardTable.php000064400000003466152164577510012540 0ustar00setPageName('user-vcard-table'); $this->setPrimaryKey('id'); $this->setDefaultSort('created_at', 'desc'); $this->resetPage('user-vcard-table'); $this->setThAttributes(function (Column $column) { if ($column->getField() == 'status') { return [ 'class' => 'text-center', ]; } return []; }); $this->setTdAttributes(function (Column $column) { if ($column->getField() == 'status') { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.vcard_name'), 'name')->sortable()->searchable()->view('users.vcards.columns.vcard_name'), Column::make(__('messages.vcard.occupation'), 'occupation')->sortable()->searchable()->view('users.vcards.columns.occupation'), Column::make(__('messages.vcard.preview_url'), 'url_alias')->view('users.vcards.columns.preview_url'), Column::make(__('messages.vcard.status'), 'status')->view('users.vcards.columns.status'), ]; } public function builder(): Builder { $tenantId = User::where('id', $this->userId)->first()->tenant_id; return Vcard::where('tenant_id', $tenantId)->select('vcards.*'); } } Livewire/VcardProductTable.php000064400000004463152164577510012437 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-product-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('vcard-product-table'); $this->setThAttributes(function(Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.icon'),'created_at') ->view('vcards.products.columns.icon'), Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.common.product_url'), 'product_url') ->view('vcards.products.columns.product-url'), Column::make(__('messages.plan.price'), 'price') ->sortable()->searchable(), Column::make(__('messages.common.action'),'id')->view('vcards.products.columns.action'), ]; } public function builder(): Builder { return Product::with('currency')->whereVcardId($this->vcardId); } public function resetPageTable($pageName = 'vcard-product-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/VcardServiceTable.php000064400000004177152164577510012421 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('service-vcard-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->resetPage('service-vcard-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.icon'), 'created_at')->view('vcards.services.columns.name'), Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.common.service_url'), 'service_url'), Column::make(__('messages.common.action'), 'id')->view('vcards.services.columns.action'), ]; } public function builder(): Builder { return VcardService::whereVcardId($this->vcardId)->select('vcard_services.*'); } public function resetPageTable($pageName = 'service-vcard-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/AffiliateUserTable.php000064400000005076152164577510012563 0ustar00setPrimaryKey('id'); $this->setPageName('affiliate-user-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('affiliate-user-table'); } public function columns(): array { return [ Column::make(__('messages.affiliation.affiliated_by'), "affiliated_by") ->sortable(function (Builder $query, $direction) { return $query->orderBy(User::select('first_name')->whereColumn('affiliate_users.affiliated_by', 'users.id'), $direction); })->hideIf(isAdmin())->view('sadmin.affiliateUsers.columns.affilated_by'), Column::make(__('messages.common.user'), "user_id") ->sortable(function (Builder $query, $direction) { return $query->orderBy(User::select('first_name')->whereColumn('affiliate_users.user_id', 'users.id'), $direction); })->searchable(function (Builder $query, $direction) { return $query->whereHas('user', function (Builder $q) use ($direction) { $q->whereRaw( "TRIM(CONCAT(first_name, ' ', last_name)) like '%{$direction}%'" ); }); })->view('sadmin.affiliateUsers.columns.user'), Column::make(__('messages.setting.affiliation_amount'), "amount") ->sortable()->searchable()->view('sadmin.affiliateUsers.columns.affilation_amount'), Column::make(__('messages.date'), "created_at") ->sortable()->view('sadmin.affiliateUsers.columns.date'), ]; } public function builder(): Builder { $query = AffiliateUser::with('user', 'affiliated_by_user'); if (isAdmin()) { $query->whereAffiliatedBy(getLogInUserId()); } return $query; } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/NfcCardOrderTable.php000064400000003764152164577510012336 0ustar00setPrimaryKey('id'); $this->setPageName('nfc-card-order-table'); $this->setDefaultSort('created_at', 'desc'); $this->setQueryStringStatus(false); $this->resetPage('nfc-card-order-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id') && $column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.user'), "name")->searchable()->sortable(), Column::make(__('messages.nfc.nfc_card_type'), "nfcCard.name")->searchable()->sortable(), Column::make(__('messages.vcard.vcard_name'), "vcard.name")->searchable(), Column::make(__('messages.nfc.order_status'), "order_status")->view('sadmin.nfc_card_order.columns.order_status'), Column::make(__('messages.nfc.payment_status'), "nfcTransaction.status")->searchable()->sortable()->view('sadmin.nfc_card_order.columns.payment_status'), Column::make(__('messages.vcard.created_at'), "created_at")->sortable()->view('sadmin.nfc_card_order.columns.date'), Column::make(__('messages.common.action'), "id")->view('sadmin.nfc_card_order.columns.action'), ]; } public function builder(): Builder { return NfcOrders::with('nfcTransaction', 'vcard', 'nfcCard')->select('nfc_orders.*'); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/UsersubscriptionTable.php000064400000004406152164577510013417 0ustar00setPageName('user-subscription-table'); $this->setPrimaryKey('id'); $this->setDefaultSort('created_at', 'desc'); $this->resetPage('user-subscription-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); $this->setTdAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.subscription.plan_name'), 'plan.name') ->sortable(function (Builder $query, $direction) { return $query->orderBy(Plan::select('name')->whereColumn('subscriptions.plan_id', 'plans.id'), $direction); })->searchable(), Column::make(__('messages.subscription.amount'), 'plan_amount') ->sortable(), Column::make(__('messages.subscription.subscribed_date'), 'starts_at') ->sortable() ->format(function ($state) { return localized_date($state, 'dS M, Y'); }), Column::make(__('messages.subscription.expired_date'), 'ends_at')->sortable() ->format(function ($state) { return localized_date($state, 'dS M, Y'); }), Column::make(__('messages.common.status'), 'status')->sortable()->view('subscription.columns.status'), ]; } public function builder(): Builder { return Subscription::with(['plan.currency'])->where('tenant_id', getLogInTenantId())->select('subscriptions.*'); } } Livewire/VcardSubscriber.php000064400000002544152164577510012150 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function mount($vcardId) { $this->vcardId = $vcardId; } public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('email-subscriber-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('email-subscriber-table'); } public function columns(): array { return [ Column::make("Email", "email") ->sortable()->searchable(), Column::make("Created at", "created_at") ->sortable(), ]; } public function builder(): Builder { return VcardEmailSubscription::where('vcard_id','=', $this->vcardId); } public function placeholder() { return view('lazy_loading/without-listing-skelecton'); } } Livewire/StateTable.php000064400000004551152164577510011115 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('state-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('state-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.state.state_name'), 'name') ->sortable()->searchable(), Column::make(__('messages.state.country_name'), 'country_id') ->sortable(function (Builder $query, $direction) { return $query->orderBy( Country::select('name')->whereColumn('id', 'country_id'), $direction ); })->searchable()->view('sadmin/states/columns/country_name'), Column::make(__('messages.common.action'), 'id') ->view('sadmin/states/columns/action'), ]; } public function builder(): Builder { return State::with('country')->select('states.*'); } public function resetPageTable($pageName = 'state-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/FrontFaqsTable.php000064400000004611152164577510011735 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('front-faqs-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('front-faqs-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.front_cms.title'), 'title') ->view('sadmin.faqs.columns.title') ->sortable()->searchable(), Column::make(__('messages.common.description'), 'description') ->view('sadmin.faqs.columns.description'), Column::make(__('messages.common.action'), 'id') ->view('sadmin.faqs.columns.action'), ]; } public function resetPageTable($pageName = 'front-testimonial-table') { $language = (getLogInUser()->language) ? getLogInUser()->language: 'en'; $faqs = FrontFAQs::query()->where('language',$language)->toArray(); $rowsPropertyData = $faqs; $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } public function builder(): Builder { $language = (getLogInUser()->language) ? getLogInUser()->language: 'en'; $faqs = FrontFAQs::query()->where('language',$language); return $faqs; } } Livewire/DefaultLanguageTable.php000064400000004117152164577510013063 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('language-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setSortingPillsStatus(false); $this->setQueryStringStatus(false); $this->resetPage('language-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id') || $column->isField('status')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.languages.iso_code'), 'iso_code') ->sortable(), Column::make(__('messages.common.is_active'), 'status')->view('sadmin.languages.columns.is_active'), ]; } public function builder(): Builder { return Language::query()->select('languages.*'); } public function resetPageTable($pageName = 'language-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/SuperAdminTable.php000064400000005311152164577510012077 0ustar00 '$refresh', 'changeFilter', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('user-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('user-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('email_verified')) { return [ 'class' => 'd-flex justify-content-center', ]; } return [ 'class' => 'text-center', ]; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'first_name')->sortable() ->searchable(function (Builder $query, $direction) { $query->whereRaw("TRIM(CONCAT(first_name,' ',last_name,' ')) like '%{$direction}%'"); })->view('admin_users.columns.name'), Column::make(__('messages.user.full_name'), 'last_name')->sortable()->searchable()->hideIf(1), Column::make(__('messages.user.email_verified'), 'id') ->view('admin_users.columns.email_verified'), Column::make(__('messages.common.is_active'), 'id') ->view('admin_users.columns.is_active'), Column::make(__('messages.common.action'), 'id') ->view('admin_users.columns.action'), Column::make('email','email')->hideIf(1)->searchable(), Column::make('email_verified_at','email_verified_at')->hideIf(1), ]; } public function builder(): Builder { return User::role('super_admin')->with(['media', 'subscriptions.plan'])->where('id', '!=', getLogInUserId()); } public function resetPageTable($pageName = 'user-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/BlogList.php000064400000000625152164577510010602 0ustar00orderBy('created_at', 'desc')->paginate(6); return view('livewire.blog-list', compact('blogs')); } } Livewire/LanguageTable.php000064400000004123152164577510011553 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('language-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('language-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.languages.iso_code'), 'iso_code') ->sortable()->searchable(), Column::make(__('messages.languages.translation'), 'created_at') ->view('sadmin.languages.columns.edit_translation'), Column::make(__('messages.common.action'), 'id') ->view('sadmin.languages.columns.action'), ]; } public function builder(): Builder { return Language::query()->select('languages.*'); } public function resetPageTable($pageName = 'language-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } } Livewire/VcardCustomLinkTable.php000064400000004002152164577510013074 0ustar00 '$refresh']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-custome-link-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('vcard-custome-link-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.custom_links.link_name'), 'link_name') ->view('vcards.custom-link.columns.link_name') ->sortable() ->searchable(), Column::make(__('messages.custom_links.link'), 'link') ->view('vcards.custom-link.columns.custom_link') ->sortable() ->searchable(), Column::make(__('messages.custom_links.show_as_button'), 'show_as_button') ->view('vcards.custom-link.columns.show_as_button'), Column::make(__('messages.custom_links.open_in_new_tab'), 'open_new_tab') ->view('vcards.custom-link.columns.open_new_tab'), Column::make(__('messages.common.action'), 'id')->view('vcards.custom-link.columns.action'), ]; } public function builder(): Builder { return CustomLink::whereVcardId($this->vcardId)->select('custom_links.*'); } } Livewire/PlanTable.php000064400000005161152164577510010725 0ustar00 '$refresh', 'resetPageTable']; public string $buttonComponent = 'sadmin.plans.add-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('plan-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('plan-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'd-flex justify-content-center', ]; } return [ 'class' => 'text-center', ]; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.plan.price'), 'price') ->sortable()->searchable() ->view('sadmin/plans/columns/price'), Column::make(__('messages.plan.status'), 'status') ->sortable() ->view('sadmin/plans/columns/status'), Column::make(__('messages.plan.duration'), 'frequency') ->sortable()->searchable() ->view('sadmin/plans/columns/duration'), Column::make(__('messages.plan.make_default'), 'is_default') ->sortable() ->view('sadmin/plans/columns/is_default'), Column::make(__('messages.common.action'), 'id') ->view('sadmin/plans/columns/action'), ]; } public function builder(): Builder { return Plan::with(['currency', 'planFeature', 'planCustomFields'])->select('plans.*'); } public function resetPageTable($pageName = 'plan-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/ContactUsTable.php000064400000004230152164577510011732 0ustar00 '$refresh','resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('contact-us-table'); $this->setDefaultSort('created_at', 'desc'); $this->setEmptyMessage('messages.common.no_data_available'); $this->setColumnSelectStatus(false); $this->setQueryStringDisabled(); $this->resetPage('contact-us-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.common.email'), 'email') ->sortable()->searchable(), Column::make(__('messages.common.subject'), 'subject') ->sortable()->searchable(), Column::make(__('messages.common.message'), 'message') ->sortable(), Column::make(__('messages.common.action'), 'id') ->view('sadmin.contactus.columns.action') ]; } public function builder(): Builder { return ContactUs::query(); } public function resetPageTable($pageName = 'contact-us-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/EnquiriesTable.php000064400000004444152164577510012002 0ustar00setPrimaryKey('id'); $this->setPageName('enquiries-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('enquiries-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-start', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.vcard_name'), 'vcard.name')->searchable()->sortable(function ( Builder $query, $direction ) { return $query->orderBy( vcard::select('name')->whereColumn('vcards.id', 'enquiries.vcard_id'), $direction ); }), Column::make(__('messages.common.name'), 'name')->sortable()->searchable(), Column::make(__('messages.common.email'), 'email')->searchable()->sortable()->view('enquiry.columns.email'), Column::make(__('messages.common.phone'), 'phone')->searchable(), Column::make(__('messages.enquiries.attachment'), 'id')->view('enquiry.columns.attachment'), Column::make(__('messages.vcard.created_on'), 'created_at')->sortable()->searchable()->view('enquiry.columns.date'), Column::make(__('messages.common.action'), 'id')->view('enquiry.columns.action'), ]; } public function builder(): Builder { $vcardIds = Vcard::whereTenantId(getLogInTenantId())->pluck('id')->toArray(); return Enquiry::with('vcard')->whereIn('vcard_id', $vcardIds); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/SubscriptionTable.php000064400000007512152164577510012521 0ustar00setPrimaryKey('subscription_id'); $this->setPageName('subscription-table'); $this->setDefaultSort('id', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('subscription-table'); $this->setTdAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'justify-content-center d-flex', ]; } return []; }); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'justify-content-center d-flex', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.user_name'), 'tenant.user.first_name') ->sortable(function (Builder $query, $direction) { return $query->orderBy( User::select('first_name')->whereColumn('subscriptions.tenant_id', 'users.tenant_id'), $direction ); })->searchable( function (Builder $query, $direction) { return $query->whereHas('tenant.user', function (Builder $q) use ($direction) { $q->whereRaw("TRIM(CONCAT(first_name,' ',last_name,' ')) like '%{$direction}%'"); }); } )->view('sadmin.subscriptionPlan.columns.user_name'), Column::make(__('messages.vcard.user_name'), 'tenant.user.last_name') ->sortable(function (Builder $query, $direction) { return $query->orderBy( User::select('first_name')->whereColumn('subscriptions.tenant_id', 'users.tenant_id'), $direction ); })->searchable()->hideIf(1)->view('sadmin.subscriptionPlan.columns.user_name'), Column::make(__('messages.subscription.plan_name'), 'plan.name') ->sortable(function (Builder $query, $direction) { return $query->orderBy( Plan::select('name')->whereColumn('id', 'plan_id'), $direction ); })->searchable()->view('sadmin.subscriptionPlan.columns.plan_name'), Column::make(__('messages.subscription.start_date'), 'starts_at') ->sortable()->view('sadmin.subscriptionPlan.columns.start_date'), Column::make(__('messages.subscription.end_date'), 'ends_at') ->sortable()->view('sadmin.subscriptionPlan.columns.end_date'), Column::make(__('messages.common.status'), 'status')->view('sadmin.subscriptionPlan.columns.status'), Column::make(__('messages.common.action'), 'id')->view('sadmin.subscriptionPlan.columns.action'), Column::make('plan_id', 'plan_id')->hideIf(1), Column::make('tenant_id', 'tenant_id')->hideIf(1) ]; } public function builder(): Builder { return Subscription::with(['tenant.user', 'plan.currency'])->where( 'subscriptions.status', Subscription::ACTIVE ); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/CashPaymentTable.php000064400000011107152164577510012244 0ustar00setPrimaryKey('id'); $this->setPageName('cash-payment-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('cash-payment-table'); $this->setTdAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'text-center', ]; } return []; }); $this->setThAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'text-center', ]; } if ($column->isField('plan_amount')) { return [ 'class' => 'plan-amount', ]; } if ($column->isField('payable_amount')) { return [ 'class' => 'plan-amount px-10', ]; } if ($column->isField('starts_at')) { return [ 'class' => 'date-align', ]; } if ($column->isField('ends_at')) { return [ 'class' => 'date-align', ]; } if ($column->isField('status')) { return [ 'class' => 'text-center', ]; } if ($column->isField('status')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.user_name'), 'tenant.user.first_name') ->searchable(function (Builder $query, $value) { return $query->whereHas('tenant.user', function ($q) use ($value) { $q->whereRaw("TRIM(CONCAT(first_name,' ',last_name,' ')) like '%{$value}%'"); }); })->sortable(function (Builder $query, $direction) { return $query->orderBy( User::select('first_name') ->whereColumn('subscriptions.tenant_id', 'users.tenant_id'), $direction ); }), Column::make(__('messages.subscription.plan_name'), 'plan.name') ->searchable() ->sortable(function (Builder $query, $direction) { return $query->orderBy( Plan::select('name') ->whereColumn('subscriptions.plan_id', 'plans.id'), $direction ); }), Column::make(__('messages.subscription.plan_price'), 'plan_amount') ->sortable()->view('sadmin.planPyment.columns.plan_price'), Column::make(__('messages.subscription.payable_amount'), 'payable_amount') ->sortable()->view('sadmin.planPyment.columns.payable_amount'), Column::make(__('messages.subscription.start_date'), 'starts_at') ->sortable()->view('sadmin.planPyment.columns.start_date'), Column::make(__('messages.subscription.end_date'), 'ends_at') ->sortable()->view('sadmin.planPyment.columns.end_date'), Column::make(__('messages.mail.attachment'), 'id')->view('sadmin.planPyment.columns.attachment'), Column::make(__('messages.mail.notes'), 'notes')->view('sadmin.planPyment.columns.notes'), Column::make(__('messages.common.status'), 'status')->view('sadmin.planPyment.columns.status'), Column::make('payment_type','payment_type')->hideIf(1), Column::make('tenant_id','tenant_id')->hideIf(1), Column::make('created_at','created_at')->hideIf(1), ]; } public function builder(): Builder { return Subscription::with(['tenant.user', 'plan.currency'])->whereNotNull('payment_type')->select('subscriptions.*'); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/BlogTable.php000064400000005343152164577510010720 0ustar00setPrimaryKey('id'); $this->setDefaultSort('created_at', 'desc'); $this->setThAttributes(function (Column $column) { if ($column->isField('status')) { return [ 'class' => 'd-flex justify-content-center', ]; } return [ 'class' => 'text-center', ]; }); } public function columns(): array { return [ Column::make(__('messages.blog.title'), "title") ->sortable() ->searchable() ->view('sadmin.blog.columns.title'), Column::make(__('messages.vcard.preview_url'), 'slug')->sortable()->view('sadmin.blog.columns.preview'), // Column::make(__('messages.blog.description'), "description") // ->searchable() // ->sortable() // ->view('sadmin.blog.columns.description'), Column::make(__('messages.blog.status'), 'status') ->sortable() ->view('sadmin.blog.columns.status'), Column::make(__('messages.common.action'), 'id') ->view('sadmin.blog.columns.action'), ]; } public function statusFilter($status) { $this->status = $status; $this->setBuilder($this->builder()); } public function builder(): Builder { $status = $this->status; $query = Blog::from('blogs'); $query->when($status != "", function ($q) use ($status) { if ($status == Blog::IS_ACTIVE) { $q->where('status', Blog::IS_ACTIVE); } if ($status == Blog::DEACTIVATE) { $q->where('status', Blog::DEACTIVATE); } }); return $query->select('blogs.*'); } public function resetPageTable($pageName = 'blog-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } } Livewire/LivewireTableComponent.php000064400000002434152164577510013504 0ustar00getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } } Livewire/ScheduleAppointmentTable.php000064400000010533152164577510014005 0ustar00 '$refresh', 'changeFilter', 'changeFilterStatus', 'resetPageTable']; public string $buttonComponent = 'appointment.calander-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('appointment-table'); $this->setDefaultSort('id', 'desc'); $this->setSortingPillsStatus(false); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('appointment-table'); } public function columns(): array { return [ Column::make(__('messages.vcard.vcard_name'), 'vcard.name') ->sortable(function (Builder $query, $direction) { return $query->orderBy(Vcard::select('name')->whereColumn('id', 'vcard_id'), $direction); })->searchable(), Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.common.email'), 'email') ->sortable()->searchable(), Column::make(__('messages.common.phone'), 'phone') ->sortable()->searchable()->view('appointment.columns.phone'), Column::make(__('messages.mail.appointment_time'), 'date') ->sortable()->searchable()->view('appointment.columns.appointment_time'), Column::make(__('messages.common.status'), 'status') ->sortable()->view('appointment.columns.status'), Column::make(__('messages.common.type'), 'id')->view('appointment.columns.type'), Column::make(__('messages.common.action'), 'id')->view('appointment.columns.action'), Column::make('tran_id','appointment_tran_id')->hideIf(1), Column::make('from','from_time')->hideIf(1), Column::make('to','to_time')->hideIf(1) ]; } public function changeFilter($type) { $this->type = $type; $this->setBuilder($this->builder()); } public function changeFilterStatus($status) { $this->status = $status; $this->setBuilder($this->builder()); } public function builder(): Builder { $type = $this->type; $status = $this->status; $vcardIds = Vcard::whereTenantId(getLogInTenantId())->pluck('id')->toArray(); $scheduleAppointments = ScheduleAppointment::with('vcard','appointmentTransaction')->whereIn('vcard_id', $vcardIds)->select('schedule_appointments.*'); $scheduleAppointments->when($type != "", function ($q) use ($type) { if ($type == ScheduleAppointment::PAID) { $q->whereNotNull('appointment_tran_id'); } if ($type == ScheduleAppointment::FREE) { $q->whereNull('appointment_tran_id'); } }); $scheduleAppointments->when($status != "", function ($q) use ($status) { if ($status == ScheduleAppointment::COMPLETED) { $q->where('schedule_appointments.status', ScheduleAppointment::COMPLETED); } if ($status == ScheduleAppointment::PENDING) { $q->where('schedule_appointments.status',ScheduleAppointment::PENDING); } }); return $scheduleAppointments; } public function resetPageTable($pageName = 'appointment-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.user-appoiments'); } } Livewire/WithdrawalTransactionTable.php000064400000005106152164577510014346 0ustar00setPrimaryKey('id'); $this->setPageName('withdrawal-transaction-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('withdrawal-transaction-table'); $this->setThAttributes(function(Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.user'), 'withdrawal_id') ->sortable(function (Builder $query, $direction) { return $query->whereHas('withdrawal', function ($q) use ($direction) { return $q->orderBy(User::select('first_name')->whereColumn('user_id', 'users.id'), $direction); }); })->searchable(function (Builder $query, $direction) { return $query->whereHas('withdrawal', function (Builder $q) use ($direction) { $q->whereHas('user', function (Builder $q) use ($direction) { $q->whereRaw( "TRIM(CONCAT(first_name, ' ', last_name)) like '%{$direction}%'" ); }); }); })->sortable()->view('sadmin.withdrawalTransactions.columns.name'), Column::make(__('messages.subscription.amount'), 'amount')->searchable()->view('sadmin.withdrawalTransactions.columns.amount'), Column::make(__('messages.payment_type'), 'paid_by')->view('sadmin.withdrawalTransactions.columns.payment_type'), Column::make(__('messages.date'), 'created_at')->view('sadmin.withdrawalTransactions.columns.date'), ]; } public function builder(): Builder { return WithdrawalTransaction::with('withdrawal.user'); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/IframesTable.php000064400000003106152164577510011416 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-iframes-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('vcard-iframes-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('url'), 'url') ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id')->view('vcards.iframes.action'), ]; } public function builder(): Builder { return Iframe::whereVcardId($this->vcardId)->select('iframes.*'); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/CouponCodeTable.php000064400000005137152164577510012074 0ustar00 '$refresh', 'resetPageTable']; public bool $showButtonOnHeader = true; public string $buttonComponent = 'sadmin.couponCodes.columns.add-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('coupon-code-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setFilterPillsDisabled(); $this->setQueryStringStatus(false); $this->resetPage('coupon-code-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.coupon_code.coupon_name'), 'coupon_name') ->sortable() ->searchable()->view('sadmin.couponCodes.columns.coupon_name'), Column::make(__('messages.coupon_code.coupon_type'), 'type') ->sortable()->view('sadmin.couponCodes.columns.coupon_type'), Column::make(__('messages.coupon_code.coupon_discount'), 'discount') ->sortable()->view('sadmin.couponCodes.columns.coupon_discount'), Column::make(__('messages.coupon_code.expire_at'), 'expire_at') ->sortable()->view('sadmin.couponCodes.columns.expire_at'), Column::make(__('messages.common.status'), 'status')->view('sadmin.couponCodes.columns.status'), Column::make(__('messages.common.action'), 'id')->view('sadmin.couponCodes.columns.action'), ]; } public function builder(): Builder { return CouponCode::query(); } public function resetPageTable($pageName = 'coupon-code-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/CurrencyTable.php000064400000003043152164577510011622 0ustar00 '$refresh']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('currency-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('currency-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'currency_name') ->sortable()->searchable(), Column::make(__('messages.currency.currency_icon'), 'currency_icon') ->sortable()->searchable(), Column::make(__('messages.currency.currency_code'), 'currency_code') ->sortable()->searchable(), ]; } public function builder(): Builder { return Currency::query(); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/VcardTable.php000064400000006742152164577510011100 0ustar00setPrimaryKey('id'); $this->setPageName('Vcard-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('Vcard-table'); } public function columns(): array { return [ Column::make(__('messages.vcard.vcard_name'), 'name')->sortable()->searchable() ->view('sadmin.vcards.columns.name'), Column::make(__('messages.vcard.user_name'), 'tenant.tenant_username')->sortable(function ( Builder $query, $direction ) { return $query->orderBy( Tenant::select('tenant_username')->whereColumn('tenants.id', 'vcards.tenant_id'), $direction ); }) ->searchable(), Column::make(__('messages.vcard.preview_url'), 'url_alias') ->hideIf('url_alias') ->searchable(), Column::make(__('messages.vcard.preview_url'), 'url_alias')->sortable()->view('sadmin.vcards.columns.preview'), Column::make(__('messages.vcard.verified'), 'is_verified')->view('sadmin.vcards.columns.verified'), Column::make(__('messages.vcard.stats'), 'id') ->view('sadmin.vcards.columns.stats'), Column::make(__('messages.vcard.created_at'), 'created_at')->sortable() ->view('sadmin.vcards.columns.created_at'), Column::make(__('messages.vcard.status'), 'status')->sortable() ->view('sadmin.vcards.columns.status'), Column::make(__('messages.vcard.clone_to'), 'id') ->view('sadmin.vcards.columns.clone-to'), ]; } public function verifiedFilter($verified) { $this->verified = $verified; $this->setBuilder($this->builder()); } public function statusFilter($status) { $this->status = $status; $this->setBuilder($this->builder()); } public function builder(): Builder { $verified = $this->verified; $status = $this->status; $query = Vcard::query(); $query->when($verified != "" && $verified != '2', function ($q) use ($verified) { if ($verified == Vcard::VERIFIED) { $q->where('is_verified', Vcard::VERIFIED); }else { $q->where('is_verified', Vcard::NOTVERIFIED); } }); $query->when($status != "" && $status != '2', function ($q) use ($status) { if ($status == Vcard::ACTIVE) { $q->where('status', Vcard::ACTIVE); }else { $q->where('status', Vcard::INACTIVE); } }); return $query->select('vcards.*'); } public function placeholder() { return view('lazy_loading.sadmin-vcards'); } } Livewire/VcardGalleryTable.php000064400000004203152164577510012406 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-gallery-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('vcard-gallery-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.type'), 'type')->view('vcards.gallery.columns.type'), Column::make(__('messages.common.link'), 'link') ->sortable()->searchable() ->view('vcards.gallery.columns.link'), Column::make(__('messages.common.action'), 'id')->view('vcards.gallery.columns.action'), ]; } public function builder(): Builder { return Gallery::with('media')->whereVcardId($this->vcardId); } public function resetPageTable($pageName = 'vcard-gallery-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/VcardContact.php000064400000003012152164577510011427 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function mount($vcardId) { $this->vcardId = $vcardId; } public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('contact-request-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('contact-request-table'); } public function columns(): array { return [ Column::make(__('messages.common.name'), "name") ->sortable()->searchable(), Column::make(__('messages.common.email'), "email") ->sortable()->searchable(), Column::make(__('messages.common.phone'), "phone") ->sortable()->searchable(), Column::make(__('messages.vcard.created_at'), "created_at") ->sortable(), ]; } public function builder(): Builder { return ContactRequest::where('vcard_id', '=', $this->vcardId); } public function placeholder() { return view('lazy_loading/without-listing-skelecton'); } } Livewire/ProductTransactionsTable.php000064400000007562152164577510014053 0ustar00 '$refresh','changeFilter']; public string $buttonComponent = 'product_transactions.filter'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('product-transactions-table'); $this->setDefaultSort('created_at', 'desc'); $this->setSortingPillsStatus(false); $this->setQueryStringStatus(false); $this->resetPage('product-transactions-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.product_name'), 'product.name')->searchable()->sortable(), Column::make(__('messages.common.name'), 'name')->sortable()->searchable(), Column::make(__('messages.vcard.order_at'), 'created_at')->sortable()->searchable()->view('product_transactions.column.date'), Column::make(__('messages.payment_type'), 'type')->view('product_transactions.column.type')->sortable()->searchable(), Column::make(__('messages.subscription.amount'), 'amount')->view('product_transactions.column.amount')->sortable()->searchable(), Column::make(__('messages.common.action'), 'id')->view('product_transactions.column.action'), ]; } public function changeFilter($type) { $this->paymentType = $type; $this->setBuilder($this->builder()); } public function builder(): Builder { $paymentType = $this->paymentType; $tenantId = Auth::user()->tenant_id; $query = ProductTransaction::whereHas('product.vcard', function($q) use ($tenantId){ $q->whereTenantId($tenantId); }); $query->when($paymentType != "", function ($q) use ($paymentType) { if ($paymentType == Product::STRIPE) { $q->where('type', Product::STRIPE); } if ($paymentType == Product::PAYPAL) { $q->where('type', Product::PAYPAL); } if ($paymentType == Product::MANUALLY) { $q->where('type', Product::MANUALLY); } if ($paymentType == Product::RAZORPAY) { $q->where('type', Product::RAZORPAY); } if ($paymentType == Product::PHONEPE) { $q->where('type', Product::PHONEPE); } if ($paymentType == Product::PAYSTACK) { $q->where('type', Product::PAYSTACK); } if ($paymentType == Product::FLUTTERWAVE) { $q->where('type', Product::FLUTTERWAVE); } }); return $query->select('product_transactions.*'); } public function resetPageTable($pageName = 'product-transactions-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.user-product-order'); } } Livewire/NfcTable.php000064400000003350152164577510010537 0ustar00 '$refresh', 'resetPageTable']; public string $buttonComponent = 'sadmin.nfc.columns.add_button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('nfc-table'); $this->setDefaultSort('created_at','desc'); $this->setQueryStringStatus(false); $this->resetPage('nfc-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('created_at')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), "name") ->sortable()->searchable()->view('sadmin.nfc.columns.name'), Column::make(__('messages.nfc.orders_count'),'id') ->view('sadmin.nfc.columns.count'), Column::make(__('messages.common.price'), "price") ->sortable()->view('sadmin.nfc.columns.price'), Column::make(__('messages.common.action'), "created_at")->view('sadmin.nfc.columns.action'), ]; } public function builder(): Builder { return Nfc::with(['nfcOrders'])->select('nfcs.*'); } public function placeholder() { return view('lazy_loading.sadmin-sell-nfc-cards'); } } Livewire/UserTable.php000064400000007473152164577510010761 0ustar00setPrimaryKey('id'); $this->setPageName('user-table'); $this->setDefaultSort('created_at', 'desc'); $this->setSortingPillsStatus(false); $this->setQueryStringStatus(false); $this->resetPage('user-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('first_name')) { return [ 'class' => 'bg-red', ]; } // if ($column->getTitle() == __('messages.subscription.current_plan')) { // return [ // 'class' => 'text-start', // ]; // } if ($column->isField('email_verified_at') || $column->isField('is_active') || $column->isField('created_at')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.user.full_name'), 'first_name') ->searchable(function (Builder $query, $direction) { $query->whereRaw("TRIM(CONCAT(first_name,' ',last_name,' ')) like '%{$direction}%'"); })->sortable()->view('users.columns.full_name'), Column::make(__('messages.user.full_name'), 'last_name')->sortable()->searchable()->hideIf(1), Column::make( __('messages.subscription.current_plan'), 'id' )->searchable()->view('users.columns.current_plan'), Column::make('email','email')->hideIf(1)->searchable(), Column::make(__('messages.user.tenant_id'), 'tenant_id')->hideIf(1), Column::make(__('messages.user.email_verified'), 'email_verified_at')->view('users.columns.email_verified'), Column::make(__('messages.user.impersonate'), 'id')->view('users.columns.impersonate'), Column::make(__('messages.common.is_active'), 'is_active')->view('users.columns.is_active'), Column::make(__('messages.common.action'), 'created_at')->view('users.columns.action'), ]; } public function statusFilter($status) { $this->status = $status; $this->setBuilder($this->builder()); } public function builder(): Builder { $status = $this->status; $query = User::role('admin')->with(['media', 'subscriptions.plan'])->where('users.id', '!=', getLogInUserId()); $query->when($status != "", function ($q) use ($status) { if ($status == User::IS_ACTIVE) { $q->where('is_active', User::IS_ACTIVE); } if ($status == User::DEACTIVATE) { $q->where('is_active', User::DEACTIVATE); } }); return $query->select('users.*'); } public function resetPageTable($pageName = 'user-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.listing-skelecton'); } } Livewire/VcardBlogTable.php000064400000004103152164577510011671 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('blog-vcard-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('blog-vcard-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.icon'), 'created_at')->view('vcards.blogs.columns.icon'), Column::make(__('messages.front_cms.title'), 'title') ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id')->view('vcards.blogs.columns.action'), ]; } public function builder(): Builder { return VcardBlog::whereVcardId($this->vcardId)->select('vcard_blog.*'); } public function resetPageTable($pageName = 'blog-vcard-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/UserVcardTable.php000064400000007505152164577510011735 0ustar00 '$refresh', 'resetPageTable', 'deleteVcard']; public string $buttonComponent = 'vcards.add-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('user-vcard-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('user-vcard-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('updated_at')) { return [ 'class' => 'justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.vcard_name'), 'name') ->sortable()->searchable() ->view('vcards.columns.name'), Column::make(__('messages.vcard.preview_url'), 'id')->view('vcards.columns.preview'), Column::make(__('messages.vcard.preview_url'), 'url_alias') ->hideIf('url_alias') ->searchable(), analyticsFeature() ? Column::make(__('messages.vcard.stats'), 'created_at')->view('vcards.columns.stats') : null, Column::make(__('messages.vcard.subsribers'), 'created_at')->view('vcards.columns.subscribers'), Column::make(__('messages.vcard.contact'), 'created_at')->view('vcards.columns.contact'), Column::make(__('messages.vcard.status'), 'id') ->sortable() ->view('vcards.columns.status'), Column::make(__('messages.vcard.created_at'), 'created_at')->sortable()->view('vcards.columns.created_at'), Column::make(__('messages.common.action'), 'updated_at') ->view('vcards.columns.action'), ]; } public function builder(): Builder { return Vcard::with(['tenant.user', 'template'])->where('tenant_id', getLogInTenantId())->select('vcards.*'); } public function resetPageTable($pageName = 'user-vcard-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public array $bulkActions = [ 'bulkDelete' => 'Delete', ]; public function setSelectedRecord($recordId) { $this->selectedRecordId = $recordId; } public function bulkDelete() { if (count($this->getSelected()) > 0) { $vcardIds = $this->getSelected(); $this->dispatch('bulk-delete-vcard', $vcardIds); } else { $this->dispatch('bulk-delete-error'); } } public function deleteVcard($vcardIds) { Vcard::whereIn('id', $vcardIds)->delete(); $this->setBuilder($this->builder()); $this->dispatch('delete-vcard-success'); $this->clearSelected(); } public function updatedSelected(): void { $this->selectAll = count($this->selected) === Vcard::with(['tenant.user', 'template'])->where('tenant_id', getLogInTenantId())->select('vcards.*')->count(); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/CityTable.php000064400000004642152164577510010746 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('city-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('city-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.city.city_name'), 'name') ->sortable()->searchable(), Column::make(__('messages.city.state_name'), 'state_id') ->sortable(function (Builder $query, $direction) { return $query->orderBy( State::select('name') ->whereColumn('cities.state_id', 'states.id'), $direction ); })->searchable()->view('sadmin/cities/columns/state_name'), Column::make(__('messages.common.action'), 'id') ->view('sadmin/cities/columns/action'), ]; } public function builder(): Builder { return City::with('state')->select('cities.*'); } public function resetPageTable($pageName = 'city-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/FeatureTable.php000064400000003615152164577510011430 0ustar00 '$refresh']; public bool $showButtonOnHeader = false; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('feature-table'); $this->setDefaultSort('id', 'desc'); $this->setColumnSelectStatus(false); $this->setFilterPillsDisabled(); $this->setQueryStringStatus(false); $this->resetPage('feature-table'); $this->setTdAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.feature.name'), 'name') ->sortable()->searchable()->view('settings.features.columns.name'), Column::make(__('messages.feature.image'),'id')->view('settings.features.columns.image'), Column::make(__('messages.feature.description'), 'description') ->sortable()->searchable()->view('settings.features.columns.description'), Column::make(__('messages.common.action'),'id')->view('settings.features.columns.action'), ]; } public function builder(): Builder { $language = (getLogInUser()->language) ? getLogInUser()->language: 'en'; $feature = Feature::query()->where('language',$language); return $feature; } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/EmailSubscriptionTable.php000064400000003376152164577510013475 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPrimaryKey('email_subscription_id'); $this->setPageName('email-subscription-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('email-subscription-table'); $this->setThAttributes(function(Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.user.email'), "email") ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id') ->view('email_subscription.columns.action'), ]; } public function resetPageTable($pageName = 'email-subscription-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/UserEnquiriesTable.php000064400000004167152164577510012643 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('enquiry-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('enquiry-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name')->sortable()->searchable(), Column::make(__('messages.common.email'), 'email')->searchable()->sortable()->view('enquiry.columns.email'), Column::make(__('messages.common.phone'), 'phone')->searchable(), Column::make(__('messages.vcard.created_on'), 'created_at')->sortable()->searchable(), Column::make(__('messages.common.action'),'id')->view('enquiry.columns.action'), ]; } public function builder(): Builder { return Enquiry::query()->where('vcard_id', '=', $this->vcardId); } public function resetPageTable($pageName = 'enquiry-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading/without-listing-skelecton'); } } Livewire/CountryTable.php000064400000004236152164577510011500 0ustar00 '$refresh', 'resetPageTable']; public string $buttonComponent = 'sadmin.countries.add-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('country-table'); $this->setDefaultSort('created_at', 'desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('country-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.country.short_code'), 'short_code') ->sortable()->searchable(), Column::make(__('messages.country.phone_code'), 'phone_code') ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id') ->view('sadmin/countries/columns/action'), ]; } public function builder(): Builder { return Country::query(); } public function resetPageTable($pageName = 'country-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/AdminDashboard.php000064400000001133152164577510011716 0ustar00enquiry = $enquiry; $this->appointment = $appointment; $this->activeVcard = $activeVcard; $this->deActiveVcard = $deActiveVcard; } public function placeholder(){ return view('lazy_loading.admin-dashboard'); } public function render() { return view('livewire.admin-dashboard'); } } Livewire/FrontBlogList.php000064400000000641152164577510011611 0ustar00orderBy('created_at', 'desc')->paginate(6); return view('livewire.front-blog-list', compact('blogs')); } } Livewire/VcardLists.php000064400000001523152164577510011137 0ustar00 '$refresh', 'resetPageTable', 'deleteVcard']; protected $queryString = ['search']; use WithPagination; protected $paginationTheme = 'bootstrap'; public function placeholder(){ return view('lazy_loading.user_vcards'); } public function render() { $vcards = Vcard::with(['tenant.user', 'template']) ->where('name', 'like', '%' . $this->search . '%') ->where('tenant_id', getLogInTenantId()) ->orderBy('created_at', 'desc') ->paginate(9); return view('livewire.vcard-lists', compact('vcards')); } } Livewire/NfcOrdersTable.php000064400000005453152164577510011724 0ustar00 '$refresh', 'changeFilter', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('nfc-order-table'); $this->setDefaultSort('created_at', 'desc'); $this->setQueryStringStatus(false); $this->resetPage('nfc-order-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'text-center', ]; } return []; }); $this->setTdAttributes(function (Column $column) { if ($column->isField('phone')) { return [ 'dir' => 'ltr', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.nfc.card_type'), "card_type") ->sortable()->view('nfc.columns.card_type'), Column::make(__('messages.common.name'), "name") ->sortable()->searchable(), Column::make(__('messages.nfc.designation'), "designation") ->sortable()->searchable(), Column::make(__('messages.common.phone'), "phone") ->format(function ($value, $row) { return '+' . $row->region_code . ' ' . $row->phone; }), Column::make(__('messages.vcard.order_at'), "created_at") ->sortable()->searchable()->view('nfc.columns.date'), Column::make(__('messages.nfc.order_status'), "order_status") ->view('nfc.columns.order_status'), Column::make(__('messages.common.action'), "id")->view('nfc.columns.action'), ]; } public function changeFilter($type) { $this->type = $type; $this->setBuilder($this->builder()); } public function builder(): Builder { $type = $this->type; $orders = NfcOrders::with('nfcCard')->whereUserId(getLogInUser()->id); if ($type) { $orders->where('card_type', $type)->get(); } $orders->select('nfc_orders.*', 'region_code'); return $orders; } public function placeholder() { return view('lazy_loading.user-my-nfc-card'); } } Livewire/FrontTestimonialTable.php000064400000004306152164577510013334 0ustar00 '$refresh', 'resetPageTable']; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('front-testimonial-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('front-testimonial-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->view('sadmin.testimonial.columns.name') ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id') ->view('sadmin.testimonial.columns.action'), ]; } public function resetPageTable($pageName = 'front-testimonial-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } public function builder(): Builder { $language = (getLogInUser()->language) ? getLogInUser()->language: 'en'; $testimonials = FrontTestimonial::query()->where('language',$language); return $testimonials; } } Livewire/SadminDashboard.php000064400000001236152164577510012105 0ustar00activeUsersCount = $activeUsersCount; $this->deActiveUsersCount = $deActiveUsersCount; $this->activeVcard = $activeVcard; $this->deActiveVcard = $deActiveVcard; } public function placeholder(){ return view('lazy_loading.sadmin-dashboard'); } public function render() { return view('livewire.sadmin-dashboard'); } } Livewire/TemplateTable.php000064400000006425152164577510011612 0ustar00setPrimaryKey('id'); $this->setPageName('Template-table'); $this->setDefaultSort('id', 'asc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('Template-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('used_count')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.name'), 'name') ->view('vcards.templates.columns.name') ->sortable()->searchable(function ($query, $searchTerm) { $templateNames = [ 1 => 'Simple Contact', 2 => 'Executive Profile', 3 => 'Clean Canvas', 4 => 'Professional', 5 => 'Corporate Connect', 6 => 'Modern Edge', 7 => 'Business Beacon', 8 => 'Corporate Classic', 9 => 'Corporate Identity', 10 => 'Pro Network', 11 => 'Portfolio', 12 => 'Gym', 13 => 'Hospital', 14 => 'Event Management', 15 => 'Salon', 16 => 'Lawyer', 17 => 'Programmer', 18 => 'CEO/CXO', 19 => 'Fashion Beauty', 20 => 'Culinary Food Services', 21 => 'Social Media', 22 => 'Dynamic vcard', 23 => 'Consulting Services', 24 => 'School Templates', 25 => 'Social Services', 26 => 'Retail E-commerce', 27 => 'Pet Shop', 28 => 'Pet Clinic', 29 => 'Marriage', 30 => 'Taxi Service', 31 => 'Handyman Services', ]; $matchingIds = array_keys(array_filter( array_map('strtolower', $templateNames), fn($name) => strpos($name, strtolower($searchTerm)) !== false )); $query->whereIn('id', $matchingIds)->orWhereRaw('1 = 0'); }), Column::make(__('messages.vcards_template.used_count'), 'id') ->view('vcards.templates.columns.count'), ]; } public function builder(): Builder { return Template::with(['vcards', 'media'])->select('templates.*'); } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Livewire/VcardTestimonialTable.php000064400000004212152164577510013277 0ustar00 '$refresh', 'resetPageTable']; public $vcardId; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('vcard-testimonial-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('vcard-testimonial-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.vcard.image'), 'created_at')->view('vcards.testimonials.columns.icon'), Column::make(__('messages.common.name'), 'name') ->sortable()->searchable(), Column::make(__('messages.common.action'), 'id')->view('vcards.testimonials.columns.action'), ]; } public function builder(): Builder { return Testimonial::whereVcardId($this->vcardId)->select('testimonials.*'); } public function resetPageTable($pageName = 'vcard-testimonial-table') { $rowsPropertyData = $this->getRows()->toArray(); $prevPageNum = $rowsPropertyData['current_page'] - 1; $prevPageNum = $prevPageNum > 0 ? $prevPageNum : 1; $pageNum = count($rowsPropertyData['data']) > 0 ? $rowsPropertyData['current_page'] : $prevPageNum; $this->setPage($pageNum, $pageName); } public function placeholder() { return view('lazy_loading.without-filter-skelecton'); } } Livewire/WithdrawalTable.php000064400000005615152164577510012145 0ustar00 '$refresh']; public bool $showButtonOnHeader = true; public string $buttonComponent = 'user-settings.affiliationWithdraw.withdraw-button'; public function configure(): void { $this->setPrimaryKey('id'); $this->setPageName('withdrawal-table'); $this->setDefaultSort('created_at','desc'); $this->setColumnSelectStatus(false); $this->setQueryStringStatus(false); $this->resetPage('withdrawal-table'); $this->setThAttributes(function (Column $column) { if ($column->isField('id')) { return [ 'class' => 'd-flex justify-content-center', ]; } return []; }); } public function columns(): array { return [ Column::make(__('messages.common.user'), 'user_id') ->sortable(function (Builder $query, $direction) { return $query->orderBy( User::select('first_name')->whereColumn( 'withdrawals.user_id', 'users.id' ), $direction ); })->searchable(function (Builder $query, $direction) { if (!isAdmin()) { return $query->whereHas('user', function (Builder $q) use ($direction) { $q->whereRaw( "TRIM(CONCAT(first_name, ' ', last_name)) like '%{$direction}%'" ); }); } })->hideIf(isAdmin())->view('sadmin.affiliationWithdraw.columns.user'), Column::make(__('messages.subscription.amount'), 'amount') ->sortable()->searchable()->view('sadmin.affiliationWithdraw.columns.amount'), Column::make(__('messages.affiliation.approval_status'), 'is_approved') ->sortable()->view('sadmin.affiliationWithdraw.columns.approval_status'), Column::make(__('messages.date'), 'created_at') ->sortable()->view('sadmin.affiliationWithdraw.columns.date'), Column::make(__('messages.common.action'), 'id')->view('sadmin.affiliationWithdraw.columns.action'), ]; } public function builder(): Builder { $query = Withdrawal::with('user'); if (isAdmin()) { $query->whereUserId(getLogInUserId()); } return $query; } public function placeholder() { return view('lazy_loading.without-listing-skelecton'); } } Utils/ResponseUtil.php000064400000001112152164577510011021 0ustar00 true, 'data' => $data, 'message' => $message, ]; } public static function makeError(string $message, array $data = []): array { $res = [ 'success' => false, 'message' => $message, ]; if (! empty($data)) { $res['data'] = $data; } return $res; } } Jobs/SendEmailJob.php000064400000001524152164577510010465 0ustar00input = $input; $this->email = $email; } /** * Execute the job. */ public function handle(): void { $mail = new ContactUsMail($this->input, $this->email); Mail::to($this->email)->send($mail); } } Jobs/SendWithdrawRequestMailJob.php000064400000002231152164577510013377 0ustar00withdrawalId = $withdrawalId; $this->isApproved = $isApproved; } /** * Execute the job. */ public function handle(): void { $withdrawal = Withdrawal::with('user')->find($this->withdrawalId); $withdrawalRepo = App(WithdrawalRepository::class); if ($this->isApproved == Withdrawal::APPROVED) { $withdrawalRepo->SendWithdrawalApprovedMail($withdrawal); } else { $withdrawalRepo->SendWithdrawalRejectedMail($withdrawal); } } } Jobs/GenerateAiCardJob.php000066400000003467152164577510011434 0ustar00vcardId); $vcard->update(['ai_status' => 'processing']); $sourcesCount = is_array($this->sources) ? count($this->sources) : 1; Log::info("[GenerateAiCardJob] Starting: user#{$this->user->id}, vcard#{$this->vcardId}, {$sourcesCount} source(s)"); $result = $aiService->generate($this->user, $this->sources, $vcard); if ($result['success']) { Log::info("[GenerateAiCardJob] Done: template_id={$result['template_id']}, confidence={$result['confidence']}"); } else { Log::error("[GenerateAiCardJob] Failed: " . ($result['error'] ?? 'unknown')); $this->fail(new \Exception($result['error'] ?? 'AI generation failed')); } } public function failed(\Throwable $exception): void { Vcard::find($this->vcardId)?->update(['ai_status' => 'failed']); Log::error("[GenerateAiCardJob] Permanently failed: " . $exception->getMessage()); } } Http/Kernel.php000064400000007235152164577510007440 0ustar00 [ \App\Http\Middleware\DetectRegion::class, \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** * The application's middleware aliases. * * Aliases may be used to conveniently assign middleware to routes and groups. * * @var array */ protected $middlewareAliases = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, 'valid.user' => \App\Http\Middleware\CheckUserIsValid::class, 'subscription' => \App\Http\Middleware\CheckSubscription::class, 'vcardSubscription' => \App\Http\Middleware\CheckVcardSubscription::class, 'multi_tenant' => \App\Http\Middleware\MultiTenantMiddleware::class, 'xss' => XSS::class, 'language' => \App\Http\Middleware\languageChangeMiddleware::class, 'analytics' => \App\Http\Middleware\Analytics::class, 'setLanguage' => SetLanguage::class, 'checkVcardEdit' => checkVcardEdit::class, 'checkVcardAnalyst' => CheckVcardAnalytics::class, 'checkVcardEnquiry' => CheckVcardEnquiry::class, 'freshInstall' => \App\Http\Middleware\FreshInstall::class, ]; } Http/Requests/CreateBlogRequest.php000064400000001071152164577510013403 0ustar00|string> */ public function rules(): array { return Blog::$rules; } } Http/Requests/UpdateSettingRequest.php000064400000002372152164577510014161 0ustar00payment_gateway; $rules = Setting::$rules; $rules['email'] = 'required|email:filter'; $rules['address'] = 'required'; $rules['home_page_banner'] = 'nullable|mimes:jpg,jpeg,png'; $rules['affiliation_amount'] = 'numeric|min:1'; if (isset($paymentGateways[Plan::STRIPE])) { $rules['stripe_key'] = 'required'; $rules['stripe_secret'] = 'required'; } if (isset($paymentGateways[Plan::PAYPAL])) { $rules['paypal_client_id'] = 'required'; $rules['paypal_secret'] = 'required'; } if (isset($paymentGateways[Plan::RAZORPAY])) { $rules['razorpay_key'] = 'required'; $rules['razorpay_secret'] = 'required'; } return $rules; } } Http/Requests/UpdateVcardServiceRequest.php000064400000001547152164577510015127 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', // 'service_url.url' => 'The Service URL must be a valid URL' ]; } } Http/Requests/HomeBannerRequest.php000064400000001623152164577510013415 0ustar00 */ public function rules(): array { $rules = [ 'banner_url' => 'url', 'banner_title' => 'required|string', 'banner_description' => 'required|string', 'banner_button' => 'required|string', ]; return $rules; } public function messages(): array { return [ 'banner_url.url' => (__('messages.flash.url_required')), ]; } } Http/Requests/CreateFrontFaqRequest.php000064400000000726152164577510014246 0ustar00|string> */ public function rules(): array { $rules = Iframe::$rules; return $rules; } public function messages(): array { return [ 'url.required' => (('messages.flash.url_required')), 'url.url' => (('messages.flash.url_is_valid')), ]; } } Http/Requests/CreateEcardRequest.php000064400000002123152164577510013535 0ustar00 'required', 'first_name' => 'required|max:10', 'last_name' => 'required|max:10', 'email' => 'required|email:filter', 'occupation' => 'required|max:20', 'phone' => 'required|numeric', 'location' => 'required', 'website' => 'required', 'ecard-logo' => 'required|image|mimes:jpeg,png,jpg|dimensions:width=150,height=150', ]; } /** * Get the validation rules that apply to the request. */ public function messages(): array { return [ 'vcard_id.required' => __('messages.common.vcard_name_required'), ]; } } Http/Requests/ProductBuyRequest.php000064400000002166152164577510013502 0ustar00 */ public function rules(): array { $product = Product::whereId($this->product_id)->first(); $dynamicRules = [ 'name' => 'required', 'email' => 'required|email:filter', 'address' => 'required', 'payment_method' => 'required', ]; if (!empty($product->vcard->privacy_policy) || !empty($product->vcard->term_condition)) { $dynamicRules['product_terms'] = 'required'; } return $dynamicRules; } public function messages(): array { return [ 'product_terms' => (__('messages.placeholder.agree_term')), ]; } } Http/Requests/UpdateFrontCmsRequest.php000064400000002076152164577510014300 0ustar00 'required', 'sub_text' => 'required', 'home_page_banner' => 'mimes:jpg,jpeg,png', 'website_link' => 'nullable|url', 'facebook_link' => 'nullable|url', 'youtube_link' => 'nullable|url', 'reddit_link' => 'nullable|url', 'whatsapp_link' => 'nullable|url', 'tiktok_link' => 'nullable|url', 'twitter_link' => 'nullable|url', 'instagram_link' => 'nullable|url', 'tumbir_link' => 'nullable|url', 'linkedin_link' => 'nullable|url', 'pinterest_link' => 'nullable|url', ]; } } Http/Requests/UpdateBlogRequest.php000064400000001164152164577510013425 0ustar00|string> */ public function rules(): array { Blog::$rules['blog_image'] = 'nullable|mimes:jpg,jpeg,png'; return Blog::$rules; } } Http/Requests/UpdateFrontTestimonialRequest.php000064400000001423152164577510016041 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', ]; } } Http/Requests/UpdatePlanRequest.php000064400000002030152164577510013425 0ustar00route('plan'); if (!$this->custom_select && !$this->custom_vcard_number) { $rules['price'] = 'required|numeric'; $rules['no_of_vcards'] = 'required|integer|min:1'; } else { $rules['custom_vcard_number'] = 'required|min:1'; } return $rules; } public function messages() { return [ 'custom_vcard_number.*.required_if' => 'The custom vcard numbert is required.', 'custom_vcard_price.*.required_if' => 'The custom vcard price is required.', ]; } } Http/Requests/UpdateCustomLinkRequest.php000064400000001102152164577510014622 0ustar00|string> */ public function rules(): array { return CustomLink::$rules; } } Http/Requests/CreateVcardRequest.php000064400000002270152164577510013561 0ustar00 __('messages.vcard.alias_url_required'), 'name.string' => __('messages.vcard.vcard_name_required'), 'url_alias.min' => __('messages.vcard.alias_url_min'), 'url_alias.max' => __('messages.vcard.alias_url_max'), 'url_alias.unique' => __('messages.vcard.alias_url_unique'), 'cover_img.max' => __('messages.vcard.cover_img_max'), ]; } } Http/Requests/CreateEmailSubscriptionRequest.php000064400000001220152164577510016150 0ustar00 __('messages.placeholder.email_already_subscribed'), ]; } } Http/Requests/CreateVcardBlogRequest.php000064400000001254152164577510014366 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', ]; } } Http/Requests/CreatePlanRequest.php000064400000002242152164577510013413 0ustar00custom_select) { $rules['no_of_vcards'] = 'required|integer|min:1'; $rules['price'] = 'required|numeric'; } else { $rules['custom_vcard_number'] = 'required|min:1'; } return $rules; } public function messages() { return [ 'custom_vcard_number.*.required' => 'The custom vcard number field is required.', 'custom_vcard_number.*.numeric' => 'The custom vcard number must be a number.', 'custom_vcard_price.*.required' => 'The custom vcard price field is required.', 'custom_vcard_price.*.numeric' => 'The custom vcard price must be a number.', ]; } } Http/Requests/UpdateProductRequest.php000064400000001434152164577510014162 0ustar00 __('messages.vcard.product_name_string'), 'currency_id.required_with' => __('messages.vcard.currency_id_required_with'), ]; } } Http/Requests/createWithdrawAmountRequest.php000064400000001131152164577510015532 0ustar00 */ public function rules(): array { return [ 'amount' => 'required|numeric|gt:0', // 'paypal_email' => 'email|regex:/(.*)@(.*)\.(.*)/', ]; } } Http/Requests/AddCouponCodeRequest.php000064400000001662152164577510014051 0ustar00 */ public function rules(): array { return [ 'coupon_name' => 'required|max:50|regex:/[a-zA-Z]/|unique:coupon_codes,coupon_name', 'type' => 'required', 'discount' => 'required|numeric|min:1', 'expire_at' => 'required', ]; } public function messages(): array { return [ 'coupon_name.regex' => __('messages.coupon_code.coupon_name_regex'), 'discount.min' => __('messages.coupon_code.coupon_discount_validation'), ]; } } Http/Requests/UpdatePaymentRequest.php000064400000003317152164577510014161 0ustar00 */ public function rules(): array { $rules = []; $paymentGateways = request()->payment_gateway; if (isset($paymentGateways[Plan::STRIPE])) { $rules['stripe_key'] = 'required'; $rules['stripe_secret'] = 'required'; } if (isset($paymentGateways[Plan::PAYPAL])) { $rules['paypal_client_id'] = 'required'; $rules['paypal_secret'] = 'required'; } if (isset($paymentGateways[Plan::RAZORPAY])) { $rules['razorpay_key'] = 'required'; $rules['razorpay_secret'] = 'required'; } if (isset($paymentGateways[Plan::PAYSTACK])) { $rules['paystack_key'] = 'required'; $rules['paystack_secret'] = 'required'; } if (isset($paymentGateways[Plan::FLUTTERWAVE])) { $rules['flutterwave_key'] = 'required'; $rules['flutterwave_secret'] = 'required'; } if (isset($paymentGateways[Plan::PHONEPE])) { $rules['phonepe_merchant_id'] = 'required'; $rules['phonepe_merchant_user_id'] = 'required'; $rules['phonepe_env'] = 'required'; $rules['phonepe_salt_key'] = 'required'; $rules['phonepe_salt_index'] = 'required'; } return $rules; } } Http/Requests/CreateLanguageRequest.php000064400000001155152164577510014246 0ustar00 'The title field is required.', 'title.*.max' => 'The title not be greater then 100 characters.', 'description.*.string' => 'The description field is required.', 'description.*.max' => 'The description not be greater then 500 characters.', ]; } } Http/Requests/UpdateNfcCardRequest.php000064400000001321152164577510014035 0ustar00 */ public function rules(): array { $rules = Nfc::$rules; $rules['nfc_img'] = 'nullable|mimes:jpg,jpeg,png'; $rules['nfc_back_img'] = 'nullable|mimes:jpg,jpeg,png'; return $rules; } } Http/Requests/HomePageSettingRrequest.php000064400000001651152164577510014605 0ustar00 */ public function rules(): array { $rules['app_logo'] = 'nullable|mimes:jpg,jpeg,png|dimensions:max_width=60,max_height=90'; $rules['favicon'] = 'nullable|mimes:jpg,jpeg,png|dimensions:max_width=16,max_height=16'; $rules['register_image'] = 'nullable|mimes:jpg,jpeg,png|dimensions:max_width=16,max_height=16'; $rules['dashboard_logo'] = 'nullable|mimes:jpg,jpeg,png|dimensions:max_width=60,max_height=60'; return $rules; } } Http/Requests/UpdateUserProfileRequest.php000064400000001300152164577510014771 0ustar00|string> */ public function rules(): array { return MailSetting::$rules; } } Http/Requests/CreateUserRequest.php000064400000001154152164577510013440 0ustar00|string> */ public function rules(): array { $rules = ContactRequest::$rules; if (Auth::check()) { $rules['phone'] = 'nullable|numeric'; $rules['email'] = ['nullable']; } return $rules; } } Http/Requests/UpdateInstagramEmbedRequest.php000064400000000776152164577510015434 0ustar00route()->id; $rules['iso_code'] = 'required|max:2|min:2|unique:languages,iso_code,'.$this->route()->id; return $rules; } public function messages(): array { $messages['iso_code.required'] = 'The ISO Code field is required.'; return $messages; } } Http/Requests/UpdateCouponCodeRequest.php000064400000001706152164577510014602 0ustar00 */ public function rules(): array { return [ 'coupon_name' => 'required|max:50|regex:/[a-zA-Z]/|unique:coupon_codes,coupon_name,' . request()->id, 'type' => 'required', 'discount' => 'required|numeric|min:1', 'expire_at' => 'required', ]; } public function messages(): array { return [ 'coupon_name.regex' => __('messages.coupon_code.coupon_name_regex'), 'discount.min' => __('messages.coupon_code.coupon_discount_validation'), ]; } } Http/Requests/UpdateTestimonialRequest.php000064400000001426152164577510015033 0ustar00 (__('messages.flash.name_is_required')), 'description.string' =>(__('messages.flash.decription_is_required')), ]; } } Http/Requests/UpdateUserRequest.php000064400000001354152164577510013461 0ustar00route('user') !== null ? $this->route('user')->id : $this->route('admin'); $rules = User::$rules; $rules['profile'] = 'mimes:jpg,bmp,png,apng,avif,jpeg,'; $rules['email'] = 'required|email|regex:/(.*)@(.*)\.(.*)/|unique:users,email,'.$requestId; return $rules; } } Http/Requests/CreateiframeRequest.php000064400000001405152164577510013764 0ustar00|string> */ public function rules(): array { return Iframe::$rules; } public function messages(): array { return [ 'url.required' => (__('messages.flash.url_required')), 'url.url' => (__('messages.flash.url_is_valid')), ]; } } Http/Requests/CreateTestimonialRequest.php000064400000001304152164577510015007 0ustar00 (__('messages.flash.name_is_required')), 'description.string' => (__('messages.flash.decription_is_required')), ]; } } Http/Requests/NfcOrderRequest.php000064400000001723152164577510013102 0ustar00 */ public function rules(): array { return NfcOrders::$rules; } public function messages(): array { return [ 'card_type.required' => (__('messages.nfc.select_card')), 'vcard_id.required' => (__('messages.nfc.required_vcard')), 'vcard_id.integer' => (__('messages.nfc.required_vcard')), 'logo' => (__('messages.nfc.required_logo')), 'phone.integer' => (__('messages.nfc.required_phone')), ]; } } Http/Requests/CreateEmailSubscribersRequest.php000064400000001346152164577510015763 0ustar00 */ public function rules(): array { return VcardEmailSubscription::$rules; } public function messages(): array { return [ 'email' => (__('messages.flash.email_required')), ]; } } Http/Requests/CreateFrontTestimonialRequest.php000064400000001300152164577510016014 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', ]; } } Http/Requests/CreateGalleryRequest.php000064400000002072152164577510014121 0ustar00type == Gallery::TYPE_IMAGE) { $rules['image'] = 'mimes:jpg,png,jpeg,webp|required'; } if ($this->type == Gallery::TYPE_FILE) { $rules['gallery_upload_file'] = 'file|mimes:txt,xls,xlsx,csv,xml,pdf,doc,docx|required'; } if ($this->type == Gallery::TYPE_VIDEO) { $rules['video_file'] = 'file|mimes:mpeg,ogg,mp4,webm,3gp,mov,flv,avi,wmv,ts|max:100040|required'; } if ($this->type == Gallery::TYPE_AUDIO) { $rules['audio_file'] = 'mimes:mp3,wav,ogg|max:100040|required'; } return $rules; } } Http/Requests/CreateScheduleAppointmentRequest.php000064400000001243152164577510016474 0ustar00 'Phone must be a number', ]; } } Http/Requests/CreateNfcRequest.php000064400000001405152164577510013227 0ustar00 */ public function rules(): array { return Nfc::$rules; } public function messages(): array { return [ 'nfc_img' => (__('messages.nfc.nfc_image_required')), 'nfc_back_img' => (__('messages.nfc.nfc_back_image_required')), ]; } } Http/Requests/UpdateRoleRequest.php000064400000001345152164577510013444 0ustar00 'Name field is required', 'permission_id.required' => 'Please select any one permission', ]; } } Http/Requests/UpdateChangePasswordRequest.php000064400000001143152164577510015447 0ustar00 'required', 'new_password' => 'required|min:8|same:confirm_password', 'confirm_password' => 'required|min:8', ]; } } Http/Requests/CreateProductRequest.php000064400000001302152164577510014135 0ustar00 __('messages.vcard.product_name_string'), 'currency_id.required_with' => __('messages.vcard.currency_id_required_with'), ]; } } Http/Requests/UpdateCityRequest.php000064400000001043152164577510013446 0ustar00route('city')->id; return $rules; } } Http/Requests/CreateStateRequest.php000064400000000712152164577510013601 0ustar00 */ public function rules(): array { return [ 'email' => ['required', 'string', 'email'], 'password' => ['required', 'string'], ]; } /** * Attempt to authenticate the request's credentials. * * @throws \Illuminate\Validation\ValidationException */ public function authenticate(): void { $this->ensureIsNotRateLimited(); if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) { RateLimiter::hit($this->throttleKey()); throw ValidationException::withMessages([ 'email' => trans('auth.failed'), ]); } RateLimiter::clear($this->throttleKey()); } /** * Ensure the login request is not rate limited. * * @throws \Illuminate\Validation\ValidationException */ public function ensureIsNotRateLimited(): void { if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { return; } event(new Lockout($this)); $seconds = RateLimiter::availableIn($this->throttleKey()); throw ValidationException::withMessages([ 'email' => trans('auth.throttle', [ 'seconds' => $seconds, 'minutes' => ceil($seconds / 60), ]), ]); } /** * Get the rate limiting throttle key for the request. */ public function throttleKey(): string { return Str::transliterate(Str::lower($this->input('email')).'|'.$this->ip()); } } Http/Requests/Auth/error_log000064400000002300152164577510012124 0ustar00[16-Jun-2026 08:06:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php on line 12 [18-Jun-2026 08:23:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php on line 12 [20-Jun-2026 23:21:34 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php on line 12 [17-Jul-2026 04:19:55 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/Auth/LoginRequest.php on line 12 Http/Requests/UpdateUserSettingRequest.php000064400000001071152164577510015013 0ustar00 */ public function rules(): array { return [ 'pwa_icon' => 'image|mimes:jpeg,png,jpg|dimensions:width=512,height=512', ]; } } Http/Requests/CreateVcardServiceRequest.php000064400000001526152164577510015105 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', // 'service_url.url' => 'The Service URL must be a valid URL' 'service_icon' => (__('messages.flash.vcard_service_icon')), ]; } } Http/Requests/CreateCustomLinkRequest.php000064400000001102152164577510014603 0ustar00|string> */ public function rules(): array { return CustomLink::$rules; } } Http/Requests/CreateRegisterRequest.php000064400000002060152164577510014303 0ustar00 __('messages.placeholder.agree_term'), 'g-recaptcha-response.required' => __('messages.placeholder.required_captcha'), ]; } } Http/Requests/UpdateCountryRequest.php000064400000001564152164577510014211 0ustar00route('country')->id; $rules['short_code'] = $rules['short_code'].$this->route('country')->id; $rules['phone_code'] = $rules['phone_code'].$this->route('country')->id; return $rules; } public function messages(): array { return [ 'short_code.alpha' => __('messages.placeholder.short_code_only_alpha'), ]; } } Http/Requests/CreateBannerRequest.php000064400000001274152164577510013732 0ustar00 */ public function rules(): array { return Banner::$rules; } public function messages(): array { return [ 'url.url' => (__('messages.flash.url_required')), ]; } } Http/Requests/MobileRequest.php000064400000002711152164577510012605 0ustar00 */ public function rules(): array { $rules = [ 'mobile_app_enable' => 'boolean', ]; if ($this->input('mobile_app_enable')) { if ($this->input('play_store_link') == null && $this->input('app_store_link') == null) { $rules['play_store_link'] = 'required'; } else { $rules['play_store_link'] = ''; } if ($this->input('play_store_link') != null) { $rules['play_store_link'] .= '|url'; } if ($this->input('app_store_link') != null) { if (!isset($rules['app_store_link'])) { $rules['app_store_link'] = ''; } $rules['app_store_link'] .= '|url'; } } return $rules; } public function messages() { return [ 'play_store_link.url' => __('messages.play_store_url'), 'app_store_link.url' => __('messages.app_store_url'), ]; } } Http/Requests/CreateCountryRequest.php000064400000001163152164577510014165 0ustar00 __('messages.placeholder.short_code_only_alpha'), ]; } } Http/Requests/CreateContactRequest.php000064400000000724152164577510014117 0ustar00route('state')->id; return $rules; } } Http/Requests/UpdateFeatureRequest.php000064400000001041152164577510014127 0ustar00vcard->privacy_policy) || !empty($this->vcard->term_condition)) { $dynamicRules['terms_condition'] = 'required'; } if (getUserSettingValue('enable_attachment_for_inquiry', $this->vcard->user->id) === '1') { $dynamicRules['attachment'] = 'mimes:jpg,png,jpeg'; } return $dynamicRules; } public function messages(): array { return [ 'terms_condition' => (__('messages.placeholder.agree_term')), ]; } } Http/Requests/UpdateGalleryRequest.php000064400000002547152164577510014147 0ustar00route('gallery')->id)->first(); $rule = 'mimes:jpg,png,jpeg,webp'; $rule1 = 'file|mimes:txt,xls,xlsx,csv,xml,pdf,doc,docx'; if ($gallery->type != $this->type) { $rule = 'required|mimes:jpg,png,jpeg,webp'; $rule1 = 'required|file|mimes:txt,xls,xlsx,csv,xml,pdf,doc,docx'; } if ($this->type == Gallery::TYPE_IMAGE) { $rules['image'] = $rule; } if ($this->type == Gallery::TYPE_FILE) { $rules['gallery_upload_file'] = $rule1; } if ($this->type == Gallery::TYPE_VIDEO) { $rules['video_file'] = 'file|mimes:mpeg,ogg,mp4,webm,3gp,mov,flv,avi,wmv,ts|max:100040|required'; } if ($this->type == Gallery::TYPE_AUDIO) { $rules['audio_file'] = 'mimes:mp3,wav,ogg|max:100040|required'; } return $rules; } } Http/Requests/CreateInstagramEmbedRequest.php000064400000000777152164577510015416 0ustar00 'The name field is required.', 'description.string' => 'The description field is required.', ]; } } Http/Requests/UpdateUserPasswordRequest.php000064400000001063152164577510015201 0ustar00 'required|min:8|same:confirm_password', 'confirm_password' => 'required|min:8', ]; } } Http/Requests/SendMailRequest.php000064400000001111152164577510013063 0ustar00 */ public function rules(): array { $rules = SendEmail::$rules; return $rules; } } Http/Requests/CreateRoleRequest.php000064400000001313152164577510013420 0ustar00 'Name field is required', 'permission_id.required' => 'Please select any one permission', ]; } } Http/Requests/UpdateVcardRequest.php000064400000003611152164577510013600 0ustar00route('vcard')->id; $rules['current_password'] = 'nullable|min:6'; $rules['profile_img'] = 'mimes:jpg,bmp,png,apng,avif,jpeg,'; $rules['cover_img'] = 'mimes:jpg,bmp,png,apng,avif,jpeg,mp4,mpeg,ogg,webm,3gp,mov,flv,avi,wmv,ts|max:10240'; $rules['qr_code_download_size'] = ['numeric', 'in:100,200,300,400,500']; if ($this->input('location_type') == 0) { $rules['location_url'] = 'nullable|url'; } else { $rules['iframe_content'] = 'nullable|string'; } return $rules; } public function messages(): array { return [ 'url_alias.string' => __('messages.vcard.alias_url_required'), 'name.string' => __('messages.vcard.vcard_name_required'), 'url_alias.min' => __('messages.vcard.alias_url_min'), 'url_alias.max' => __('messages.vcard.alias_url_max'), 'url_alias.unique' => __('messages.vcard.alias_url_unique'), 'occupation.string' => 'The occupation field is required.', 'description.string' => ' The description field is required.', 'first_name.string' => ('messages.vcard.first_name_required'), 'last_name.string' => ('messages.vcard.last_name_required'), 'is_paid' => __('messages.vcard.is_paid'), 'cover_img.max' => __('messages.vcard.cover_img_max'), ]; } } Http/Controllers/PaypalController.php000064400000057375152164577510014032 0ustar00subscriptionRepository = $subscriptionRepository; } /** * @throws Throwable * @throws HttpException */ public function onBoard(Request $request): JsonResponse { $plan = Plan::with('currency')->findOrFail($request->planId); if ($plan->currency->currency_code != null && ! in_array( strtoupper($plan->currency->currency_code), getPayPalSupportedCurrencies() )) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported')); } $data = $this->subscriptionRepository->manageSubscription($request->all()); if (! isset($data['plan'])) { // 0 amount plan or try to switch the plan if it is in trial mode // returning from here if the plan is free. if (isset($data['status']) && $data['status'] == true) { return $this->sendSuccess($data['subscriptionPlan']->name . ' ' . __('messages.subscription_pricing_plans.has_been_subscribed')); } else { if (isset($data['status']) && $data['status'] == false) { return $this->sendError(__('messages.placeholder.cannot_switch_to_zero')); } } } $subscriptionsPricingPlan = $data['plan']; $subscription = $data['subscription']; $mode = getSelectedPaymentGateway('paypal_mode'); $clientId = getSelectedPaymentGateway('paypal_client_id'); $clientSecret = getSelectedPaymentGateway('paypal_secret'); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient(); $provider->getAccessToken(); $data = [ 'intent' => 'CAPTURE', 'purchase_units' => [ [ 'reference_id' => $subscription->id, 'amount' => [ 'value' => $data['amountToPay'], 'currency_code' => $subscription->plan->currency->currency_code, ], ], ], 'application_context' => [ 'cancel_url' => route('paypal.failed'), 'return_url' => route('paypal.success'), ], ]; $order = $provider->createOrder($data); return response()->json(['link' => $order['links'][1]['href'], 'status' => 200]); } /** * @throws HttpException * @throws HttpException|Throwable */ public function userOnBoard($userId, $vcard, $input): JsonResponse { $amount = $input['amount']; $currencyCode = $input['currency_code']; $mode = getUserSettingValue('paypal_mode', $userId); $clientId = getUserSettingValue('paypal_client_id', $userId); $clientSecret = getUserSettingValue('paypal_secret', $userId); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient(); $provider->getAccessToken(); $data = [ 'intent' => 'CAPTURE', 'purchase_units' => [ [ 'reference_id' => $vcard->id, 'amount' => [ 'value' => $amount, 'currency_code' => $currencyCode, ], ], ], 'application_context' => [ 'cancel_url' => route('user.paypal.failed'), 'return_url' => route('user.paypal.success'), ], ]; $order = $provider->createOrder($data); session()->put(['appointment_details' => $input]); session(['vcard_user_id' => $userId, 'tenant_id' => $vcard->tenant->id, 'vcard_id' => $vcard->id]); return response()->json(['link' => $order['links'][1]['href'], 'status' => 200]); } /** * @return Application|RedirectResponse|Redirector|void * * @throws IOException * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface|Throwable */ public function userSuccess(Request $request): RedirectResponse { $userId = session()->get('vcard_user_id'); $clientId = getUserSettingValue('paypal_client_id', $userId); $clientSecret = getUserSettingValue('paypal_secret', $userId); $mode = getUserSettingValue('paypal_mode', $userId); $currencyCode = Currency::whereId(getUserSettingValue('currency_id', $userId))->first(); $config = [ 'mode' => $mode, // Can only be 'sandbox' Or 'live'. If empty or invalid, 'live' will be used. $mode => [ 'client_id' => $clientId, 'client_secret' => $clientSecret, ], 'payment_action' => config('paypal.payment_action'), // Can only be 'Sale', 'Authorization' or 'Order' 'currency' => $currencyCode->currency_code, 'notify_url' => config('paypal.notify_url'), // Change this accordingly for your application. 'locale' => config('paypal.locale'), // force gateway language i.e. it_IT, es_ES, en_US ... (for express checkout only) 'validate_ssl' => config('paypal.validate_ssl'), // Validate SSL when creating api client. ]; config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient; $provider->getAccessToken(); $token = $request->get('token'); $orderInfo = $provider->showOrderDetails($token); try { // Call API with your client and get a response for your call $response = $provider->capturePaymentOrder($token); // If call returns body in response, you can get the deserialized version from the result attribute of the response $vcardId = $response['purchase_units'][0]['reference_id']; $tenantId = session()->get('tenant_id'); $amount = $response['purchase_units'][0]['payments']['captures'][0]['amount']['value']; $currencyCode = $response['purchase_units'][0]['payments']['captures'][0]['amount']['currency_code']; $currencyId = Currency::whereCurrencyCode($currencyCode)->first()->id; $transactionId = $response['id']; $vcard = Vcard::with('tenant.user')->where('id', $vcardId)->first(); $transactionDetails = [ 'vcard_id' => $vcardId, 'transaction_id' => $transactionId, 'currency_id' => $currencyId, 'amount' => $amount, 'tenant_id' => $tenantId, 'type' => Appointment::PAYPAL, 'status' => Transaction::SUCCESS, 'meta' => json_encode($response), ]; $appointmentTran = AppointmentTransaction::create($transactionDetails); $appointmentInput = session()->get('appointment_details'); session()->forget('appointment_details'); $appointmentInput['appointment_tran_id'] = $appointmentTran->id; /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($appointmentInput, $vcardEmail); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id']); Flash::success(__('messages.placeholder.payment_done')); App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); return redirect(route('vcard.show', [$vcard->url_alias, __('messages.placeholder.appointment_created')])); } catch (HttpException $ex) { print_r($ex->getMessage()); } } /** * @return Application|RedirectResponse|Redirector */ public function userFailed(): RedirectResponse { $vcardId = session('vcard_id'); $vcard = Vcard::findOrFail($vcardId); session()->forget('appointment_details'); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id']); Flash::error('Your Payment is Cancelled'); return redirect(route('vcard.show', $vcard->url_alias)); } /** * @return Application|Factory|View|void * * @throws IOException */ public function success(Request $request): \Illuminate\View\View { $mode = getSelectedPaymentGateway('paypal_mode'); $clientId = getSelectedPaymentGateway('paypal_client_id'); $clientSecret = getSelectedPaymentGateway('paypal_secret'); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient; $provider->getAccessToken(); $token = $request->get('token'); $orderInfo = $provider->showOrderDetails($token); $subscriptionId = null; try { // Call API with your client and get a response for your call $response = $provider->capturePaymentOrder($token); if (isset($response['purchase_units'][0]['reference_id'])) { $subscriptionId = $response['purchase_units'][0]['reference_id']; } if (isset($response['purchase_units'][0]['payments']['captures'][0]['amount']['value'])) { $subscriptionAmount = $response['purchase_units'][0]['payments']['captures'][0]['amount']['value']; } if (isset($response['id'])) { $transactionID = $response['id']; } Subscription::findOrFail($subscriptionId)->update([ 'payment_type' => Subscription::PAYPAL, 'status' => Subscription::ACTIVE ]); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscriptionId) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $transaction = Transaction::create([ 'transaction_id' => $transactionID, 'type' => Transaction::PAYPAL, 'amount' => $subscriptionAmount, 'status' => Subscription::ACTIVE, 'meta' => json_encode($response), ]); // updating the transaction id on the subscription table $subscription = Subscription::findOrFail($subscriptionId); $planName = $subscription->plan->name; $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if ($affiliateAmountType == 1) { AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount, 'is_verified' => 1]); } else if ($affiliateAmountType == 2) { $amount = $subscriptionAmount * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount, 'is_verified' => 1]); } $userEmail = getLogInUser()->email; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'subscriptionId' => $subscriptionId, 'subscriptionAmount' => $subscriptionAmount, 'transactionID' => $transactionID, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; manageVcards(); Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); return view('sadmin.plans.payment.paymentSuccess'); } catch (HttpException $ex) { print_r($ex->getMessage()); } } /** * @return Application|Factory|View */ public function failed(): \Illuminate\View\View { return view('sadmin.plans.payment.paymentcancel'); } public function buyProductOnboard($input, $product): JsonResponse { $userId = $product->vcard->user->id; if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyCode = Currency::whereId($product->currency_id)->first()->currency_code; $clientId = getUserSettingValue('paypal_client_id', $userId); $clientSecret = getUserSettingValue('paypal_secret', $userId); $mode = getUserSettingValue('paypal_mode', $userId); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient(); $provider->getAccessToken(); $data = [ 'intent' => 'CAPTURE', 'purchase_units' => [ [ 'reference_id' => $product->id, 'amount' => [ 'value' => $product->price, 'currency_code' => $currencyCode, ], ], ], 'application_context' => [ 'cancel_url' => route('paypal.buy.product.failed'), 'return_url' => route('paypal.buy.product.success'), ], ]; $order = $provider->createOrder($data); session()->put([ 'input' => $input, ]); return response()->json(['link' => $order['links'][1]['href'], 'status' => 200]); } public function productBuySuccess(Request $request) { $input = session()->get('input'); $product = Product::whereId($input['product_id'])->first(); $userId = $product->vcard->user->id; if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyId = Currency::whereId($product->currency_id)->first()->id; $clientId = getUserSettingValue('paypal_client_id', $userId); $clientSecret = getUserSettingValue('paypal_secret', $userId); $mode = getUserSettingValue('paypal_mode', $userId); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient; $provider->getAccessToken(); $token = $request->get('token'); try { $response = $provider->capturePaymentOrder($token); $amount = $response['purchase_units'][0]['payments']['captures'][0]['amount']['value']; DB::beginTransaction(); ProductTransaction::create([ 'product_id' => $input['product_id'], 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'address' => $input['address'], 'currency_id' => $currencyId, 'meta' => json_encode($response), 'type' => $input['payment_method'], 'transaction_id' => $response['id'], 'amount' => $amount, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $input['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $input['phone'], 'address' => $input['address'], 'payment_type' => __('messages.paypal'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($input['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); session()->forget('input'); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } catch (HttpException $ex) { print_r($ex->getMessage()); } } public function productBuyFailed() { $input = session()->get('input'); session()->forget('input'); $product = Product::whereId($input['product_id'])->first(); $vcard = $product->vcard; Flash::error(__('messages.placeholder.payment_cancel')); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias])); } public function nfcOrderOnboard($orderId, $email, $nfc, $currency) { $mode = getSelectedPaymentGateway('paypal_mode'); $clientId = getSelectedPaymentGateway('paypal_client_id'); $clientSecret = getSelectedPaymentGateway('paypal_secret'); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient(); $provider->getAccessToken(); $data = [ 'intent' => 'CAPTURE', 'purchase_units' => [ [ 'reference_id' => $orderId, 'amount' => [ 'value' => $nfc->nfcCard->price * $nfc->quantity, 'currency_code' => $currency, ], ], ], 'application_context' => [ 'cancel_url' => route('nfc.paypal.failed'), 'return_url' => route('nfc.paypal.success'), ], ]; $order = $provider->createOrder($data); session()->put(['order_details' => $nfc, 'order_id' => $orderId]); return response()->json(['link' => $order['links'][1]['href'], 'status' => 200]); } public function nfcPurchaseSuccess(Request $request) { $mode = getSelectedPaymentGateway('paypal_mode'); $clientId = getSelectedPaymentGateway('paypal_client_id'); $clientSecret = getSelectedPaymentGateway('paypal_secret'); config([ 'paypal.mode' => $mode, 'paypal.sandbox.client_id' => $clientId, 'paypal.sandbox.client_secret' => $clientSecret, 'paypal.live.client_id' => $clientId, 'paypal.live.client_secret' => $clientSecret, ]); $provider = new PayPalClient; $provider->getAccessToken(); $token = $request->get('token'); $orderInfo = $provider->showOrderDetails($token); try { // Call API with your client and get a response for your call $response = $provider->capturePaymentOrder($token); // If call returns body in response, you can get the deserialized version from the result attribute of the response $orderId = session()->get('order_id'); $type = NfcOrders::PAYPAL; $transactionId = $response['id']; $amount = $response['purchase_units'][0]['payments']['captures'][0]['amount']['value']; $userId = NfcOrders::findOrFail($orderId)->user_id; $status = NfcOrders::SUCCESS; $nfcOrder = NfcOrders::get()->find($orderId); $transactionDetails = [ 'nfc_order_id' => $orderId, 'type' => $type, 'transaction_id' => $transactionId, 'amount' => $amount, 'user_id' => $userId, 'status' => $status, ]; $vcardName = VCard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; NfcOrderTransaction::create($transactionDetails); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id', 'order_details', 'order_id']); Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); return redirect(route('user.orders')); } catch (HttpException $ex) { print_r($ex->getMessage()); } } public function nfcPurchaseFailed() { $orderId = session()->get('order_id'); $type = NfcOrders::PAYPAL; $amount = session('order_details')->nfcCard->price; $userId = NfcOrders::findOrFail($orderId)->user_id; $transactionDetails = [ 'nfc_order_id' => $orderId, 'type' => $type, 'amount' => $amount, 'user_id' => $userId, 'status' => NfcOrders::FAIL, ]; NfcOrderTransaction::create($transactionDetails); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id', 'order_details', 'order_id']); Flash::error(__('messages.placeholder.payment_cancel')); return redirect(route('user.orders')); } } Http/Controllers/VcardController.php000064400000067050152164577510013632 0ustar00vcardRepository = $vcardRepository; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { $makeVcard = $this->vcardRepository->checkTotalVcard(); return view('vcards.index', compact('makeVcard')); } /** * @return Application|Factory|View */ public function template(): \Illuminate\View\View { return view('sadmin.vcards.index'); } public function download($id): JsonResponse { $data = Vcard::with('socialLink')->find($id); return $this->sendResponse($data, __('messages.flash.vcard_retrieve')); } /** * @return Application|Factory|View */ public function vcards(): \Illuminate\View\View { $makeVcard = $this->vcardRepository->checkTotalVcard(); return view('vcards.templates', compact('makeVcard')); } public function verified(Vcard $vcard): JsonResponse { $vcard->update([ 'is_verified' => ! $vcard->is_verified, ]); return $this->sendResponse($vcard, __('messages.flash.vcard_verified')); } /** * @return Application|Factory|View */ public function create() { $makeVcard = $this->vcardRepository->checkTotalVcard(); if (! $makeVcard) { return redirect(route('vcards.index')); } $partName = 'basics'; return view('vcards.create', compact('partName')); } /** * @return Application|RedirectResponse|Redirector */ public function store(CreateVcardRequest $request): RedirectResponse { $input = $request->all(); $vcard = $this->vcardRepository->store($input); Flash::success(__('messages.flash.vcard_create')); return redirect(route('vcards.edit', $vcard->id)); } /** * @return Application|Factory|View */ public function show($alias, $id = null) { if (request()->has('fbclid')) { $cleanUrl = request()->fullUrlWithoutQuery('fbclid'); return redirect()->to($cleanUrl); } $vcard = Vcard::with([ 'businessHours' => function ($query) { $query->where('end_time', '!=', '00:00'); }, 'services', 'testimonials', 'products', 'blogs', 'privacy_policy', 'term_condition', 'user', 'banners', 'iframes', 'dynamic_vcard', ])->whereUrlAlias($alias)->first(); $vcardProducts = $vcard->products()->orderBy('id', 'desc')->get(); $blogSingle = ''; if (isset($id)) { $blogSingle = VcardBlog::where('id', $id)->first(); } $setting = Setting::pluck('value', 'key')->toArray(); $vcard_name = $vcard->template->name; $url = explode('/', $vcard->location_url); $appointmentDetail = AppointmentDetail::where('vcard_id', $vcard->id)->first(); $instagramEmbed = AppointmentDetail::where('vcard_id', $vcard->id)->first(); $managesection = VcardSections::where('vcard_id', $vcard->id)->first(); $banners = Banner::where('vcard_id', $vcard->id)->first(); $iframes = Iframe::where('vcard_id', $vcard->id)->first(); $dynamicVcard = DynamicVcard::where('vcard_id', $vcard->id)->first(); $customLink = CustomLink::where('vcard_id', $vcard->id)->get(); $userSetting = UserSetting::where('user_id', $vcard->user->id)->pluck('value', 'key')->toArray(); $currency = ''; $paymentMethod = null; if (isset($userSetting['currency_id']) && count($userSetting) > 0) { $currency = Currency::where('id', $userSetting['currency_id'])->first(); $paymentMethod = getPaymentMethod($userSetting); } $reqpage = str_replace('/' . $vcard->url_alias, '', \Request::getRequestUri()); $reqpage = empty($reqpage) ? 'index' : $reqpage; $reqpage = preg_replace("/\.$/", '', $reqpage); $reqpage = preg_replace('/[0-9]+/', '', $reqpage); $reqpage = str_replace('/', '', $reqpage); $reqpage = str_contains($reqpage, '?') ? substr($reqpage, 0, strpos($reqpage, '?')) : $reqpage; $vcard_name = $vcard_name == 'vcard11' ? 'vcard11.' . $reqpage : $vcard_name; // PWA Support $userId = $vcard->user->id; $inquiry = getUserSettingValue('enable_attachment_for_inquiry', $userId); $contactRequest = getUserSettingValue('ask_details_before_downloading_contact', $userId); $pwa_icon = getUserSettingValue('pwa_icon', $userId); $pwa_icon = (!$pwa_icon) ? 'logo.png' : str_replace(rtrim(env('APP_URL'), '/'), '', $pwa_icon); // notifation // if(getUserSettingValue('notifation_enable',$userId)){ // config([ // 'app.one_signal_app_id' => getUserSettingValue('onesignal_app_id',$userId), // 'onesignal.app_id' => getUserSettingValue('onesignal_app_id',$userId), // 'onesignal.rest_api_key' => getUserSettingValue('onesignal_rest_api_key',$userId), // ]); // } $pwa_name = $vcard->url_alias; $path = public_path('pwa/1.json'); $json = json_decode(file_get_contents($path), true); $json['name'] = $pwa_name; $json['short_name'] = $pwa_name; $json['start_url'] = route('vcard.show', ['alias' => $vcard->url_alias]); if (isset($userSetting['enable_pwa']) && $userSetting['enable_pwa'] == "1") { $json['display'] = "fullscreen"; } else { unset($json['display']); } $json['icons'] = [ [ "src" => $pwa_icon, "sizes" => "512x512", "type" => "image/png", "purpose" => "any maskable", ], ]; file_put_contents($path, json_encode($json)); $businessDaysTime = []; if ($vcard->businessHours->count()) { $dayKeys = [1, 2, 3, 4, 5, 6, 7]; $openDayKeys = []; $openDays = []; $closeDays = []; foreach ($vcard->businessHours as $key => $openDay) { $openDayKeys[] = $openDay->day_of_week; $openDays[$openDay->day_of_week] = $openDay->start_time . ' - ' . $openDay->end_time; } $closedDayKeys = array_diff($dayKeys, $openDayKeys); foreach ($closedDayKeys as $closeDayKey) { $closeDays[$closeDayKey] = null; } $businessDaysTime = $openDays + $closeDays; ksort($businessDaysTime); } $customQrCode = QrcodeEdit::whereTenantId($vcard->user->tenant_id)->where('vcard_id', $vcard->id)->pluck('value', 'key')->toArray(); if ($customQrCode == null) { $customQrCode['qrcode_color'] = '#000000'; $customQrCode['background_color'] = '#ffffff'; } $qrcodeColor['qrcodeColor'] = Hex::fromString($customQrCode['qrcode_color'])->toRgb(); $qrcodeColor['background_color'] = Hex::fromString($customQrCode['background_color'])->toRgb(); if (empty(getLocalLanguage())) { $alias = $vcard->url_alias; $languageName = $vcard->default_language; session(['languageChange_' . $alias => $languageName]); setLocalLang(getLocalLanguage()); } if ($vcard->status) { return view( 'vcardTemplates.' . $vcard_name, compact( 'vcard', 'setting', 'url', 'appointmentDetail', 'banners', 'managesection', 'userSetting', 'currency', 'paymentMethod', 'blogSingle', 'businessDaysTime', 'customQrCode', 'qrcodeColor', 'vcardProducts', 'dynamicVcard', 'instagramEmbed', 'iframes', 'inquiry', 'customLink', 'contactRequest', ) ); } abort('404'); } public function checkPassword(Request $request, Vcard $vcard): JsonResponse { setLocalLang(checkLanguageSession($vcard->url_alias)); if (Crypt::decrypt($vcard->password) == $request->password) { session(['password_' => '1']); return $this->sendSuccess(__('messages.placeholder.password_is_correct')); } return $this->sendError(__('messages.placeholder.password_invalid')); } /** * @return Application|Factory|View|RedirectResponse|Redirector */ public function edit(Vcard $vcard, Request $request) { $partName = ($request->part === null) ? 'basics' : $request->part; if ($partName !== TermCondition::TERM_CONDITION && $partName !== PrivacyPolicy::PRIVACY_POLICY) { if (! checkFeature($partName)) { return redirect(route('vcards.edit', $vcard->id)); } } $data = $this->vcardRepository->edit($vcard); $data['partName'] = $partName; $appointmentDetail = AppointmentDetail::where('vcard_id', $vcard->id)->first(); $banners = Banner::where('vcard_id', $vcard->id)->first(); $privacyPolicy = PrivacyPolicy::where('vcard_id', $vcard->id)->first(); $termCondition = TermCondition::where('vcard_id', $vcard->id)->first(); $managesection = VcardSections::where('vcard_id', $vcard->id)->first(); $dynamicVcard = DynamicVcard::where('vcard_id', $vcard->id)->first(); $instagramEmbed = AppointmentDetail::where('vcard_id', $vcard->id)->first(); $iframes = Iframe::where('vcard_id', $vcard->id)->first(); $customLink = CustomLink::where('vcard_id', $vcard->id)->first(); return view('vcards.edit', compact('appointmentDetail', 'privacyPolicy', 'termCondition', 'iframes', 'managesection', 'instagramEmbed', 'banners', 'dynamicVcard', 'customLink'))->with($data); } public function updateStatus(Vcard $vcard): JsonResponse { if ($vcard->status == 0) { $user = getLogInUser(); $vCards = Vcard::where('tenant_id', $user->tenant_id)->where('status', 1)->get(); $limitOfVcards = Subscription::whereTenantId($user->tenant_id)->where('status', Subscription::ACTIVE)->latest()->first()->no_of_vcards; if ($limitOfVcards <= $vCards->count()) { return $this->sendError(__('messages.vcard.you_have_reached_vcard_limit')); } } $vcard->update([ 'status' => ! $vcard->status, ]); return $this->sendSuccess(__('messages.flash.vcard_status')); } public function update(UpdateVcardRequest $request, Vcard $vcard): RedirectResponse { $request->except('url_alias'); $input = $request->all(); $edit_alias_url = getSuperAdminSettingValue('url_alias'); if ($edit_alias_url == 0 && isset($input['url_alias']) && $input['url_alias'] != $vcard->url_alias) { Flash::error(__('messages.flash.url_alias')); return redirect()->back(); } $vcard = $this->vcardRepository->update($input, $vcard); if ($vcard) { Session::flash('success', ' ' . __('messages.flash.vcard_update')); } // $userId = getLogInUserId(); // if(getUserSettingValue('notifation_enable',$userId)){ // config([ // 'app.one_signal_app_id' => getUserSettingValue('onesignal_app_id',$userId), // 'onesignal.app_id' => getUserSettingValue('onesignal_app_id',$userId), // 'onesignal.rest_api_key' => getUserSettingValue('onesignal_rest_api_key',$userId), // ]); // sendVcardNotifications($vcard->id); // } return redirect()->back(); } public function destroy(Vcard $vcard): JsonResponse { $termCondition = TermCondition::whereVcardId($vcard->id)->first(); if (! empty($termCondition)) { $termCondition->delete(); } $privacyPolicy = PrivacyPolicy::whereVcardId($vcard->id)->first(); if (! empty($privacyPolicy)) { $privacyPolicy->delete(); } $vcard->clearMediaCollection(Vcard::PROFILE_PATH); $vcard->clearMediaCollection(Vcard::COVER_PATH); $vcard->delete(); $data['make_vcard'] = $this->vcardRepository->checkTotalVcard(); return $this->sendResponse($data, __('messages.flash.vcard_delete')); } public function getSlot(Request $request): JsonResponse { $day = $request->get('day'); $slots = getSchedulesTimingSlot(); $html = view('vcards.appointment.slot', ['slots' => $slots, 'day' => $day])->render(); return $this->sendResponse($html, 'Retrieved successfully.'); } public function getSession(Request $request): JsonResponse { try { setLocalLang(getLocalLanguage()); $vcardId = $request->get('vcardId'); $appointmentDate = $request->date; if (!$vcardId || !$appointmentDate) { return $this->sendError(__('messages.placeholder.invalid_request_parameters')); } $buttonStyle = DynamicVcard::where('vcard_id', $vcardId)->value('button_style'); $date = \Carbon\Carbon::parse($appointmentDate); $dayOfWeek = $date->dayOfWeek == 0 ? 7 : $date->dayOfWeek; $weekDaySessions = Appointment::where('day_of_week', $dayOfWeek) ->where('vcard_id', $vcardId) ->get(); if ($weekDaySessions->isEmpty()) { return $this->sendError(__('messages.placeholder.there_is_not_available_slot')); } $bookedAppointments = ScheduleAppointment::where('vcard_id', $vcardId) ->whereDate('date', $appointmentDate) ->get(); $userId = Vcard::with('user')->find($vcardId)->user->id; $timeFormat = getUserSettingValue('time_format', $userId) == UserSetting::HOUR_24 ? 'H:i' : 'h:i A'; $bookedSlot = $bookedAppointments->map(function ($appointment) use ($timeFormat) { return date($timeFormat, strtotime($appointment->from_time)) . ' - ' . date($timeFormat, strtotime($appointment->to_time)); })->toArray(); $bookingSlot = $weekDaySessions->map(function ($session) use ($timeFormat) { if ($timeFormat == 'H:i') { $startTime = substr($session->start_time, 0, 5); $endTime = substr($session->end_time, 0, 5); } else { $startTime = substr($session->start_time, 0, 8); $endTime = substr($session->end_time, 0, 8); } return date($timeFormat, strtotime($startTime)) . ' - ' . date($timeFormat, strtotime($endTime)); })->toArray(); $availableSlots = array_diff($bookingSlot, $bookedSlot); if (empty($availableSlots)) { return $this->sendError(__('messages.placeholder.there_is_not_available_slot')); } $buttonStyle = $buttonStyle ?? ''; return $this->sendResponse($availableSlots, $buttonStyle, 'Retrieved successfully.'); } catch (\Exception $e) { return $this->sendError(__('messages.placeholder.something_went_wrong')); } } public function language($languageName, $alias) { $currentLanguage = getLocalLanguage(); session(['languageChange_' . $alias => $languageName]); setLocalLang(getLocalLanguage()); return $this->sendSuccess(__('messages.flash.language_update', [], $currentLanguage)); } /** * @return Application|Factory|View */ public function analytics(Vcard $vcard, Request $request): \Illuminate\View\View { $input = $request->all(); $data = $this->vcardRepository->analyticsData($input, $vcard); $partName = ($request->part === null) ? 'overview' : $request->part; return view('vcards.analytic', compact('vcard', 'partName', 'data')); } public function chartData(Request $request): JsonResponse { try { $input = $request->all(); $data = $this->vcardRepository->chartData($input); return $this->sendResponse($data, 'Users fetch successfully.'); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return mixed */ public function dashboardChartData(Request $request) { try { $input = $request->except('_'); $data = $this->vcardRepository->dashboardChartData($input); return $this->sendResponse($data, 'Data fetch successfully.'); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } /** * @return Application|Factory|View */ public function showBlog($alias, $id): \Illuminate\View\View { setLocalLang(getLocalLanguage()); $blog = VcardBlog::with('vcard:id,template_id')->whereRelation('vcard', 'url_alias', '=', $alias) ->whereRelation('vcard', 'status', '=', 1) ->where('id', $id) ->firstOrFail(); $dynamicVcard = DynamicVcard::where('vcard_id', $blog->vcard_id)->first(); return view('vcards.blog', compact('blog', 'dynamicVcard')); } /** * @return Application|Factory|View */ public function showPrivacyPolicy($alias, $id) { $vacrdTemplate = vcard::find($id); setLocalLang(getLocalLanguage()); $privacyPolicy = PrivacyPolicy::with('vcard')->where('vcard_id', $id)->first(); $termCondition = TermCondition::with('vcard')->where('vcard_id', $id)->first(); $dynamicVcard = DynamicVcard::with('vcard')->where('vcard_id', $id)->first(); if ($vacrdTemplate->template_id == 11) { return redirect()->route('vcard.show.privacy-policy', [$alias, $id]); // return view('vcardTemplates.vcard11.portfolio', compact('privacyPolicy', 'alias', 'termCondition')); } return view('vcards.privacy-policy', compact('privacyPolicy', 'alias', 'termCondition', 'dynamicVcard')); } public function duplicateVcard($id): JsonResponse { try { $vcard = Vcard::with([ 'services', 'testimonials', 'products', 'blogs', 'privacy_policy', 'term_condition', 'socialLink', 'customeLink', 'banners', 'iframes', 'InstagramEmbed', 'Qrcode', ])->where('id', $id)->first(); $this->vcardRepository->getDuplicateVcard($vcard); return $this->sendSuccess('Duplicate Vcard Create successfully.'); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function getUniqueUrlAlias() { return getUniqueVcardUrlAlias(); } public function checkUniqueUrlAlias($urlAlias) { $isUniqueUrl = isUniqueVcardUrlAlias($urlAlias); if ($isUniqueUrl === true) { return $this->sendResponse(['isUnique' => true], 'URL Alias is available to use.'); } $response = ['isUnique' => false, 'usedInVcard' => $isUniqueUrl]; return $this->sendResponse($response, 'This URL Alias is already in use'); } public function addContact(Vcard $vcard) { ini_set('memory_limit', '-1'); $vcfVcard = new VCardVCard(); $lastname = $vcard->last_name; $firstname = $vcard->first_name; $vcfVcard->addName($lastname, $firstname); $vcfVcard->addCompany($vcard->company); $vcfVcard->addJobtitle($vcard->job_title); if (! empty($vcard->email)) { $vcfVcard->addEmail($vcard->email); } if (! empty($vcard->alternative_email)) { $vcfVcard->addEmail($vcard->alternative_email, 'EMAIL;type=Alternate Email'); } if (! empty($vcard->phone)) { $vcfVcard->addPhoneNumber('+' . $vcard->region_code . $vcard->phone, 'TEL;type=CELL'); } if (! empty($vcard->alternative_phone)) { $vcfVcard->addPhoneNumber('+' . $vcard->alternative_region_code . $vcard->alternative_phone, 'TEL;type=Alternate Phone'); } $vcfVcard->addAddress($vcard->location); if (! empty($vcard->location_url)) { $vcfVcard->addURL($vcard->location_url, 'TYPE=Location URL'); } $socialLinks = SocialLink::whereVcardId($vcard->id)->first()->toArray(); $customSocialLinks = SocialIcon::with('media')->whereSocialLinkId($socialLinks['id'])->get(); unset($socialLinks['id']); unset($socialLinks['media']); unset($socialLinks['created_at']); unset($socialLinks['updated_at']); unset($socialLinks['social_icon']); unset($socialLinks['vcard_id']); foreach ($customSocialLinks as $link) { $socialLinks = array_merge($socialLinks, [$link->media[0]['name'] => $link->link]); } foreach ($socialLinks as $key => $link) { $name = Str::camel($key); $vcfVcard->addURL($link, 'TYPE=' . $name); } $vcfVcard->addURL(URL::to($vcard->url_alias)); if ($media = $vcard->getMedia(\App\Models\Vcard::PROFILE_PATH)->first()) { $vcfVcard->addPhotoContent(file_get_contents($media->getFullUrl())); } return \Response::make( $vcfVcard->getOutput(), 200, $vcfVcard->getHeaders(true) ); } public function showProducts($id, $alias) { $vcard = Vcard::with([ 'businessHours' => function ($query) { $query->where('end_time', '!=', '00:00'); }, 'services', 'testimonials', 'products', 'blogs', 'privacy_policy', 'term_condition', 'user', ])->whereUrlAlias($alias)->first(); $userSetting = UserSetting::where('user_id', $vcard->user->id)->pluck('value', 'key')->toArray(); $vcardProducts = $vcard->products->sortDesc()->take(6); $products = Product::with('vcard')->whereVcardId($id)->get(); $template_id = $products->first()->vcard->template_id; if ($vcard->status) { return view( 'vcardTemplates/products/vcard' . $template_id, compact( 'vcard', 'vcardProducts', 'products', 'userSetting' ) ); } } public function deleteAccount() { setLocalLang(getCurrentLanguageName()); return view('vcards.delete_account'); } public function getCookie(Request $request) { $fullUrl = $request->url; $urlWithoutDomain = trim(parse_url($fullUrl, PHP_URL_PATH), '/'); $vcard = Vcard::whereUrlAlias($urlWithoutDomain)->first(); $valuedata = 5 * 1000; if ($vcard) { $user = $vcard->user; if ($user) { $value = getUserSettingValue('subscription_model_time', $user->id); $timeValue = empty($value) ? 5 : $value; $valuedata = intval($timeValue) * 1000; } } return $this->sendResponse($valuedata, ''); } public function emailSubscriprionStore(CreateEmailSubscribersRequest $request) { $input = $request->all(); VcardEmailSubscription::create($input); return $this->sendSuccess(__('messages.flash.email_send')); } public function showSubscribers(Vcard $vcard) { $vcardId = $vcard->id; return view('vcards.vcard-subscribers', compact('vcardId')); } public function showContact(Vcard $vcard) { $vcardId = $vcard->id; return view('vcards.vcard-contact', compact('vcardId')); } public function vcardViewType(Request $request): JsonResponse { $viewType = $request->input('vcard_table_view_type'); $user = getLogInUser(); $user->update(['vcard_table_view_type' => $viewType]); return $this->sendSuccess(__('messages.vcard_table_view_changed')); } public function servicesSliderView(Vcard $vcard): JsonResponse { if ($vcard) { $vcard->services_slider_view = !$vcard->services_slider_view; $vcard->save(); return $this->sendSuccess(__('messages.flash.services_slider_view')); } return $this->sendError('Something went wrong', 200); } public function cloneTo(Vcard $vcard) { $users = User::role('admin') ->where('tenant_id', '!=', $vcard->user->tenant_id) ->get() ->mapWithKeys(function ($user) { return [$user->id => $user->full_name]; }) ->toArray(); $data = [ 'vcard' => $vcard, 'users' => $users ]; return $this->sendResponse($data, 'Vcard Retrieved Successfully.'); } public function sadminDuplicateVcard($id, $userId = null): JsonResponse { try { $vcard = Vcard::with([ 'services', 'testimonials', 'products', 'blogs', 'privacy_policy', 'term_condition', 'socialLink', 'customeLink', 'banners', 'iframes', 'InstagramEmbed', 'Qrcode', ])->where('id', $id)->first(); $this->vcardRepository->getDuplicateVcard($vcard, $userId); return $this->sendSuccess('Duplicate Vcard Create successfully.'); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/Controller.php000064400000000453152164577510012644 0ustar00subscriptionRepository = $subscriptionRepository; } public function flutterwaveSubscription(Request $request) { $clientId = getSelectedPaymentGateway('flutterwave_key'); $clientSecret = getSelectedPaymentGateway('flutterwave_secret'); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); $supportedCurrency = ['GBP', 'CAD', 'XAF', 'CLP', 'COP', 'EGP', 'EUR', 'GHS', 'GNF', 'KES', 'MWK', 'MAD', 'NGN', 'RWF', 'SLL', 'STD', 'ZAR', 'TZS', 'UGX', 'USD', 'XOF', 'ZMW']; $plan = Plan::with('currency')->findOrFail($request->planId); if ($plan->currency->currency_code != null && !in_array(strtoupper($plan->currency->currency_code), $supportedCurrency)) { Flash::error(__('messages.placeholder.this_currency_is_not_supported_flutterwave')); return Redirect()->back(); } $data = $this->subscriptionRepository->manageSubscription($request->all()); if (!isset($data['plan'])) { if (isset($data['status']) && $data['status'] == true) { Flash::error(__('messages.subscription_pricing_plans.has_been_subscribed')); return Redirect()->back(); } else { if (isset($data['status']) && $data['status'] == false) { Flash::error(__('messages.placeholder.cannot_switch_to_zero')); return Redirect()->back(); } } } $subscriptionsPricingPlan = $data['plan']; $subscription = $data['subscription']; // FlutterWave $reference = FlutterWave::generateReference(); $data = [ 'payment_options' => 'card,banktransfer', 'amount' => $data['amountToPay'], 'email' => $request->user()->email, 'tx_ref' => $reference, 'currency' => $plan->currency->currency_code, 'redirect_url' => route('flutterwave.subscription.success'), 'customer' => [ 'email' => getLogInUser()->email, ], 'customizations' => [ 'title' => 'Purchase Subscription Payment', ], 'meta' => [ 'subscription_id' => $subscription->id, 'amount' => $data['amountToPay'] * 100, 'payment_mode' => Subscription::FLUTTERWAVE, ], ]; $payment = FlutterWave::initializePayment($data); if ($payment['status'] !== 'success') { return redirect(route('subscription.index')); } $url = $payment['data']['link']; return redirect()->away($url); } public function flutterwaveSubscriptionSuccess(Request $request) { $clientId = getSelectedPaymentGateway('flutterwave_key'); $clientSecret = getSelectedPaymentGateway('flutterwave_secret'); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); $input = $request->all(); if ($input['status'] == 'successful') { $transactionID = FlutterWave::getTransactionIDFromCallback(); $flutterWaveData = FlutterWave::verifyTransaction($transactionID); $data = $flutterWaveData['data']; $amount = $data['amount']; $subscriptionId = $data['meta']['subscription_id']; Subscription::findOrFail($subscriptionId)->update([ 'payment_type' => Subscription::FLUTTERWAVE, 'status' => Subscription::ACTIVE ]); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscriptionId) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $transaction = Transaction::create([ 'transaction_id' => $input['transaction_id'], 'type' => Transaction::FLUTTERWAVE, 'amount' => $amount, 'status' => Subscription::ACTIVE, 'meta' => json_encode($data), ]); // updating the transaction id on the subscription table $subscription = Subscription::findOrFail($subscriptionId); $planName = $subscription->plan->name; $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if($affiliateAmountType == 1){ AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount,'is_verified' => 1]); }else if($affiliateAmountType == 2){ $amount = $amount * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount,'is_verified' => 1]); } $userEmail = getLogInUser()->email; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'first_name' => $firstName, 'last_name' => $lastName, 'planName' => $planName, ]; manageVcards(); Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); return view('sadmin.plans.payment.paymentSuccess'); } } public function nfcOrder($orderId, $email, $nfc, $currency) { $clientId = getSelectedPaymentGateway('flutterwave_key'); $clientSecret = getSelectedPaymentGateway('flutterwave_secret'); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); try { $reference = FlutterWave::generateReference(); $data = [ 'payment_options' => 'card,banktransfer', 'amount' => $nfc->nfcCard->price * $nfc->quantity, 'email' => getLogInUser()->email, 'tx_ref' => $reference, 'currency' => $currency, 'redirect_url' => route('flutterwave.nfcOrder.success'), 'customer' => [ 'email' => $nfc->email, ], 'customizations' => [ 'title' => 'Purchase NFC Order Payment', ], 'meta' => [ 'order_id' => $orderId, 'amount' => $nfc->nfcCard->price * $nfc->quantity, 'payment_mode' => Subscription::FLUTTERWAVE, ], ]; $payment = FlutterWave::initializePayment($data); if ($payment['status'] !== 'success') { return redirect(route('user.orders')); } $url = $payment['data']['link']; return $url; } catch (\Exception $e) { Flash::error(__('messages.setting.paystack_credential')); return Redirect()->back(); } } public function flutterwaveNfcOrderSuccess(Request $request) { $clientId = getSelectedPaymentGateway('flutterwave_key'); $clientSecret = getSelectedPaymentGateway('flutterwave_secret'); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); $input = $request->all(); if ($input['status'] == 'successful') { $transactionID = FlutterWave::getTransactionIDFromCallback(); $flutterWaveData = FlutterWave::verifyTransaction($transactionID); $data = $flutterWaveData['data']; try { $orderId = $data['meta']['order_id']; $userId = NfcOrders::findOrFail($orderId)->user_id; $status = NfcOrders::SUCCESS; $nfcOrder = NfcOrders::get()->find($orderId); $type = NfcOrders::FLUTTERWAVE; $transactionId = $input['transaction_id']; $amount = $data['amount']; $transactionDetails = [ 'nfc_order_id' => $orderId, 'type' => $type, 'transaction_id' => $transactionId, 'amount' => $amount, 'user_id' => $userId, 'status' => $status, ]; NfcOrderTransaction::create($transactionDetails); $vcardName = Vcard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); return redirect(route('user.orders')); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } } Http/Controllers/CouponCodeController.php000064400000013501152164577510014621 0ustar00all(); $couponLimit = $input['coupon_limit']; $input['coupon_limit_left'] = $couponLimit; // $endDate = $input['expire_at']; // $format = getSuperAdminSettingValue('datetime_method'); // $formattedDate = ($format == 1) // ? Carbon::createFromFormat('d M, Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 2) // ? Carbon::createFromFormat('M d, Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 3) // ? Carbon::createFromFormat('d/m/Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 4) // ? Carbon::createFromFormat('Y/m/d', $endDate)->format('Y-m-d H:i:s') // : (($format == 5) // ? Carbon::createFromFormat('m/d/Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 6) // ? Carbon::createFromFormat('Y-m-d', $endDate)->format('Y-m-d H:i:s') // : Carbon::parse($endDate)->format('Y-m-d H:i:s') // ) // ) // ) // ) // ); // $input['expire_at'] = $formattedDate; $input['status'] = isset($input['status']); CouponCode::create($input); return $this->sendSuccess(__('messages.coupon_code.coupon_code_created')); } public function edit($couponCodeId) { $couponCode = CouponCode::findOrFail($couponCodeId); return $this->sendResponse($couponCode, 'Coupon Code Retrieved Successfully.'); } public function update(UpdateCouponCodeRequest $request, $id) { $input = $request->all(); $couponCode = CouponCode::findOrFail($id); $couponCodeLimit = $couponCode->coupon_limit_left; $input['coupon_limit'] = isset($input['coupon_limit'])? $input['coupon_limit']: null; if($input['coupon_limit'] == $couponCodeLimit ){ $input['coupon_limit_left'] = $input['coupon_limit']; }else{ $input['coupon_limit_left'] = $couponCodeLimit - ($input['coupon_limit'] ) ; } if($input['coupon_limit'] > $couponCodeLimit ){ $input['coupon_limit_left'] = $input['coupon_limit']; } if($input['coupon_limit'] < $couponCodeLimit ){ $input['coupon_limit_left'] = $input['coupon_limit']; } if($input['coupon_limit'] == null){ $input['coupon_limit_left'] = null; } // $endDate = $input['expire_at']; // $format = getSuperAdminSettingValue('datetime_method'); // $formattedDate = ($format == 1) // ? Carbon::createFromFormat('d M, Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 2) // ? Carbon::createFromFormat('M d, Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 3) // ? Carbon::createFromFormat('d/m/Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 4) // ? Carbon::createFromFormat('Y/m/d', $endDate)->format('Y-m-d H:i:s') // : (($format == 5) // ? Carbon::createFromFormat('m/d/Y', $endDate)->format('Y-m-d H:i:s') // : (($format == 6) // ? Carbon::createFromFormat('Y-m-d', $endDate)->format('Y-m-d H:i:s') // : Carbon::parse($endDate)->format('Y-m-d H:i:s') // ) // ) // ) // ) // ); // $input['expire_at'] = $formattedDate; $input['status'] = isset($input['status']); $couponCode->update($input); return $this->sendSuccess(__('messages.coupon_code.coupon_code_updated')); } public function destroy($couponCodeId) { $couponCode = CouponCode::findOrFail($couponCodeId); $couponCode->delete(); return $this->sendSuccess('Coupon Code deleted Successfully.'); } public function changeCouponCodeStatus(Request $request, $couponCodeId) { $couponCode = CouponCode::findOrFail($couponCodeId); $couponCode->status = $request->get('status') == 'true' ? 1 : 0; $couponCode->update(); return $this->sendSuccess(__('messages.coupon_code.coupon_code_status_updated')); } public function applyCouponCode(Request $request, $couponCode = null) { $input = $request->all(); $input['couponCode'] = $couponCode; $couponCodeRepo = App(CouponCodeRepository::class); $newPlan = $couponCodeRepo->getAfterDiscountData($input); if (isset($newPlan['afterDiscount'])) { $couponId = $newPlan['afterDiscount']['couponId']; $coupon = CouponCode::find($couponId); if ($coupon) { if ($coupon->coupon_limit != null) { if ($coupon->coupon_limit_left <= 0) { return $this->sendError(__('messages.coupon_code.coupon_limit_reached')); } } } } return $this->sendResponse($newPlan, __('messages.coupon_code.coupon_code_applied')); } } Http/Controllers/ProductTransactionController.php000064400000004351152164577510016414 0ustar00first(); return view('product_transactions.show', compact('productTransaction')); } public function updateSendCustomerMail(Request $request) { $setting = UserSetting::where('user_id', Auth::id())->where('key', 'product_order_send_mail_customer')->first(); try { DB::beginTransaction(); if (! $setting) { $setting = UserSetting::create([ 'user_id' => Auth::id(), 'key' => 'product_order_send_mail_customer', 'value' => $request->customer_mail ?? '1', ]); } else { $setting->update(['value' => $request->customer_mail ?? '1']); } DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } return $this->sendSuccess(__('messages.flash.send_email_to_customer_success')); } public function updateSendUserMail(Request $request) { $setting = UserSetting::where('user_id', Auth::id())->where('key', 'product_order_send_mail_user')->first(); try { DB::beginTransaction(); if (! $setting) { $setting = UserSetting::create([ 'user_id' => Auth::id(), 'key' => 'product_order_send_mail_user', 'value' => $request->user_mail ?? '1', ]); } else { $setting->update(['value' => $request->user_mail ?? '1']); } DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } return $this->sendSuccess(__('messages.flash.send_email_to_user_success')); } } Http/Controllers/RoleController.php000064400000005372152164577510013473 0ustar00roleRepository = $roleRepo; } /** * @return Application|Factory|View * * @throws Exception */ public function index(Request $request): \Illuminate\View\View { $permissions = Permission::toBase()->get(); return view('roles.index', compact('permissions')); } /** * @return Application|Factory|View */ public function create(): \Illuminate\View\View { $permissions = $this->roleRepository->getPermissions(); return view('roles.create', compact('permissions')); } /** * Store a newly created Role in storage. * * @return Application|RedirectResponse|Redirector */ public function store(CreateRoleRequest $request): RedirectResponse { $input = $request->all(); $this->roleRepository->store($input); Flash::success(__('messages.placeholder.role_created')); return redirect(route('roles.index')); } /** * Show the form for editing the specified Role. * * @return Application|Factory|View */ public function edit(Role $role): \Illuminate\View\View { $permissions = $this->roleRepository->getPermissions(); $selectedPermissions = $role->getAllPermissions()->keyBy('id'); return view('roles.edit', compact('role', 'permissions', 'selectedPermissions')); } /** * Update the specified Role in storage. * * @return Application|Redirector|RedirectResponse */ public function update(UpdateRoleRequest $request, Role $role): RedirectResponse { $this->roleRepository->update($request->all(), $role->id); Flash::success('Role updated successfully.'); return redirect(route('roles.index')); } /** * Remove the specified Role from storage. */ public function destroy(Role $role): JsonResponse { if ($role->is_default == 1) { return $this->sendError('Default role do not deleted.'); } $role->delete(); return $this->sendSuccess('Role deleted successfully.'); } } Http/Controllers/API/RegistrationAPIController.php000064400000006425152164577510016207 0ustar00input('referral-code'); $referral_user = ''; if ($referral_code) { $referral_user = User::where('affiliate_code', $referral_code)->first(); } try { DB::beginTransaction(); // Check if the user already exists $existingUser = User::where('email', $request->email)->first(); if ($existingUser) { // Handle case where email is already registered return $this->sendError("Email is already registered."); } $tenant = MultiTenant::create(['tenant_username' => $request->first_name]); $userDefaultLanguage = Setting::where('key', 'user_default_language')->first()->value ?? 'en'; $user = User::create([ 'first_name' => $request->first_name, 'last_name' => $request->last_name, 'email' => $request->email, 'language' => $userDefaultLanguage, 'password' => Hash::make($request->password), 'tenant_id' => $tenant->id, 'affiliate_code' => generateUniqueAffiliateCode(), ])->assignRole(Role::ROLE_ADMIN); $plan = Plan::whereIsDefault(true)->first(); Subscription::create([ 'plan_id' => $plan->id, 'plan_amount' => $plan->price, 'plan_frequency' => Plan::MONTHLY, 'starts_at' => Carbon::now(), 'ends_at' => Carbon::now()->addDays($plan->trial_days), 'trial_ends_at' => Carbon::now()->addDays($plan->trial_days), 'status' => Subscription::ACTIVE, 'tenant_id' => $tenant->id, 'no_of_vcards' => $plan->no_of_vcards, ]); if ($referral_user) { $affiliateUser = new AffiliateUser(); $affiliateUser->affiliated_by = $referral_user->id; $affiliateUser->user_id = $user->id; $affiliateUser->amount = 0; $affiliateUser->save(); } DB::commit(); $token = Password::getRepository()->create($user); $data['url'] = config('app.url').'/verify-email/'.$user->id.'/'.$token; $data['user'] = $user; Mail::to($user->email)->send(new VerifyMail($data)); return $this->sendSuccess("Registration successfully."); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/API/BusinessCards/GroupsAPIController.php000064400000002362152164577510017560 0ustar00 $request->name, 'tenant_id' => getLogInTenantId(), ]); return $this->sendSuccess('Group created successfully.'); } public function groupData() { $groupsData = Group::all(); $data = []; foreach ($groupsData as $groupData) { $data[] = [ 'id' => $groupData->id, 'name' => $groupData->name, 'tenant_id' => $groupData->tenant_id, 'created_at' => $groupData->created_at, ]; } return $this->sendResponse($data, 'Groups data retrieved successfully.'); } public function deleteGroup($group) { $enquiry = Group::find($group); if (empty($group)) { return $this->sendSuccess('Group not found'); } $enquiry->delete(); return $this->sendSuccess('Group deleted successfully.'); } } Http/Controllers/API/BusinessCards/error_log000064400000004100152164577510015077 0ustar00[17-Jun-2026 15:45:27 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php on line 10 [17-Jun-2026 21:34:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php on line 12 [19-Jun-2026 12:29:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php on line 12 [19-Jun-2026 23:54:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php on line 10 [17-Jul-2026 13:46:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/BusinessAPIController.php on line 12 [17-Jul-2026 13:48:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/BusinessCards/GroupsAPIController.php on line 10 Http/Controllers/API/BusinessCards/BusinessAPIController.php000064400000005473152164577510020102 0ustar00url_alias; $urlAlias = null; $parsedUrl = parse_url($url); if (isset($parsedUrl['path'])) { $pathParts = explode('/', $parsedUrl['path']); $urlAlias = end($pathParts); } if (isset($urlAlias)) { $vcard = Vcard::where('url_alias', $urlAlias)->first(); if ($vcard) { BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $vcard->id, 'url' => route('vcard.show', ['alias' => $vcard->url_alias]), 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } } // If no matching Vcard found, create business card with provided data BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $request->id, 'url' => $url, // Use the provided URL 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } public function businessCardData(Request $request) { $filter = $request->all(); $businessCards = BusinessCards::with(['vcard', 'groups']) ->when(!empty($filter), function ($q) use ($filter) { $q->whereIn('group_id', $filter['filter']); }) ->get(); $data = []; foreach ($businessCards as $businessCard) { $data[] = [ 'id' => $businessCard->id, 'vcard_id' => $businessCard->vcard_id, 'url' => $businessCard->url, 'name' => $businessCard->vcard ? $businessCard->vcard->name : null, 'occupation' => $businessCard->vcard ? $businessCard->vcard->occupation : null, 'created_at' => $businessCard->vcard ? $businessCard->vcard->created_at : null, 'group_name' => $businessCard->groups->name, 'phone' => $businessCard->vcard->phone ?? null, 'alternative_phone' => $businessCard->vcard->alternative_phone ?? null, 'vcard_image' => !empty($businessCard->vcard->template) ? $businessCard->vcard->template->template_url : null, ]; } return $this->sendResponse($data, 'Business Data Retrieve Successfully.'); } } Http/Controllers/API/Admin/EnquiryAPIController.php000064400000003431152164577510016213 0ustar00pluck('id')->toArray(); $enquirys = Enquiry::with('vcard')->whereIn('vcard_id', $vcardIds)->get(); $data = []; foreach ($enquirys as $enquiry) { $data[] = [ 'id' => $enquiry->id, 'vcard_name' => $enquiry->vcard->name, 'name' => $enquiry->name, 'created_at' => $enquiry->created_at, ]; } return $this->sendResponse($data, 'Enquiry data retrieved successfully.'); } public function enquiry($enquiry) { $enquirys = Enquiry::with('vcard')->whereId($enquiry)->first(); if(empty($enquirys)){ return $this->sendError('Enquiry not found', 404); } $data[] = [ 'id' => $enquirys->id, 'vcard_name' => $enquirys->vcard->name, 'name' => $enquirys->name, 'email' => $enquirys->email, 'phone' => $enquirys->phone, 'message' => $enquirys->message, 'created_at' => $enquirys->created_at, ]; return $this->sendResponse($data, 'Enquiry data retrieved successfully.'); } public function deleteEnquiry($enquiry) { $enquiry = Enquiry::find($enquiry); if (empty($enquiry)) { return $this->sendSuccess('Appointment not found'); } $enquiry->delete(); return $this->sendSuccess('Enquiry deleted successfully.'); } } Http/Controllers/API/Admin/AppointmentAPIController.php000064400000005501152164577510017055 0ustar00pluck('id')->toArray(); $scheduleAppointments = ScheduleAppointment::with('vcard')->whereIn('vcard_id', $vcardIds)->get(); $data = []; foreach ($scheduleAppointments as $appointment) { $data[] = [ 'id' => $appointment->id, 'vcard_name' => $appointment->vcard->name, 'name' => $appointment->name, 'date' => $appointment->date, 'from_time' => $appointment->from_time, 'to_time' => $appointment->to_time, 'status' => $appointment->status, 'paid_amount' => $appointment->paid_amount, ]; } return $this->sendResponse($data, 'Appointment data retrieved successfully.'); } public function appointment($scheduleAppointmentsId) { $scheduleAppointments = ScheduleAppointment::with('vcard')->whereId($scheduleAppointmentsId)->first(); if(empty($scheduleAppointments)){ return $this->sendError('Appointment not found', 404); } $data[] = [ 'id' => $scheduleAppointments->id, 'vcard_name' => $scheduleAppointments->vcard->name, 'name' => $scheduleAppointments->name, 'email' => $scheduleAppointments->email, 'phone' => $scheduleAppointments->phone, 'date' => $scheduleAppointments->date, 'from_time' => $scheduleAppointments->from_time, 'to_time' => $scheduleAppointments->to_time, 'status' => $scheduleAppointments->status, 'paid_amount' => $scheduleAppointments->paid_amount, ]; return $this->sendResponse($data, 'Appointment data retrieved successfully.'); } public function deleteAppointment($scheduleAppointmentsId) { $appointment = ScheduleAppointment::find($scheduleAppointmentsId); if (empty($appointment)) { return $this->sendSuccess('Appointment not found'); } $appointment->delete(); return $this->sendSuccess('Appointment deleted successfully.'); } public function appointmentCompleted(ScheduleAppointment $scheduleAppointmentsId) { $appointments = ScheduleAppointment::find($scheduleAppointmentsId->id); $appointments->update([ 'status' => ScheduleAppointment::COMPLETED, ]); return $this->sendSuccess('Appointment completed successfully;'); } } Http/Controllers/API/Admin/GroupAPIController.php000064400000002733152164577510015657 0ustar00 $request->name, 'tenant_id' => getLogInTenantId(), ]); return $this->sendSuccess('User Group created successfully.'); } public function groupData() { $tenantId = getLogInTenantId(); $groupsData = Group::where('tenant_id', $tenantId)->get(); $data = []; foreach ($groupsData as $groupData) { $data[] = [ 'id' => $groupData->id, 'name' => $groupData->name, 'tenant_id' => $groupData->tenant_id, 'created_at' => $groupData->created_at, ]; } return $this->sendResponse($data, 'User groups data retrieved successfully.'); } public function deleteGroup($groupId) { $tenantId = getLogInTenantId(); $userVcard = Group::where('id', $groupId) ->where('tenant_id', $tenantId) ->first(); if (!$userVcard) { return $this->sendError('User Groups not found'); } $userVcard->delete(); return $this->sendSuccess('User Groups deleted successfully.'); } } Http/Controllers/API/Admin/VcardAPIController.php000064400000010653152164577510015622 0ustar00pluck('id')->toArray(); $vcards = Vcard::whereIn('id', $vcardIds)->get(); $data = []; foreach ($vcards as $vcard) { $data[] = [ 'id' => $vcard->id, 'name' => $vcard->name, 'url_alias' => route('vcard.show', ['alias' => $vcard->url_alias]), 'occupation' => $vcard->occupation, 'image' => !empty($vcard->template) ? $vcard->template->template_url : asset('assets/images/default_cover_image.jpg'), ]; } return $this->sendResponse($data, 'Vcards Data Retrieve Successfully.'); } public function vcard(Request $vcard) { $tenantId = getLogInTenantId(); $userVcard = Vcard::where('id', $vcard->id) ->where('tenant_id', $tenantId) ->first(); if (empty($userVcard)) { return $this->sendError('Vcard not found'); } $data = [ 'id' => $userVcard->id, 'name' => $userVcard->name, 'occupation' => $userVcard->occupation, 'image' => !empty($userVcard->template) ? $userVcard->template->template_url : asset('assets/images/default_cover_image.jpg'), 'created_at' => $userVcard->created_at, ]; return $this->sendResponse($data, 'Vcard Data Retrieved Successfully.'); } public function deleteVcard($vcardId) { $tenantId = getLogInTenantId(); $userVcard = Vcard::where('id', $vcardId) ->where('tenant_id', $tenantId) ->first(); if (!$userVcard) { return $this->sendError('Vcard not found'); } $userVcard->delete(); return $this->sendSuccess('Vcard deleted successfully.'); } public function appointmentVcard($vcard) { if (!is_array($vcard)) { $vcard = [$vcard]; } $tenantId = getLogInTenantId(); $scheduleAppointment = ScheduleAppointment::with('vcard') ->whereIn('vcard_id', $vcard) ->whereHas('vcard', function ($query) use ($tenantId) { $query->where('tenant_id', $tenantId); }) ->get(); $data = []; foreach ($scheduleAppointment as $scheduleAppointments) { $data[] = [ 'id' => $scheduleAppointments->id, 'vcard_id' => $scheduleAppointments->vcard->id, 'vcard_name' => $scheduleAppointments->vcard->name, 'name' => $scheduleAppointments->name, 'date' => $scheduleAppointments->date, 'from_time' => $scheduleAppointments->from_time, 'to_time' => $scheduleAppointments->to_time, 'status' => $scheduleAppointments->status, 'paid_amount' => $scheduleAppointments->paid_amount, ]; } return $this->sendResponse($data, 'Vcard Appointment Data Retrieve Successfully.'); } public function enquiresVcard($vcard) { $tenantId = getLogInTenantId(); $enquiriesDatas = Enquiry::whereHas('vcard', function ($query) use ($vcard, $tenantId) { $query->where('id', $vcard) ->where('tenant_id', $tenantId); }) ->get(); $data = []; foreach ($enquiriesDatas as $enquiriesData) { $data[] = [ 'id' => $enquiriesData->id, 'vcard_name' => $enquiriesData->vcard->name, 'name' => $enquiriesData->name, 'email' => $enquiriesData->email, 'phone' => $enquiriesData->phone, 'message' => $enquiriesData->message, 'created_at' => $enquiriesData->created_at, ]; } return $this->sendResponse($data, 'Vcard Enquiries Data Retrieve Successfully.'); } } Http/Controllers/API/Admin/DashboardAPIController.php000064400000005633152164577510016454 0ustar00dashboardRepository = $dashboardRepo; $this->vcardRepository = $vcardRepo; } public function index() { $data['activeVcard'] = Vcard::whereTenantId(auth()->user()->tenant_id)->whereStatus(1)->count(); $data['deActiveVcard'] = Vcard::whereTenantId(auth()->user()->tenant_id)->whereStatus(0)->count(); $data['enquiry'] = $this->dashboardRepository->getEnquiryCountAttribute(); $data['appointment'] = $this->dashboardRepository->getAppointmentCountAttribute(); return $this->sendResponse($data, 'Admin Dashboard retrieve Successfully.'); } public function todayAppointment() { $vcardIds = Vcard::toBase()->whereTenantId(getLogInTenantId())->pluck('id')->toArray(); $today = Carbon::now()->format('Y-m-d'); $appointments = ScheduleAppointment::with('vcard')->whereIn('vcard_id', $vcardIds) ->whereDate('date', $today) ->orderBy('created_at', 'DESC') ->get(); $data = []; foreach ($appointments as $appointment) { $data[] = [ 'id' => $appointment->id, 'vcard_name' => $appointment->vcard->name, 'name' => $appointment->name, 'phone' => $appointment->phone, 'email' => $appointment->email, 'date' => $appointment->date, 'from_time' => $appointment->from_time, 'to_time' => $appointment->to_time, 'status' => $appointment->status, 'paid_amount' => $appointment->paid_amount, ]; } return $this->sendResponse($data, 'Admin Today Appointment data retrieve Successfully.'); } public function incomeChartData() { try { $input = [ 'start_date' => Carbon::now()->subDays(7)->format("Y-m-d H:m:s"), 'end_date' => Carbon::now()->format("Y-m-d H:m:s"), ]; $data = $this->vcardRepository->dashboardChartData($input); return $this->sendResponse($data, 'Data fetch successfully.'); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/API/Admin/SubscriptionPlanAPIController.php000064400000006242152164577510020061 0ustar00subscriptionRepo = $subscriptionRepo; } Public function subscriptionPlan() { $plans = Plan::with(['currency', 'planFeature'])->whereStatus(Plan::IS_ACTIVE)->get(); $data = []; foreach($plans as $plan){ $data[] = [ 'id' => $plan->id, 'name' => $plan->name, 'currency' => $plan->currency->currency_code, 'no_of_vcards' => $plan->no_of_vcards, 'trial_days' => $plan->trial_days, 'frequency' => $plan->frequency, 'price' => $plan->price, 'features' => getPlanFeature($plan), 'current_active_subscription' => (!empty(getCurrentSubscription()) && $plan->id == getCurrentSubscription()->plan_id && !getCurrentSubscription()->isExpired()), ]; } return $this->sendResponse($data, 'Subscription data retrieved successfully.'); } public function paymentStatus() { $tenantId = getLogInTenantId(); $plan = Subscription::whereTenantId($tenantId)->latest()->first(); $data = ($plan->status == Subscription::PENDING) ? 'Pending' : 'Approved'; return $this->sendResponse($data, 'Subscription data retrieved successfully.'); } public function buyPlan(Plan $plan) { $existingSubscription = Subscription::where('tenant_id', getLogInTenantId()) ->where('status', Subscription::PENDING) ->first(); if ($existingSubscription) { return $this->sendError('There is already a pending subscription request.'); } if ($plan->frequency == Plan::MONTHLY) { $newPlanDays = 30; } else { if ($plan->frequency == Plan::YEARLY) { $newPlanDays = 365; } else { $newPlanDays = 36500; } } $startsAt = Carbon::now(); $input = [ 'tenant_id' => getLogInTenantId(), 'plan_id' => $plan->id, 'plan_amount' => $plan->price, 'payable_amount' => $plan->price, 'plan_frequency' => $plan->frequency, 'starts_at' => Carbon::now(), 'ends_at' => $startsAt->copy()->addDays($newPlanDays), 'status' => Subscription::PENDING, 'no_of_vcards' => $plan->no_of_vcards, 'payment_type' => 'Cash', ]; $subscription = Subscription::create($input); return $this->sendSuccess('Subscription Plan purchase Successfully.'); } } Http/Controllers/API/Admin/SettingAPIController.php000064400000004104152164577510016172 0ustar00userSettingRepository = $userSettingRepository; } public function editSettings() { $setting = UserSetting::where('user_id', getLogInUserId())->pluck('value', 'key')->toArray(); $language = Language::where('iso_code', getCurrentLanguageName())->value('name'); $data[] = [ 'language' => $language, 'time_format' => $setting['time_format'], ]; return $this->sendResponse($data, 'Setting data retrieved successfully.'); } public function updateSettings(UpdateUserSettingRequest $request) { $input = $request->all(); $id = Auth::id(); $setting = UserSetting::where('user_id', getLogInUserId())->where('key', 'time_format')->first(); $userVcards = Vcard::where('tenant_id', getLogInTenantId())->pluck('id')->toArray(); $bookedAppointment = ScheduleAppointment::whereIn('vcard_id', $userVcards)->where('status', ScheduleAppointment::PENDING)->count(); $timeFormat = $setting->value == UserSetting::HOUR_24 ? UserSetting::HOUR_24 : UserSetting::HOUR_12; $requestTimeFormat = isset($request->time_format) ? $request->time_format : $timeFormat; $this->userSettingRepository->updateAPI($input, $id); return $this->sendSuccess("Setting updated successfully"); } } Http/Controllers/API/Admin/error_log000064400000013742152164577510013373 0ustar00[17-Jun-2026 09:30:26 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/VcardAPIController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/VcardAPIController.php on line 15 [17-Jun-2026 12:11:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/EnquiryAPIController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/EnquiryAPIController.php on line 11 [17-Jun-2026 15:46:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php on line 17 [17-Jun-2026 18:07:54 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php on line 13 [18-Jun-2026 02:42:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php on line 12 [18-Jun-2026 14:20:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SubscriptionPlanAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SubscriptionPlanAPIController.php on line 18 [18-Jun-2026 14:20:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/GroupAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/GroupAPIController.php on line 10 [19-Jun-2026 07:34:25 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SettingAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SettingAPIController.php on line 18 [19-Jun-2026 23:54:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/EnquiryAPIController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/EnquiryAPIController.php on line 11 [19-Jun-2026 23:54:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php on line 17 [19-Jun-2026 23:55:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/VcardAPIController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/VcardAPIController.php on line 15 [20-Jun-2026 06:55:16 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php on line 13 [20-Jun-2026 21:45:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php on line 12 [16-Jul-2026 23:01:32 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SubscriptionPlanAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SubscriptionPlanAPIController.php on line 18 [16-Jul-2026 23:27:00 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/AppointmentAPIController.php on line 12 [17-Jul-2026 13:24:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/BusinessAPIController.php on line 13 [17-Jul-2026 14:52:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/DashboardAPIController.php on line 17 [17-Jul-2026 18:58:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SettingAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/Admin/SettingAPIController.php on line 18 Http/Controllers/API/Admin/BusinessAPIController.php000064400000005610152164577510016353 0ustar00url_alias; $urlAlias = null; $parsedUrl = parse_url($url); if (isset($parsedUrl['path'])) { $pathParts = explode('/', $parsedUrl['path']); $urlAlias = end($pathParts); } $group = Group::where('tenant_id', getLogInTenantId())->first(); if (!$group) { return $this->sendError('Not group found & Add group'); } if (isset($urlAlias)) { $vcard = Vcard::where('url_alias', $urlAlias)->first(); if ($vcard) { BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $vcard->id, 'url' => route('vcard.show', ['alias' => $vcard->url_alias]), 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } } BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $request->id, 'url' => $url, 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } public function businessCardData(Request $request) { $filter = $request->all(); $tenantId = getLogInTenantId(); $businessCards = BusinessCards::with(['vcard', 'groups']) ->where('tenant_id', $tenantId)->when(!empty($request->filter), function ($query) use ($request) { $query->whereIn('group_id', $request->filter); })->get(); $data = []; foreach ($businessCards as $businessCard) { $data[] = [ 'id' => $businessCard->id, 'vcard_id' => $businessCard->vcard_id, 'url' => $businessCard->url, 'name' => $businessCard->vcard ? $businessCard->vcard->name : null, 'occupation' => $businessCard->vcard ? $businessCard->vcard->occupation : null, 'phone' => $businessCard->vcard ? $businessCard->vcard->phone : null, 'created_at' => $businessCard->vcard ? $businessCard->vcard->created_at : null, 'group_name' => $businessCard->groups->name, 'vcard_image' => !empty($businessCard->vcard->template) ? $businessCard->vcard->template->template_url : null, ]; } return $this->sendResponse($data, 'Business Data Retrieved Successfully.'); } } Http/Controllers/API/AuthAPIController.php000064400000013342152164577510014432 0ustar00userRepo = $userRepository; } public function login(Request $request): JsonResponse { $email = $request->get('email'); $password = $request->get('password'); if (empty($email) or empty($password)) { return $this->sendError(__('Username and password required.'), 422); } $user = User::whereRaw('lower(email) = ?', [$email])->first(); if (empty($user)) { return $this->sendError(__('Invalid username or password.'), 422); } if (!Hash::check($password, $user->password)) { return $this->sendError(__('Invalid username or password.'), 422); } if (!$user->email_verified_at) { return $this->sendError(__('Email not verified. Please verify your email before logging in.'), 422); } $token = $user->createToken('token')->plainTextToken; $user->last_name = $user->last_name ?? ''; if ($user->hasRole(Role::ROLE_SUPER_ADMIN)) { $data = [ 'token' => $token, 'user_id' => $user->id, 'role' => 'Super Admin', ]; } elseif ($user->hasRole(Role::ROLE_ADMIN)) { $data = [ 'token' => $token, 'user_id' => $user->id, 'role' => 'Admin', ]; } elseif ($user->hasRole(Role::ROLE_USER)){ $data = [ 'token' => $token, 'user_id' => $user->id, 'role' => 'User', ]; } else { return $this->sendError(__('Invalid username or password.'), 422); } return $this->sendResponse($data, __('Logged in successfully.')); } public function logout(): JsonResponse { auth()->user()->tokens()->where('id', Auth::user()->currentAccessToken()->id)->delete(); return $this->sendSuccess(__('Logout successfully.')); } public function sendPasswordResetLinkEmail(Request $request): JsonResponse { $request->validate(['email' => 'required|email', 'url_domain' => 'required']); $data['user'] = User::whereEmail($request->email)->first(); if (! $data['user']) { return $this->sendError(__('We can\'t find user with this email address.')); } $data['token'] = encrypt($data['user']->email.' '.$data['user']->id); $data['url'] = $request->url_domain.'//nfcdemo.com/createNewPassword?token='.$data['token'].'&email='.$request->email.'&apn=com.example.infyvcards_flutter'; Mail::to($data['user']->email) ->send(new ForgetPasswordMail('emails.forget_password', 'Reset Password Notification', $data)); $user = DB::table('password_reset_tokens')->where('email', $request->email)->first(); if ($user) { DB::table('password_reset_tokens')->where('email', $user->email)->update([ 'email' => $request->email, 'token' => $data['token'], 'created_at' => Carbon::now(), ]); } else { DB::table('password_reset_tokens')->insert([ 'email' => $request->email, 'token' => $data['token'], 'created_at' => Carbon::now(), ]); } return $this->sendSuccess(__('We have e-mailed your password reset link!')); } public function resetPassword(Request $request) { $passwordToken = DB::table('password_reset_tokens')->where('token', $request->token)->first(); if (empty($passwordToken)) { return $this->sendError('Invalid or expired password reset token.'); } $user = User::where('email', $passwordToken->email)->first(); $user->update([ 'password' => Hash::make($request->password), 'remember_token' => Str::random(60), ]); DB::table('password_reset_tokens')->where('token', $request->token)->delete(); return $this->sendSuccess('Password updated successfully.'); } public function changePassword(Request $request): JsonResponse { $user = User::where('email', $request->email)->first(); if (!$user) { return $this->sendError(__('Email not found.')); } if ($request->has('old_password') && !Hash::check($request->old_password, $user->password)) { return $this->sendError(__('Please enter correct old password')); } $user->password = Hash::make($request->password); $user->save(); return $this->sendSuccess(__('Password updated successfully')); } public function userDelete(User $user) { $tenant_id = getLogInTenantId(); $userData = User::where('tenant_id', $tenant_id)->where('id', $user->id)->first(); if ($userData && !$userData->hasRole(Role::ROLE_SUPER_ADMIN)) { $result = $this->userRepo->userDataDelete($userData); if ($result) { return $this->sendSuccess(__('User deleted successfully')); } } return $this->sendError('Error deleting user.'); } } Http/Controllers/API/error_log000064400000003644152164577510012343 0ustar00[17-Jun-2026 01:40:30 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php on line 23 [17-Jun-2026 01:40:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php on line 19 [19-Jun-2026 18:40:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php on line 23 [19-Jun-2026 18:40:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php on line 19 [16-Jul-2026 22:47:26 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/RegistrationAPIController.php on line 23 [16-Jul-2026 23:27:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/AuthAPIController.php on line 19 Http/Controllers/API/SuperAdmin/GroupsAPIController.php000064400000002616152164577510017061 0ustar00 $request->name, 'tenant_id' => getLogInTenantId(), ]); return $this->sendSuccess('Group created successfully.'); } public function groupData() { $groupsData = Group::all(); $data = []; foreach ($groupsData as $groupData) { $data[] = [ 'id' => $groupData->id, 'name' => $groupData->name, 'tenant_id' => $groupData->tenant_id, 'created_at' => $groupData->created_at, ]; } return $this->sendResponse($data, 'Groups data retrieved successfully.'); } public function deleteGroup($groupId) { $tenantId = getLogInTenantId(); $userVcard = Group::where('id', $groupId) ->where('tenant_id', $tenantId) ->first(); if (!$userVcard) { return $this->sendError('User Groups not found'); } $userVcard->delete(); return $this->sendSuccess('User Groups deleted successfully.'); } } Http/Controllers/API/SuperAdmin/VcardsAPIController.php000064400000004270152164577510017022 0ustar00vcardRepository = $vcardRepository; } public function vcardsData() { $vcards = Vcard::all(); if ($vcards->isEmpty()) { return $this->sendError('No Vcards found', 404); } $data = []; foreach ($vcards as $vcard) { $data[] = [ 'id' => $vcard->id, 'name' => $vcard->name, 'url_alias' => route('vcard.show', ['alias' => $vcard->url_alias]), 'occupation' => $vcard->occupation, 'image' => !empty($vcard->template) ? $vcard->template->template_url : asset('assets/images/default_cover_image.jpg'), ]; } return $this->sendResponse($data, 'Vcards Data Retrieve Successfully.'); } public function vcard($vcard) { $vcard = Vcard::find($vcard); if (empty($vcard)) { return $this->sendError('Vcard not found', 404); } $data[] = [ 'id' => $vcard->id, 'name' => $vcard->name, 'occupation' => $vcard->occupation, 'image' => !empty($vcard->template) ? $vcard->template->template_url : asset('assets/images/default_cover_image.jpg'), 'created_at' => $vcard->created_at, ]; return $this->sendResponse($data, 'Vcards Data Retrieve Successfully.'); } public function qrcodeVcard($vcard) { $vcard = Vcard::where('id', $vcard)->first(); $data[] = [ 'url' => route('vcard.show', ['alias' => $vcard->url_alias]), ]; return $this->sendResponse($data, "Vcard Qr Code Retrieve Successfully."); } } Http/Controllers/API/SuperAdmin/ProfileAPIController.php000064400000004633152164577510017203 0ustar00userRepository = $userRepository; } public function editProfile() { $user = Auth::user(); $settings = Setting::all(); $manualPaymentGuide = $settings->where('key', 'manual_payment_guide')->first(); $language = Language::where('iso_code', getCurrentLanguageName())->value('name'); $data = [ 'profile_image' => $user->profile_image, 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'region_code' => $user->region_code, 'contact' => $user->contact, 'language' => $language, 'manual_payment_guide' => $manualPaymentGuide ? $manualPaymentGuide->value : null, ]; return $this->sendResponse([$data], 'Profile Data Retrieved Successfully.'); } public function updateProfile(Request $request) { $this->userRepository->updateProfileAPI($request->all()); $input = $request->all(); $input = Arr::except($input, ['_token']); $input['manual_payment_guide'] = $input['manual_payment_guide'] ?? null; foreach ($input as $key => $value) { $manualPaymentGuide = Setting::where('key', $key)->first(); if ($manualPaymentGuide) { $manualPaymentGuide->update(['value' => $value]); } } return $this->sendSuccess('Profile updated Successfully.'); } public function updateLanguage(Request $request) { $input = $request->all(); $user = Auth::user(); if ($user !== null) { $user->update($input); } return $this->sendSuccess('Language update successfully.'); } } Http/Controllers/API/SuperAdmin/DashboardAPIController.php000064400000003507152164577510017471 0ustar00dashboardRepository = $dashboardRepo; } public function index() { $data['activeUsersCount'] = User::whereHas('roles', function ($q) { $q->where('name', '!=', 'super_admin'); })->where('is_active', 1)->count(); $data['deActiveUsersCount'] = User::whereHas('roles', function ($q) { $q->where('name', '!=', 'super_admin'); })->where('is_active', 0)->count(); if (Auth()->user()->hasRole(Role::ROLE_SUPER_ADMIN)) { $data['activeVcard'] = Vcard::whereStatus(1)->count(); $data['deActiveVcard'] = Vcard::whereStatus(0)->count(); return $this->sendResponse($data, 'Super Admin Dashboard retrieve Successfully'); } $data['activeVcard'] = Vcard::whereTenantId(auth()->user()->tenant_id)->get(); $data['deActiveVcard'] = Vcard::whereTenantId(auth()->user()->tenant_id)->whereStatus(0)->count(); return $this->sendResponse($data, 'Super Admin Dashboard retrieve Successfully'); } public function incomeChartData() { $input = [ 'start_date' => Carbon::now()->subDays(7)->format("Y-m-d H:m:s"), 'end_date' => Carbon::now()->format("Y-m-d H:m:s"), ]; $data = $this->dashboardRepository->incomeChartData($input); return $this->sendResponse($data, 'Income chart data fetch successfully.'); } } Http/Controllers/API/SuperAdmin/error_log000064400000012114152164577510014402 0ustar00[17-Jun-2026 09:30:31 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php on line 10 [17-Jun-2026 10:54:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php on line 16 [17-Jun-2026 12:11:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php on line 12 [17-Jun-2026 12:11:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php on line 12 [18-Jun-2026 02:42:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php on line 18 [19-Jun-2026 14:56:00 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php on line 12 [19-Jun-2026 14:56:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php on line 16 [19-Jun-2026 16:14:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php on line 12 [19-Jun-2026 23:55:09 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php on line 10 [20-Jun-2026 23:21:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php on line 18 [17-Jul-2026 18:01:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/DashboardAPIController.php on line 12 [17-Jul-2026 18:01:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/BusinessAPIController.php on line 12 [17-Jul-2026 18:02:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/VcardsAPIController.php on line 16 [17-Jul-2026 18:03:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/ProfileAPIController.php on line 18 [17-Jul-2026 18:04:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/API/SuperAdmin/GroupsAPIController.php on line 10 Http/Controllers/API/SuperAdmin/BusinessAPIController.php000064400000005142152164577510017372 0ustar00url_alias; $urlAlias = null; $parsedUrl = parse_url($url); if (isset($parsedUrl['path'])) { $pathParts = explode('/', $parsedUrl['path']); $urlAlias = end($pathParts); } if (isset($urlAlias)) { $vcard = Vcard::where('url_alias', $urlAlias)->first(); if ($vcard) { BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $vcard->id, 'url' => route('vcard.show', ['alias' => $vcard->url_alias]), 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } } BusinessCards::create([ 'tenant_id' => getLogInTenantId(), 'vcard_id' => $request->id, 'url' => $url, 'group_id' => $request->group_id, ]); return $this->sendSuccess('Business card created successfully.'); } public function businessCardData(Request $request) { $filter = $request->all(); $businessCards = BusinessCards::with(['vcard','groups']) ->when(!empty($filter) ,function($q) use ($filter) { $q->whereIn('group_id', $filter['filter']); }) ->get(); $data = []; foreach ($businessCards as $businessCard) { $data[] = [ 'id' => $businessCard->id, 'vcard_id' => $businessCard->vcard_id, 'url' => $businessCard->url, 'name' => $businessCard->vcard ? $businessCard->vcard->name : null, 'occupation' => $businessCard->vcard ? $businessCard->vcard->occupation : null, 'phone' => $businessCard->vcard ? $businessCard->vcard->phone : null, 'created_at' => $businessCard->vcard ? $businessCard->vcard->created_at : null, 'group_name' => $businessCard->groups->name, 'vcard_image' => !empty($businessCard->vcard->template) ? $businessCard->vcard->template->template_url : null, ]; } return $this->sendResponse($data, 'Business Data Retrieve Successfully.'); } } Http/Controllers/LanguageController.php000064400000015620152164577510014312 0ustar00languageRepository = $languageRepo; } /** * Display a listing of the resource. * * @return Factory|View */ public function index(): View { return view('sadmin.languages.index'); } public function language(): View { return view('sadmin.languages.default-language'); } public function updateStatus(Language $language): JsonResponse { if ($language->iso_code == getSuperAdminSettingValue('default_language')) { return $this->sendError(__('messages.flash.language_status_default')); } else { $language->update([ 'status' => !$language->status, ]); return $this->sendSuccess(__('messages.flash.language_status')); } } /** * Store a newly created resource in storage. */ public function store(CreateLanguageRequest $request): JsonResponse { $input = $request->all(); $allLanguagesArr = []; $languages = File::directories(base_path('lang')); foreach ($languages as $language) { $allLanguagesArr[] = substr($language, -2); } if (in_array($input['iso_code'], $allLanguagesArr)) { throw new UnprocessableEntityHttpException($input['iso_code'].' '.__('messages.placeholder.lang_already_exists')); } $language = $this->languageRepository->create($input); if (isset($input['flag']) && ! empty($input['flag'])) { $language->addMedia($input['flag'])->toMediaCollection(Language::LANGUAGE_PATH, config('app.media_disc')); } $translation = $this->languageRepository->translationFileCreate($language); Artisan::call('lang:js'); return $this->sendResponse($language, __('messages.placeholder.language_save')); } /** * Show the form for editing the specified resource. */ public function edit(Language $language): JsonResponse { return $this->sendResponse($language, 'Language retrieved successfully.'); } /** * Show the form for editing the specified resource. */ public function show(Language $language): JsonResponse { return $this->sendResponse($language, 'Language retrieved successfully.'); } /** * @param Language $language */ public function update(UpdateLanguageRequest $request, $id): JsonResponse { $language = Language::whereId($id)->firstOrFail(); $input = $request->all(); $this->languageRepository->updateLanguage($input, $language); return $this->sendSuccess(__('messages.flash.language_update')); } /** * Remove the specified resource from storage. * * * @throws \Exception */ public function destroy(Language $language): JsonResponse { if ($language->is_default == true) { return $this->sendError('Default Language can\'t be deleted.'); } $usesLang = User::whereIsActive(1)->pluck('language')->toArray(); if (in_array($language->iso_code, $usesLang)) { return $this->sendError('Uses Language can\'t be deleted.'); } if ($language->iso_code == getSuperAdminSettingValue('default_language')) { return $this->sendError('Default Setting Language can\'t be deleted.'); } $path = base_path('lang/').$language->iso_code; if (\File::exists($path)) { \File::deleteDirectory($path); $language->delete(); } else { return $this->sendError('Language not deleted.'); } Artisan::call('lang:js'); return $this->sendSuccess('Language deleted successfully.'); } /** * @return Application|Factory|\Illuminate\Contracts\View\View|RedirectResponse */ public function showTranslation(Language $language, Request $request) { $selectedLang = $request->get('name', $language->iso_code); $selectedFile = $request->get('file', 'messages.php'); $langExists = $this->languageRepository->checkLanguageExistOrNot($selectedLang); if (! $langExists) { return redirect()->back()->withErrors($selectedLang.' language not found.'); } $fileExists = $this->languageRepository->checkFileExistOrNot($selectedLang, $selectedFile); if (! $fileExists) { return redirect()->back()->withErrors($selectedFile.' file not found.'); } $oldLang = app()->getLocale(); $data = $this->languageRepository->getSubDirectoryFiles($selectedLang, $selectedFile); $data['id'] = $language->id; app()->setLocale($oldLang); return view('sadmin.languages.translation-manager.index', compact('selectedLang', 'selectedFile'))->with($data); } public function updateTranslation(Language $language, Request $request): RedirectResponse { $lName = $language->iso_code; $fileName = $request->get('file_name'); $fileExists = $this->languageRepository->checkFileExistOrNot($lName, $fileName); if (! $fileExists) { return redirect()->back()->withErrors('File not found.'); } if (! empty($lName)) { $result = $request->except(['_token', 'translate_language', 'file_name']); File::put(base_path('lang/').$lName.'/'.$fileName, ''); } Artisan::call('lang:js'); Flash::success(__('messages.flash.language_update')); return redirect()->route('languages.translation', $language->id); } public function getAllLanguage() { $getAllLanguage = Language::where('status', 1)->get(); $currentLanguage = Language::where([ 'status' => 1, 'iso_code' => getCurrentLanguageName(), ])->value('iso_code'); if (empty($currentLanguage)) { $currentLanguage = Language::where('status', 1)->value('iso_code'); } return $this->sendResponse(['getAllLanguage' => $getAllLanguage, 'currentLanguage' => $currentLanguage], 'language retrieve successfully'); } } Http/Controllers/AboutUsController.php000064400000003023152164577510014143 0ustar00aboutUsRepository = $aboutUsRepository; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { $language = (getLogInUser()->language) ? getLogInUser()->language: 'en'; $aboutUs = AboutUs::where('language',$language)->with('media')->get(); if(!$aboutUs->first()){ $aboutUs =json_decode(json_encode( [ ['id'=>1, 'title'=>'', 'description'=>''], ['id'=>2, 'title'=>'', 'description'=>''], ['id'=>3, 'title'=>'', 'description'=>''] ] ), FALSE); } return view('sadmin.aboutUs.index', compact('aboutUs')); } public function store(CreateAboutUsRequest $request): RedirectResponse { $this->aboutUsRepository->store($request->all()); Flash::success(__('messages.flash.about_us_create')); return redirect(route('aboutUs.index')); } }Http/Controllers/Webhooks/BrasilWebhookController.php000066400000006550152164577510017107 0ustar00header('asaas-access-token') ?? $request->header('x-asaas-token'); $expectedToken = config('services.asaas.webhook_token'); if ($expectedToken && $token !== $expectedToken) { Log::warning('[BrasilWebhook] Invalid token: ' . $token); return response()->json(['error' => 'Unauthorized'], 401); } $payload = $request->all(); $event = $payload['event'] ?? ''; Log::info('[BrasilWebhook] Event: ' . $event, [ 'payment_id' => $payload['payment']['id'] ?? null, 'external_ref' => $payload['payment']['externalReference'] ?? null, ]); return match ($event) { 'PAYMENT_CONFIRMED', 'PAYMENT_RECEIVED' => $this->handlePaymentConfirmed($payload), 'PAYMENT_OVERDUE' => $this->handlePaymentOverdue($payload), 'PAYMENT_DELETED', 'PAYMENT_REFUNDED' => $this->handlePaymentRefunded($payload), default => response()->json(['status' => 'event_ignored']), }; } private function handlePaymentConfirmed(array $payload): JsonResponse { $externalRef = $payload['payment']['externalReference'] ?? null; if (!$externalRef || !str_starts_with($externalRef, 'vcard_')) { Log::warning('[BrasilWebhook] Unknown externalReference: ' . $externalRef); return response()->json(['status' => 'skipped']); } $vcardId = (int) str_replace('vcard_', '', $externalRef); $vcard = Vcard::withTrashed()->find($vcardId); if (!$vcard) { Log::error('[BrasilWebhook] VCard not found: #' . $vcardId); return response()->json(['error' => 'vcard_not_found'], 404); } // Activate the card $vcard->update([ 'status' => 'active', 'payment_deadline' => null, 'nfc_status' => $vcard->nfc_status === 'none' ? 'none' : 'pending', ]); // Restore if soft-deleted before payment if ($vcard->trashed()) { $vcard->restore(); } Log::info("[BrasilWebhook] VCard#{$vcardId} ACTIVATED via PIX/Asaas"); return response()->json(['status' => 'activated', 'vcard_id' => $vcardId]); } private function handlePaymentOverdue(array $payload): JsonResponse { $externalRef = $payload['payment']['externalReference'] ?? null; Log::warning('[BrasilWebhook] Payment OVERDUE: ' . $externalRef); return response()->json(['status' => 'noted']); } private function handlePaymentRefunded(array $payload): JsonResponse { $externalRef = $payload['payment']['externalReference'] ?? null; Log::info('[BrasilWebhook] Payment REFUNDED: ' . $externalRef); return response()->json(['status' => 'noted']); } } Http/Controllers/Webhooks/MultibancoPagamentoController.php000066400000013646152164577510020311 0ustar00entityKey = config('services.ifthen.entity_key', ''); $this->subEntityKey = config('services.ifthen.sub_entity_key', ''); $this->antiPhishing = config('services.ifthen.anti_phishing', ''); } /** * Generate a Multibanco reference for a VCard payment * POST /pagamento/multibanco/{vcard} */ public function generate(Request $request, Vcard $vcard): JsonResponse { if ($vcard->user_id !== auth()->id()) { return response()->json(['error' => 'Unauthorized'], 403); } $region = config('app.region', 'PT'); $amount = $region === 'PT' ? 7.00 : 40.00; // Setup 5 + 1 month 2 $orderId = 'vcard_' . $vcard->id . '_' . time(); // Check if already has pending reference $existing = MultibancoReference::where('vcard_id', $vcard->id) ->where('status', 'pending') ->first(); if ($existing) { return response()->json([ 'status' => 'existing', 'entity' => $existing->entity, 'reference' => $existing->reference, 'amount' => $existing->amount, 'expires_at'=> $existing->expires_at, ]); } // Generate reference via IfthenPay API try { $response = Http::post('https://ifthenpay.com/api/multibanco/reference/init', [ 'mbKey' => $this->entityKey, 'orderId' => $orderId, 'amount' => number_format($amount, 2, '.', ''), 'expiryDays'=> 3, ]); if (!$response->ok()) { Log::error('[Multibanco] IfthenPay API error: ' . $response->status()); return response()->json(['error' => 'Gateway error'], 502); } $data = $response->json(); // Store reference in database $ref = MultibancoReference::create([ 'vcard_id' => $vcard->id, 'order_id' => $orderId, 'entity' => $data['Entity'] ?? '11249', 'reference' => $data['Reference'] ?? '', 'amount' => $amount, 'status' => 'pending', 'expires_at' => now()->addDays(3), ]); Log::info("[Multibanco] Reference generated: {$ref->entity}/{$ref->reference} for vcard#{$vcard->id}"); return response()->json([ 'status' => 'created', 'entity' => $ref->entity, 'reference' => $ref->reference, 'amount' => $ref->amount, 'expires_at'=> $ref->expires_at->format('d/m/Y'), 'message' => 'Utilize o ATM ou homebanking para efectuar o pagamento', ]); } catch (\Exception $e) { Log::error('[Multibanco] Exception: ' . $e->getMessage()); return response()->json(['error' => 'Internal error'], 500); } } /** * IfthenPay Webhook payment confirmed * POST /webhooks/portugal */ public function webhook(Request $request): JsonResponse { // Anti-phishing key validation $receivedKey = $request->input('chave') ?? $request->input('anti_phishing_key') ?? $request->header('x-ifthen-key'); if ($this->antiPhishing && $receivedKey !== $this->antiPhishing) { Log::warning('[PortugalWebhook] Invalid anti-phishing key'); return response()->json(['error' => 'Unauthorized'], 401); } $entity = $request->input('entidade') ?? $request->input('entity'); $reference = $request->input('referencia') ?? $request->input('reference'); $amount = (float)($request->input('valor') ?? $request->input('amount') ?? 0); Log::info("[PortugalWebhook] Payment received: {$entity}/{$reference} amount={$amount}"); $ref = MultibancoReference::where('reference', $reference) ->where('entity', $entity) ->where('status', 'pending') ->first(); if (!$ref) { Log::warning("[PortugalWebhook] Reference not found: {$entity}/{$reference}"); return response()->json(['status' => 'reference_not_found']); } // Validate amount (tolerance 1 cent) if (abs($amount - $ref->amount) > 0.01) { Log::warning("[PortugalWebhook] Amount mismatch: expected {$ref->amount}, got {$amount}"); } // Mark reference as paid $ref->update(['status' => 'paid', 'paid_at' => now()]); // Activate VCard $vcard = Vcard::withTrashed()->find($ref->vcard_id); if ($vcard) { $vcard->update([ 'status' => 'active', 'payment_deadline' => null, 'nfc_status' => 'pending', 'nfc_requested_at' => now(), ]); if ($vcard->trashed()) { $vcard->restore(); } Log::info("[PortugalWebhook] VCard#{$vcard->id} ACTIVATED via Multibanco"); } return response()->json(['status' => 'ok', 'vcard_id' => $ref->vcard_id]); } } Http/Controllers/Webhooks/error_log000064400000002514152164577510013506 0ustar00[17-Jun-2026 09:06:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/BrasilWebhookController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/BrasilWebhookController.php on line 17 [18-Jun-2026 13:29:55 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/MultibancoPagamentoController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/MultibancoPagamentoController.php on line 22 [16-Jul-2026 14:57:34 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/MultibancoPagamentoController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/MultibancoPagamentoController.php on line 22 [16-Jul-2026 14:58:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/BrasilWebhookController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Webhooks/BrasilWebhookController.php on line 17 Http/Controllers/AsaasController.php000066400000006137152164577510013624 0ustar00apiKey = env('ASAAS_API_KEY'); $this->baseUrl = env('ASAAS_BASE_URL', 'https://api.asaas.com/v3'); } public function showCheckout($planId) { $plan = Plan::with('currency')->findOrFail($planId); abort_unless($plan->currency->currency_code === 'BRL', 403); return view('asaas.checkout', compact('plan')); } public function processPayment(Request $request, $planId) { $request->validate([ 'cpf_cnpj' => ['required','string','min:11','max:18'], 'name' => ['required','string'], 'email' => ['required','email'], ]); $plan = Plan::with('currency')->findOrFail($planId); $cpf = preg_replace('/[^0-9]/', '', $request->cpf_cnpj); $customer = $this->createOrFindCustomer($cpf, $request->name, $request->email); if (!$customer || isset($customer['errors'])) { return back()->withErrors(['asaas' => 'Erro cliente: '.json_encode($customer['errors'] ?? [])]); } $userId = Auth::id(); $charge = $this->createPixCharge($customer['id'], $plan->price, 'Plano '.$plan->name, $planId, $userId); if (!$charge || isset($charge['errors'])) { return back()->withErrors(['asaas' => 'Erro cobranca: '.json_encode($charge['errors'] ?? [])]); } $pixData = $this->getPixQrCode($charge['id']); return view('asaas.pix', compact('plan', 'charge', 'pixData')); } private function createOrFindCustomer($cpfCnpj, $name, $email) { $search = Http::withHeaders(['access_token' => $this->apiKey]) ->get($this->baseUrl.'/customers', ['cpfCnpj' => $cpfCnpj]); if ($search->ok() && $search->json('totalCount') > 0) { return $search->json('data')[0]; } return Http::withHeaders(['access_token' => $this->apiKey]) ->post($this->baseUrl.'/customers', ['name' => $name, 'email' => $email, 'cpfCnpj' => $cpfCnpj]) ->json(); } private function createPixCharge($customerId, $value, $description, $planId, $userId) { return Http::withHeaders(['access_token' => $this->apiKey]) ->post($this->baseUrl.'/payments', [ 'customer' => $customerId, 'billingType' => 'PIX', 'value' => $value, 'dueDate' => date('Y-m-d', strtotime('+1 day')), 'description' => $description, 'externalReference' => 'plan_'.$planId.'_user_'.$userId, ])->json(); } private function getPixQrCode($chargeId) { return Http::withHeaders(['access_token' => $this->apiKey]) ->get($this->baseUrl.'/payments/'.$chargeId.'/pixQrCode') ->json(); } } Http/Controllers/EnquiryController.php000064400000006042152164577510014221 0ustar00all(); $input['vcard_id'] = $vcard->id; $input['vcard_name'] = $vcard->name; $enquiry = Enquiry::create($input); if (isset($input['attachment']) && !empty($input['attachment'])) { $enquiry->addMedia($input['attachment'])->toMediaCollection(Enquiry::ATTACHMENT, config('app.media_disc')); } $email = empty($vcard->email) ? $vcard->user->email : $vcard->email; if (!empty($email)) { Mail::to($email)->send(new ContactUsMail($input, $email)); } setLocalLang(getLocalLanguage()); return $this->sendSuccess(__('messages.placeholder.enquiry_sent')); } public function show($id): JsonResponse { $enquiry = Enquiry::with('vcard', 'media')->where('id', '=', $id)->first(); return $this->sendResponse($enquiry, 'Testimonial successfully retrieved.'); } /** * @return Application|Factory|View * * @throws Exception */ public function enquiryList(Request $request): \Illuminate\View\View { return view('enquiry.list'); } public function destroy(Enquiry $enquiry): JsonResponse { $enquiry->delete(); return $this->sendSuccess('Enquiry deleted successfully.'); } public function inquiriesAttachmentDownload($id) { try { $enquiry = Enquiry::findOrFail($id); $documentMedia = $enquiry->media[0]; $documentPath = $documentMedia->getPath(); if (config('app.media_disc') === 'public') { $documentPath = Str::after($documentMedia->getUrl(), '/uploads'); } $file = Storage::disk(config('app.media_disc'))->get($documentPath); $headers = [ 'Content-Type' => $documentMedia->mime_type, 'Content-Description' => 'File Transfer', 'Content-Disposition' => "attachment; filename={$documentMedia->file_name}", 'filename' => $documentMedia->file_name, ]; return response($file, 200, $headers); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/PaypalPayoutController.php000064400000004323152164577510015215 0ustar00get('withdrawalId')); $referenceId = $withdrawal->id; $email = $withdrawal->email; $amount = $withdrawal->amount; $currency = getSuperAdminSettingValue('default_currency'); $clientId = getSelectedPaymentGateway('paypal_client_id'); $clientSecret = getSelectedPaymentGateway('paypal_secret'); $mode = config('paypal.mode'); if ($mode == 'live') { $environment = new ProductionEnvironment($clientId, $clientSecret); } else { $environment = new SandboxEnvironment($clientId, $clientSecret); } if ($currency != null && ! in_array(strtoupper($currency), getPayPalSupportedCurrencies())) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported')); } $client = new PayPalHttpClient($environment); $request = new PayoutsPostRequest(); $note = 'Your '.currencyFormat($amount, 2).' Payout'; $body = json_decode( '{ "sender_batch_header": { "email_subject": "SDK payouts test txn" }, "items": [ { "recipient_type": "EMAIL", "receiver": '.json_encode($email).', "note": "'.$note.'", "sender_item_id": '.json_encode($referenceId).', "amount": { "currency": '.json_encode($currency).', "value": '.json_encode($amount).' } }] }', true); $request->body = $body; $response = $client->execute($request); return $this->sendResponse($response, __('messages.placeholder.withdrawal_request_send')); } } Http/Controllers/BannerController.php000064400000001427152164577510013774 0ustar00bannerRepo = $bannerRepo; } public function store(CreateBannerRequest $request) { $input = $request->all(); $this->bannerRepo->store($input ); return redirect()->back()->with('success', ' '.__('messages.flash.vcard_update')); } } Http/Controllers/NfcOrdersController.php000064400000023262152164577510014455 0ustar00nfcOrderRepository = $nfcOrderRepository; } public function index() { return view('nfc.index'); } public function create() { $vcards = Vcard::whereTenantId(getLogInTenantId())->where('status', Vcard::ACTIVE)->pluck('name', 'id')->toArray(); $nfcCards = Nfc::all(); $paymentTypes = getPaymentGateway(); $currency = getCurrencyIcon(getSuperAdminSettingValue('default_currency')); return view('nfc.order', compact('vcards', 'nfcCards', 'paymentTypes', 'currency')); } public function getVcardData(Request $request) { $input = $request->all(); $vcard = Vcard::with('socialLink')->findOrFail($input['vcardId']); $data = [ 'id' => $vcard['id'], 'first_name' => $vcard['first_name'], 'last_name' => $vcard['last_name'], 'email' => $vcard['email'], 'occupation' => $vcard['occupation'], 'location' => $vcard['location'], 'phone' => $vcard['phone'], 'region_code' => $vcard['region_code'], 'company' => $vcard['company'], ]; return response()->json(['data' => $data, 'success' => true]); } public function store(NfcOrderRequest $request) { try { DB::beginTransaction(); $input = $request->all(); $input['user_id'] = getLogInUserId(); if($input['payment_method'] != NfcOrders::RAZOR_PAY){ $nfcOrder = NfcOrders::create($input); $nfcOrder->addMedia($input['logo'])->toMediaCollection(NfcOrders::LOGO_PATH); $orderId = $nfcOrder->id; $userId = $nfcOrder->user_id; $email = $input['email']; $nfc = NfcOrders::with('nfcCard')->findOrFail($orderId); } $currency = getSuperAdminSettingValue('default_currency'); if (isset($input['payment_method'])) { // PhonePe if ($input['payment_method'] == 6) { if($currency != "INR") { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_phonepe')); } /** @var PhonepeController $phonepe */ $phonepe = App::make(PhonepeController::class); $result = $phonepe->nfcOrder($orderId, $email, $nfc, $currency); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.phonepe_created')); } // Paystack if ($input['payment_method'] == 5) { if (isset($currency) && !in_array(strtoupper($currency), getPayStackSupportedCurrencies())) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_paystack')); } /** @var PaystackController $paystack */ $paystack = App::make(PaystackController::class); $result = $paystack->nfcOrder($orderId, $email, $nfc, $currency); DB::commit(); $targetUrl = $result->getTargetUrl(); return $this->sendResponse(['payment_method' => $input['payment_method'], $targetUrl], __('messages.placeholder.paystack_created')); } // Flutterwave if ($input['payment_method'] == 7) { $supportedCurrency = ['GBP', 'CAD', 'XAF', 'CLP', 'COP', 'EGP', 'EUR', 'GHS', 'GNF', 'KES', 'MWK', 'MAD', 'NGN', 'RWF', 'SLL', 'STD', 'ZAR', 'TZS', 'UGX', 'USD', 'XOF', 'ZMW']; if (isset($currency) && !in_array(strtoupper($currency), $supportedCurrency)) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_flutterwave')); } /** @var FlutterwaveController $paystack */ $flutterwave = App::make(FlutterwaveController::class); $targetUrl = $flutterwave->nfcOrder($orderId, $email, $nfc, $currency); DB::commit(); return $this->sendResponse(['payment_method' => $input['payment_method'], $targetUrl], __('messages.placeholder.flutterwave_created')); } //Stripe if ($input['payment_method'] == NfcOrders::STRIPE) { $repo = App::make(NfcOrderRepository::class); $result = $repo->userCreateSession($orderId, $email, $nfc, $currency); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.stripe_created')); } // Razor Pay if ($input['payment_method'] == NfcOrders::RAZOR_PAY) { $nfc = Nfc::get()->find($input['card_type']); $nfcOrder = NfcOrders::create($input); $nfcOrder->addMedia($input['logo'])->toMediaCollection(NfcOrders::LOGO_PATH); $orderId = $nfcOrder->id; $userId = $nfcOrder->user_id; $email = $input['email']; Session::put('orderid', $orderId); $repo = App::make(NfcOrderRepository::class); $result = $repo->userCreateRazorPaySession($input, $nfc, $currency); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.nfc.razorpay_session_success')); } //PayPal if ($input['payment_method'] == NfcOrders::PAYPAL) { if (isset($currency) && !in_array( strtoupper($currency), getPayPalSupportedCurrencies() )) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported')); } /** @var PaypalController $payPalCont */ $payPalCont = App::make(PaypalController::class); $result = $payPalCont->nfcOrderOnboard($orderId, $email, $nfc, $currency); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.paypal_created')); } //manual if ($input['payment_method'] == NfcOrders::MANUALLY) { NfcOrderTransaction::create([ 'nfc_order_id' => $orderId, 'type' => NfcOrders::MANUALLY, 'transaction_id' => null, 'amount' => $nfc->nfcCard->price * $nfc->quantity, 'user_id' => $userId, 'status' => NfcOrders::PENDING, ]); $vcardName = VCard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); DB::commit(); return redirect(route('user.orders')); } } } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function updatePaymentStatus(NfcOrderTransaction $transaction) { $transaction->update([ 'status' => NfcOrders::SUCCESS, ]); return $this->sendSuccess(__('messages.nfc.payment_status_update_success')); } public function updateOrderStatus(Request $request, NfcOrders $order) { $status = $request['status']; $order->update([ 'order_status' => $status, ]); Mail::to($order['email'])->send(new NfcOrderStatusMail($order,$status)); return $this->sendSuccess(__('messages.nfc.order_status_update_success')); } public function show($nfcOrder) { $nfcCardOrder = NfcOrders::with('nfcTransaction','vcard','nfcCard','nfcPaymentType')->select('*')->findOrFail($nfcOrder); return view('nfc.columns.show', compact('nfcCardOrder')); } public function nfcCardDetails(Request $request): JsonResponse { $nfcCardDetails = Nfc::with('media') // Eager load the 'media' relationship ->whereId($request->id) ->first(); $currency = getCurrencyIcon(getSuperAdminSettingValue('default_currency')); return $this->sendResponse($nfcCardDetails,$currency, 'Nfc Card data successfully retrieved.'); } } Http/Controllers/StripeController.php000064400000026615152164577510014043 0ustar00findOrFail($request->plan_id); setStripeApiKey(); $session = Session::create([ 'payment_method_types' => ['card'], 'customer_email' => getLogInUser()->email, 'line_items' => [ [ 'name' => $plan->name, 'amount' => ! in_array( $plan->currency->currency_code, zeroDecimalCurrencies() ) ? removeCommaFromNumbers($plan->price) * 100 : removeCommaFromNumbers($plan->price), 'currency' => $plan->currency->currency_code, 'quantity' => 1, ], ], 'success_url' => route('stripe.success', $plan->id) . '?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => route('stripe.failed') . '?error=payment_cancelled', ]); $result = [ 'sessionId' => $session['id'], ]; return $this->sendResponse($result, 'Subscription resumed successfully.'); } /** * @return Application|RedirectResponse|Redirector * * @throws Exception */ public function paymentSuccess(Request $request, Plan $plan): View { $sessionId = $request->get('session_id'); if (empty($sessionId)) { throw new UnprocessableEntityHttpException('session_id required'); } try { setStripeApiKey(); $sessionData = Session::retrieve($sessionId); DB::beginTransaction(); Transaction::create([ 'transaction_id' => $sessionData->payment_intent, 'amount' => $sessionData->amount_total / 100, 'type' => Transaction::STRIPE, ]); Subscription::whereTenantId(getLogInTenantId()) ->whereIsActive(true)->update(['is_active' => false]); $expiryDate = setExpiryDate($plan); Subscription::create([ 'plan_id' => $plan->id, 'expiry_at' => $expiryDate, 'is_active' => true, ]); AffiliateUser::whereUserId(getLogInUserId())->withoutGlobalScopes() ->update(['is_verified' => 1]); DB::commit(); Flash::success(__('messages.placeholder.purchased_plan')); return view('sadmin.plans.payment.paymentSuccess'); } catch (ApiErrorException $e) { DB::rollBack(); throw new Exception($e->getMessage(), $e->getCode()); } } public function paymentFailed(Request $request): View { return view('sadmin.plans.payment.paymentcancel'); } /** * @return Application|RedirectResponse|Redirector * * @throws Exception */ public function userPaymentSuccess(Request $request): RedirectResponse { $sessionId = $request->get('session_id'); if (empty($sessionId)) { throw new UnprocessableEntityHttpException('session_id required'); } $vcard = Vcard::with('tenant.user', 'template')->where('id', $request->get('vcard_id'))->first(); $userId = $vcard->tenant->user->id; try { setUserStripeApiKey($userId); $sessionData = Session::retrieve($sessionId); $currencyId = Currency::whereCurrencyCode($sessionData->currency)->first()->id; DB::beginTransaction(); $appointmentTran = AppointmentTransaction::create([ 'vcard_id' => $vcard->id, 'transaction_id' => $sessionData->payment_intent, 'currency_id' => $currencyId, 'amount' => $sessionData->amount_total / 100, 'tenant_id' => $vcard->tenant->id, 'type' => Appointment::STRIPE, 'status' => Transaction::SUCCESS, 'meta' => json_encode($sessionData), ]); $appointmentInput = session()->get('appointment_details'); session()->forget('appointment_details'); $appointmentInput['appointment_tran_id'] = $appointmentTran->id; /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($appointmentInput, $vcardEmail); $url = ($vcard->template->name == 'vcard11') ? $vcard->url_alias . '/contact' : $vcard->url_alias; App::setLocale(FacadesSession::get('languageChange_' . $vcard->url_alias)); DB::commit(); Flash::success('Payment successfully done'); return redirect(route('vcard.show', [$url, __('messages.placeholder.appointment_created')])); } catch (ApiErrorException $e) { DB::rollBack(); throw new Exception($e->getMessage(), $e->getCode()); } } /** * @return Application|RedirectResponse|Redirector */ public function userHandleFailedPayment(Request $request): RedirectResponse { session()->forget('appointment_details'); $vcardId = $request->get('vcard_id'); $vcard = Vcard::findOrFail($vcardId); Flash::error(__('messages.placeholder.payment_cancel')); return redirect(route('vcard.show', $vcard->url_alias)); } public function productBuySuccess(Request $request): RedirectResponse { $sessionId = $request->get('session_id'); if (empty($sessionId)) { throw new UnprocessableEntityHttpException('session_id required'); } $input = session()->get('input'); session()->forget('input'); $product = Product::whereId($input['product_id'])->first(); $userId = $product->vcard->user->id; if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyId = Currency::whereId($product->currency_id)->first()->id; try { setUserStripeApiKey($userId); $sessionData = Session::retrieve($sessionId); DB::beginTransaction(); ProductTransaction::create([ 'product_id' => $input['product_id'], 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'address' => $input['address'], 'currency_id' => $currencyId, 'meta' => json_encode($sessionData), 'type' => $input['payment_method'], 'transaction_id' => $sessionData->payment_intent, 'amount' => $sessionData->amount_total / 100, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $input['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $input['phone'], 'address' => $input['address'], 'payment_type' => __('messages.stripe'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($input['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(FacadesSession::get('languageChange_' . $vcard->url_alias)); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } catch (ApiErrorException $e) { DB::rollBack(); throw new Exception($e->getMessage(), $e->getCode()); } } public function productBuyFailed(): RedirectResponse { $input = session()->get('input'); session()->forget('input'); $product = Product::whereId($input['product_id'])->first(); $vcard = $product->vcard; return redirect(route('showProducts', [$vcard->id, $vcard->url_alias])); } public function nfcPurchaseSuccess(Request $request) { $input = $request->all(); $nfcOrder = NfcOrders::get()->find($input['order_id']); $sessionId = $input['session_id']; setStripeApiKey(); $sessionData = Session::retrieve($sessionId); if (empty($sessionId)) { throw new UnprocessableEntityHttpException('session_id required'); } NfcOrderTransaction::create([ 'nfc_order_id' => $input['order_id'], 'type' => NfcOrders::STRIPE, 'transaction_id' => $sessionData->payment_intent, 'amount' => $sessionData->amount_total / 100, 'user_id' => getLogInUser()->id, 'status' => NfcOrders::SUCCESS, ]); $vcardName = VCard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; App::setLocale(getLogInUser()->language); Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); return redirect(route('user.orders')); } public function nfcPurchaseFailed(Request $request) { $input = $request->all(); $sessionId = $input['session_id']; setStripeApiKey(); $sessionData = Session::retrieve($sessionId); NfcOrderTransaction::create([ 'nfc_order_id' => $input['order_id'], 'type' => NfcOrders::STRIPE, 'amount' => $sessionData->amount_total / 100, 'user_id' => getLogInUser()->id, 'status' => NfcOrders::FAIL, ]); Flash::error(__('messages.placeholder.payment_cancel')); return redirect(route('user.orders')); } } Http/Controllers/DashboardController.php000064400000006146152164577510014461 0ustar00dashboardRepository = $dashboardRepo; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { $activeUsersCount = User::whereHas('roles', function ($q) { $q->where('name', '!=', 'super_admin'); })->where('is_active', 1)->count(); $deActiveUsersCount = User::whereHas('roles', function ($q) { $q->where('name', '!=', 'super_admin'); })->where('is_active', 0)->count(); $enquiry = $this->dashboardRepository->getEnquiryCountAttribute(); $appointment = $this->dashboardRepository->getAppointmentCountAttribute(); if (\Request::is('sadmin/dashboard')) { $activeVcard = Vcard::whereStatus(1)->count(); $deActiveVcard = Vcard::whereStatus(0)->count(); return view('dashboard.index', compact('activeUsersCount', 'deActiveUsersCount', 'activeVcard', 'deActiveVcard')); } $activeVcard = Vcard::whereTenantId(auth()->user()->tenant_id)->whereStatus(1)->count(); $deActiveVcard = Vcard::whereTenantId(auth()->user()->tenant_id)->whereStatus(0)->count(); return view('dashboard.index', compact('enquiry', 'appointment', 'activeVcard', 'deActiveVcard')); } public function getUsersList(Request $request): JsonResponse { $input = $request->all(); $data['users'] = $this->dashboardRepository->usersData($input); return $this->sendResponse($data, 'Users retrieved successfully.'); } public function appointments(): JsonResponse { $vcardIds = Vcard::toBase()->whereTenantId(getLogInTenantId())->pluck('id')->toArray(); $today = Carbon::now()->format('Y-m-d'); $appointments = ScheduleAppointment::with('vcard')->whereIn('vcard_id', $vcardIds)->whereDate('date', $today)->orderBy('created_at', 'DESC') ->paginate(5); return $this->sendResponse($appointments, 'Appointment retrieved successfully.'); } public function planChartData(): JsonResponse { $data = $this->dashboardRepository->planChartData(); return $this->sendResponse($data, 'Plan chart data fetch successfully.'); } public function incomeChartData(Request $request): JsonResponse { $input = $request->all(); $data = $this->dashboardRepository->incomeChartData($input); return $this->sendResponse($data, 'Income chart data fetch successfully.'); } } Http/Controllers/TestimonialController.php000064400000003114152164577510015052 0ustar00testimonialRepo = $testimonialRepo; } public function store(CreateTestimonialRequest $request): JsonResponse { $input = $request->all(); $testimonial = $this->testimonialRepo->store($input); return $this->sendResponse($testimonial, __('messages.flash.create_testimonial')); } public function edit(Testimonial $testimonial): JsonResponse { return $this->sendResponse($testimonial, 'Testimonial successfully retrieved.'); } public function update(UpdateTestimonialRequest $request, Testimonial $testimonial): JsonResponse { $input = $request->all(); $testimonial = $this->testimonialRepo->update($input, $testimonial->id); return $this->sendResponse($testimonial, __('messages.flash.update_testimonial')); } public function destroy(Testimonial $testimonial): JsonResponse { $testimonial->clearMediaCollection(Testimonial::TESTIMONIAL_PATH); $testimonial->delete(); return $this->sendSuccess('Testimonial deleted successfully.'); } } Http/Controllers/UserFlutterwaveController.php000064400000023020152164577510015727 0ustar00 $clientId, 'flutterwave.secretKey' => $clientSecret, ]); $reference = FlutterWave::generateReference(); $data = [ 'payment_options' => 'card,banktransfer', 'amount' => $amount, 'email' => $vcard->tenant->user->email, 'tx_ref' => $reference, 'currency' => $currencyCode, 'redirect_url' => route('flutterwave.appointment.success'), 'customer' => [ 'email' => getLogInUser()->email, ], 'customizations' => [ 'title' => 'Appointment Book Payment', ], 'meta' => [ 'vcard_id' => $vcard->id, 'amount' => $amount, 'payment_mode' => Appointment::FLUTTERWAVE, ], ]; $payment = FlutterWave::initializePayment($data); if ($payment['status'] !== 'success') { return redirect()->route('vcard.show', ['alias' => $vcard->url_alias]); } session(['vcard_user_id' => $userId, 'tenant_id' => $vcard->tenant->id, 'vcard_id' => $vcard->id, 'appointment_details' => $input]); $url = $payment['data']['link']; return $url; } public function flutterwaveAppointmentSuccess(Request $request) { $input = $request->all(); $userId = session()->get('vcard_user_id'); $currencyCode = Currency::whereId(getUserSettingValue('currency_id', $userId))->first(); $clientId = getUserSettingValue('flutterwave_key', $userId); $clientSecret = getUserSettingValue('flutterwave_secret', $userId); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); if ($input['status'] == 'successful') { $transactionID = FlutterWave::getTransactionIDFromCallback(); $flutterWaveData = FlutterWave::verifyTransaction($transactionID); $data = $flutterWaveData['data']; $amount = $data['amount']; $vcardId = $data['meta']['vcard_id']; $tenantId = session()->get('tenant_id'); $transactionId = $input['transaction_id']; $currencyCode = $data['currency']; $currencyId = Currency::whereCurrencyCode($currencyCode)->first()->id; $vcard = Vcard::with('tenant.user')->where('id', $vcardId)->first(); $transactionDetails = [ 'vcard_id' => $vcardId, 'transaction_id' => $transactionId, 'currency_id' => $currencyId, 'amount' => $amount, 'tenant_id' => $tenantId, 'type' => Appointment::FLUTTERWAVE, 'status' => Transaction::SUCCESS, 'meta' => json_encode($data), ]; $appointmentTran = AppointmentTransaction::create($transactionDetails); $appointmentInput = session()->get('appointment_details'); session()->forget('appointment_details'); $appointmentInput['appointment_tran_id'] = $appointmentTran->id; /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($appointmentInput, $vcardEmail); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id']); Flash::success(__('messages.placeholder.payment_done')); App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); return redirect(route('vcard.show', [$vcard->url_alias, __('messages.placeholder.appointment_created')])); } } public function productBuy($input, $product) { $userId = $product->vcard->user->id; $vcard = $product->vcard; $clientId = getUserSettingValue('flutterwave_key', $userId); $clientSecret = getUserSettingValue('flutterwave_secret', $userId); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyCode = Currency::whereId($product->currency_id)->first()->currency_code; $email = $input['email']; $productId = $product->id; $productAmount = $product->price; $reference = FlutterWave::generateReference(); $data = [ 'payment_options' => 'card,banktransfer', 'amount' => $productAmount, 'email' => is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email, 'tx_ref' => $reference, 'currency' => $currencyCode, 'redirect_url' => route('flutterwave.product.success'), 'customer' => [ 'email' => $email, ], 'customizations' => [ 'title' => 'Product Buy Payment', ], 'meta' => [ 'product_id' => $productId, 'amount' => $productAmount, 'payment_mode' => Product::FLUTTERWAVE, ], ]; $payment = FlutterWave::initializePayment($data); if ($payment['status'] !== 'success') { return redirect()->route('showProducts', [$vcard->id, $vcard->url_alias]); } session()->put(['input' => $input]); session()->put(['vcard_user_id' => $userId]); $url = $payment['data']['link']; return $url; } public function flutterwaveProductSuccess(Request $request) { $input = $request->all(); $userId = session()->get('vcard_user_id'); $clientId = getUserSettingValue('flutterwave_key', $userId); $clientSecret = getUserSettingValue('flutterwave_secret', $userId); config([ 'flutterwave.publicKey' => $clientId, 'flutterwave.secretKey' => $clientSecret, ]); if ($input['status'] == 'successful') { $transactionID = FlutterWave::getTransactionIDFromCallback(); $flutterWaveData = FlutterWave::verifyTransaction($transactionID); $data = $flutterWaveData['data']; $amount = $data['amount']; $transactionId = $input['transaction_id']; $sessionInput = session()->get('input'); $product = Product::whereId($sessionInput['product_id'])->first(); if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyId = Currency::whereId($product->currency_id)->first()->id; ProductTransaction::create([ 'product_id' => $sessionInput['product_id'], 'name' => $sessionInput['name'], 'email' => $sessionInput['email'], 'phone' => $sessionInput['phone'], 'address' => $sessionInput['address'], 'currency_id' => $currencyId, 'meta' => json_encode($data), 'type' => $sessionInput['payment_method'], 'transaction_id' => $transactionId, 'amount' => $amount, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $sessionInput['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $sessionInput['phone'], 'address' => $sessionInput['address'], 'payment_type' => __('messages.flutterwave'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($sessionInput['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); session()->forget('input'); session()->forget('vcard_user_id'); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } } } Http/Controllers/VcardSubscribersController.php000064400000002065152164577510016034 0ustar00all(); $input['vcard_id'] = Vcard::whereUrlAlias($input['vcard_alias'])->first()->id; if (isset($input['subscribe']) && $input['subscribe'] == "true") { VcardSubscribers::create($input); return $this->sendSuccess('User subscribed successfully.'); } $playerExist = VcardSubscribers::where('player_id', $input['player_id'])->first(); if ($playerExist) { $exist = VcardSubscribers::where('player_id', $input['player_id']) ->where('vcard_id', $input['vcard_id']) ->first(); if (!$exist) { return $this->sendError("Error"); } } else { VcardSubscribers::create($input); } return $this->sendSuccess('User subscribed successfully.'); } } Http/Controllers/PaystackController.php000064400000021753152164577510014352 0ustar00subscriptionRepository = $subscriptionRepository; } public function redirectToGateway(Request $request) { $clientId = getSelectedPaymentGateway('paystack_key'); $clientSecret = getSelectedPaymentGateway('paystack_secret'); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); $supportedCurrency = ['NGN', 'USD', 'GHS', 'ZAR', 'KES']; $plan = Plan::with('currency')->findOrFail($request->planId); if ($plan->currency->currency_code != null && !in_array(strtoupper($plan->currency->currency_code), getPayStackSupportedCurrencies())) { Flash::error(__('messages.placeholder.this_currency_is_not_supported_paystack')); return Redirect()->back(); } $data = $this->subscriptionRepository->manageSubscription($request->all()); if (!isset($data['plan'])) { if (isset($data['status']) && $data['status'] == true) { Flash::error(__('messages.subscription_pricing_plans.has_been_subscribed')); return Redirect()->back(); } else { if (isset($data['status']) && $data['status'] == false) { Flash::error(__('messages.placeholder.cannot_switch_to_zero')); return Redirect()->back(); } } } $subscriptionsPricingPlan = $data['plan']; $subscription = $data['subscription']; try { $request->merge([ 'email' => $request->user()->email, 'orderID' => $subscription->id, 'amount' => $data['amountToPay'] * 100, 'quantity' => 1, 'currency' => $plan->currency->currency_code, 'reference' => Paystack::genTranxRef(), 'metadata' => json_encode(['subscription_id' => $subscription->id]), ]); return Paystack::getAuthorizationUrl()->redirectNow(); } catch (\Exception $e) { Flash::error(__('messages.setting.paystack_credential')); return Redirect()->back(); } } public function handleGatewayCallback(Request $request) { $clientId = getSelectedPaymentGateway('paystack_key'); $clientSecret = getSelectedPaymentGateway('paystack_secret'); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); $response = Paystack::getPaymentData(); $transactionID = $response['data']['id']; $transactionAmount = $response['data']['requested_amount'] / 100; $subscriptionId = $response['data']['metadata']['subscription_id'] ?? null; try { if(isset($subscriptionId)){ Subscription::findOrFail($subscriptionId)->update([ 'payment_type' => Subscription::PAYSTACK, 'status' => Subscription::ACTIVE ]); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscriptionId) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $transaction = Transaction::create([ 'transaction_id' => $transactionID, 'type' => Transaction::PAYSTACK, 'amount' => $transactionAmount, 'status' => Subscription::ACTIVE, 'meta' => json_encode($response), ]); // updating the transaction id on the subscription table $subscription = Subscription::findOrFail($subscriptionId); $planName = $subscription->plan->name; $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if($affiliateAmountType == 1){ AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount,'is_verified' => 1]); }else if($affiliateAmountType == 2){ $amount = $transactionAmount * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount,'is_verified' => 1]); } $userEmail = getLogInUser()->email; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'first_name' => $firstName, 'last_name' => $lastName, 'planName' => $planName, ]; manageVcards(); Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); return view('sadmin.plans.payment.paymentSuccess'); }else{ $orderId = session()->get('order_id'); $type = NfcOrders::PAYSTACK; $transactionId = $response['data']['id']; $amount = $response['data']['requested_amount']/100; $userId = NfcOrders::findOrFail($orderId)->user_id; $status = NfcOrders::SUCCESS; $nfcOrder = NfcOrders::get()->find($orderId); $transactionDetails = [ 'nfc_order_id' => $orderId, 'type' => $type, 'transaction_id' => $transactionId, 'amount' => $amount, 'user_id' => $userId, 'status' => $status, ]; NfcOrderTransaction::create($transactionDetails); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id', 'order_details', 'order_id']); $vcardName = Vcard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); return redirect(route('user.orders')); } } catch (HttpException $ex) { print_r($ex->getMessage()); } } public function nfcOrder($orderId, $email, $nfc, $currency) { $clientId = getSelectedPaymentGateway('paystack_key'); $clientSecret = getSelectedPaymentGateway('paystack_secret'); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); try { $data = [ 'email' => $nfc->email, 'orderID' => $orderId, 'amount' => $nfc->nfcCard->price * $nfc->quantity * 100, 'quantity' => 1, 'currency' => $currency, 'reference' => Paystack::genTranxRef(), 'metadata' => json_encode(['nfc_id' => $orderId]), ]; $result = Paystack::getAuthorizationUrl($data)->redirectNow(); session()->put(['order_details' => $nfc,'order_id' => $orderId]); return $result; } catch (\Exception $e) { Flash::error(__('messages.setting.paystack_credential')); return Redirect()->back(); } } } Http/Controllers/HomeController.php000064400000016731152164577510013463 0ustar00where('language', $language)->get(); $faqs = FrontFAQs::where('language', $language)->first(); $metas = Meta::first(); if (! empty($metas)) { $metas = $metas->toArray(); } $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $aboutUS = AboutUs::with('media')->where('language', $language)->get()->toArray(); $features = Feature::where('language', $language)->get(); // Isolamento regional de planos por hostname $host = request()->getHost(); $currencyCode = 'EUR'; // default Europa if (str_contains($host, '.com.br')) { $currencyCode = 'BRL'; } elseif (str_contains($host, '.pt')) { $currencyCode = 'EUR'; } $plans = Plan::with(['currency', 'planFeature', 'hasZeroPlan', 'planCustomFields']) ->whereIsDefault(Plan::IS_DEACTIVE) ->whereStatus(Plan::IS_ACTIVE) ->whereHas('currency', function ($q) use ($currencyCode) { $q->where('currency_code', $currencyCode); }) ->get(); $homePage = getSuperAdminSettingValue('home_page_theme') == 1 ? 'home' : 'home1'; $view = getSuperAdminSettingValue('is_front_page') ? view("front.home.$homePage", compact('plans', 'setting', 'features', 'testimonials', 'aboutUS', 'metas', 'faqs')) : redirect(route('login')); return $view; } public function store(CreateContactRequest $request) { $input = $request->all(); $user = getSuperAdminEmail(); ContactUs::create($input); Mail::to($user) ->send(new LandingContactUsMail( $input, __('messages.placeholder.message_sent') )); return $this->sendSuccess(__('messages.placeholder.message_sent')); } /** * @return Application|Factory|View */ public function showContactUs(): \Illuminate\View\View { return view('sadmin.contactus.index'); } public function destroyContactUs(ContactUs $enquiry): JsonResponse { $enquiry->delete(); return $this->sendSuccess(__('messages.flash.enquiry_delete')); } public function themeConfiguration(): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); $view = view('settings.theme_config.index', compact('setting')); return $view; } public function changeLanguage(Request $request): RedirectResponse { Session::put('languageName', $request->input('languageName')); return redirect()->back(); } public function banner(Request $request): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); return view('sadmin.supportBanner.index', compact('setting')); } public function appDownload(Request $request): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); return view('sadmin.supportMobile.index', compact('setting')); } /** * @return Application|Factory|View|RedirectResponse|Redirector */ public function termCondition() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); $view = view('front.terms_conditions', compact('setting', 'faqs')); return $view; } /** * @return Application|Factory|View */ public function privacyPolicy(): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); return view('front.privacy_policy', compact('setting', 'faqs')); } public function declineCookie() { session(['declined' => 1]); } public function vcardTemplates() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); return view('front.home.vcards-templates', compact('setting', 'faqs')); } public function forntFaq() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $blogs = Blog::where('status', '1')->get(); $faq = FrontFAQs::where('language', $language)->get(); $faqs = FrontFAQs::where('language', $language)->first(); if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-faq1', compact('setting', 'faq', 'faqs', 'blogs')); } else { return view('front.home.home-faq', compact('setting', 'faq', 'faqs', 'blogs')); } } public function ForntBlog() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $blogs = Blog::where('status', '1')->get(); $faqs = FrontFAQs::where('language', $language)->first(); if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-blog1', compact('blogs', 'faqs', 'setting')); } else { return view('front.home.home-blog', compact('blogs', 'faqs', 'setting')); } } public function ForntBlogShow($slug) { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); $blog = Blog::where('slug', $slug)->first(); if (!$blog->status) { abort(404); } if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-blog-show1', compact('blog', 'faqs', 'setting')); } else { return view('front.home.home-blog-show', compact('blog', 'faqs', 'setting')); } } } Http/Controllers/GalleryController.php000064400000003747152164577510014175 0ustar00galleryRepo = $galleryRepo; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request, $id) { } /** * Store a newly created resource in storage. * * @return \Illuminate\Http\Response */ public function store(CreateGalleryRequest $request) { $input = $request->all(); $this->galleryRepo->store($input); return $this->sendSuccess(__('messages.placeholder.gallery_created')); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit(Gallery $gallery) { return $this->sendResponse($gallery, 'Gallery successfully retrieved.'); } /** * Update the specified resource in storage. * * @param int $id * @return \Illuminate\Http\Response */ public function update(UpdateGalleryRequest $request, Gallery $gallery) { $input = $request->all(); $this->galleryRepo->update($input, $gallery->id); return $this->sendSuccess(__('messages.placeholder.gallery_updated')); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(gallery $gallery) { $gallery->clearMediaCollection(GALLERY::GALLERY_PATH); $gallery->delete(); return $this->sendSuccess('VCard service deleted successfully.'); } } Http/Controllers/AffiliationWithdrawController.php000064400000011015152164577510016520 0ustar00plan; if (! $currentPlan->planFeature->affiliation) { return redirect()->route('admin.dashboard'); } $currentUserId = Auth::id(); $totalAmount = AffiliateUser::whereAffiliatedBy($currentUserId)->sum('amount'); $currentAmount = currentAffiliateAmount($currentUserId); return view('user-settings.affiliationWithdraw.index', compact('totalAmount', 'currentAmount')); } public function withdrawAmount(createWithdrawAmountRequest $request) { $currentUserId = getLogInUserId(); $inProcessWithdrawal = Withdrawal::whereUserId($currentUserId)->whereIsApproved(Withdrawal::INPROCESS)->first(); if ($inProcessWithdrawal) { return $this->sendError(__('messages.affiliation.withdraw_pending')); } $input = $request->all(); if ($input['amount'] > currentAffiliateAmount()) { return $this->sendError(__('messages.affiliation.withdraw_more_than_balance')); } if ($input['paypal_email'] == null && $input['bank_details'] == null) { return $this->sendError(__('Enter your PayPal Email or Bank Details')); } if (!empty($input['paypal_email']) && (getUserSettingValue('paypal_email', $currentUserId) != $input['paypal_email'])) { return $this->sendError(__('messages.affiliation.paypal_email_not_match')); } $withdrawal = new Withdrawal(); $withdrawal->amount = $input['amount']; $withdrawal->user_id = $currentUserId; $withdrawal->email = $input['paypal_email'] ?? null; $withdrawal->bank_details = $input['bank_details'] ?? null; $withdrawal->is_approved = Withdrawal::INPROCESS; $withdrawal->save(); return $this->sendResponse($withdrawal, __('messages.affiliation.withdraw_request_sent')); } public function affiliationWithdraw(): View { return view('sadmin.affiliationWithdraw.index'); } public function changeWithdrawalStatus(Request $request, $id, $approval) { $rejectionNote = $request->rejectionNote; $meta = $request->meta; $withdrawal = Withdrawal::find($id); $withdrawal->update([ 'is_approved' => $approval, 'rejection_note' => ($approval == Withdrawal::REJECTED) ? $rejectionNote : null, ]); if ($approval == Withdrawal::APPROVED) { WithdrawalTransaction::create([ 'withdrawal_id' => $withdrawal->id, 'amount' => $withdrawal->amount, 'paid_by' => $meta ? WithdrawalTransaction::PAYPAL : WithdrawalTransaction::MANUALLY, 'payment_meta' => $meta, ]); } SendWithdrawRequestMailJob::dispatch($withdrawal->id, $approval); return $this->sendResponse($withdrawal, __('messages.affiliation.withdrawal_update')); } public function withdrawTransaction(): View { return view('sadmin.withdrawalTransactions.index'); } public function showAffiliationWithdraw($id) { $affiliationWithdraw = Withdrawal::with('user')->find($id); $affiliationWithdraw['formattedAmount'] = currencyFormat($affiliationWithdraw->amount, 2); if (isAdmin() && $affiliationWithdraw->user_id !== getLogInUserId()) { return $this->sendError('Withdrawal data not found'); } return $this->sendResponse($affiliationWithdraw, 'Withdrawal data retrieved successfully.'); } public function sendInvite(Request $request) { $affiliateCode = getLogInUser()->affiliate_code; $affliateName = getLogInUser()->full_name; $referralURL = URL::to('/register?referral-code=' . $affiliateCode); $input = [ 'referralUrl' => $referralURL, 'username' => $affliateName, ]; Mail::to($request['email']) ->send(new SendinviteMail($input, $request['email'])); return $this->sendSuccess('Successfully send'); } } Http/Controllers/PhonepeController.php000064400000035007152164577510014166 0ustar00subscriptionRepository = $subscriptionRepository; } public function phonePe(Request $request) { $data = $this->subscriptionRepository->manageSubscription($request->all()); $subscription = $data['subscription']; $currency =$subscription->plan->currency->currency_code; if($currency != "INR") { Flash::error(__('messages.placeholder.this_currency_is_not_supported_phonepe')); return redirect()->back(); } $email = $request->user()->email; $amount = $data['amountToPay']; $redirectbackurl = route('phonepe-subscription-response'). '?' . http_build_query(['subscriptionId' => $subscription->id , 'userId' => getLogInUserId()]); $merchantId = getSelectedPaymentGateway('phonepe_merchant_id'); $merchantUserId = getSelectedPaymentGateway('phonepe_merchant_id'); $baseUrl = getSelectedPaymentGateway('phonepe_env') == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getSelectedPaymentGateway('phonepe_salt_key'); $saltIndex = getSelectedPaymentGateway('phonepe_salt_index'); $callbackurl = route('phonepe-subscription-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.redirectUrl' => $redirectbackurl, 'phonepe.callBackUrl' => $callbackurl, ]); $transactionId = date('dmYhmi') . rand(111111, 999999); $data = array( 'merchantId' => $merchantId, 'merchantTransactionId' => $transactionId, 'merchantUserId' => $merchantUserId, 'amount' => $amount * 100, 'redirectUrl' => $redirectbackurl, 'redirectMode' => 'POST', 'callbackUrl' => $callbackurl, 'paymentInstrument' => array( 'type' => 'PAY_PAGE', ), ); $encode = base64_encode(json_encode($data)); $string = $encode . '/pg/v1/pay' . $saltKey; $sha256 = hash('sha256', $string); $finalXHeader = $sha256 . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/pay', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode(['request' => $encode]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-VERIFY: ' . $finalXHeader ), )); $response = curl_exec($curl); curl_close($curl); $rData = json_decode($response); $url = $rData->data->instrumentResponse->redirectInfo->url; return redirect()->away($url); } public function callbackPhonePe(Request $request) { $merchantId = getSelectedPaymentGateway('phonepe_merchant_id'); $merchantUserId = getSelectedPaymentGateway('phonepe_merchant_id'); $baseUrl = getSelectedPaymentGateway('phonepe_env') == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getSelectedPaymentGateway('phonepe_salt_key'); $saltIndex = getSelectedPaymentGateway('phonepe_salt_index'); $callbackurl = route('phonepe-subscription-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.callBackUrl' => $callbackurl, ]); $finalXHeader = hash('sha256','/pg/v1/status/'.$request['merchantId'].'/'.$request['transactionId'].$saltKey).'###'.$saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl.'/pg/v1/status/'.$request['merchantId'].'/'.$request['transactionId'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'accept: application/json', 'X-VERIFY: '.$finalXHeader, 'X-MERCHANT-ID: '.$request['merchantId'] ), )); $responses = curl_exec($curl); $response = json_decode($responses); curl_close($curl); try { $transactionID = $response->data->transactionId; $transactionAmount = $response->data->amount / 100; $subscriptionId = request()->input('subscriptionId'); $userId = request()->input('userId'); Auth::loginUsingId($userId); Subscription::findOrFail($subscriptionId)->update([ 'payment_type' => Subscription::PHONEPE, 'status' => Subscription::ACTIVE ]); Subscription::findOrFail($subscriptionId)->get(); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscriptionId) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $transaction = Transaction::create([ 'transaction_id' => $transactionID, 'type' => Transaction::PHONEPE, 'amount' => $transactionAmount, 'status' => Subscription::ACTIVE, 'meta' => json_encode($response), ]); // updating the transaction id on the subscription table $subscription = Subscription::findOrFail($subscriptionId); $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if($affiliateAmountType == 1){ AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount,'is_verified' => 1]); }else if($affiliateAmountType == 2){ $amount = $transactionAmount * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount,'is_verified' => 1]); } $planName = $subscription->plan->name; $userEmail = getLogInUser()->email; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'subscriptionId' => $subscriptionId, 'subscriptionAmount' => $transactionAmount, 'transactionID' => $transactionID, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; manageVcards(); Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); return view('sadmin.plans.payment.paymentSuccess'); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function nfcOrder($orderId, $email, $nfc, $currency) { $amount = $nfc->nfcCard->price * $nfc->quantity; $redirectbackurl = route('phonepe-nfcorder-response'). '?' . http_build_query(['nfcorderId' => $orderId]); $merchantId = getSelectedPaymentGateway('phonepe_merchant_id'); $merchantUserId = getSelectedPaymentGateway('phonepe_merchant_id'); $baseUrl = getSelectedPaymentGateway('phonepe_env') == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getSelectedPaymentGateway('phonepe_salt_key'); $saltIndex = getSelectedPaymentGateway('phonepe_salt_index'); $callbackurl = route('phonepe-nfcorder-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.redirectUrl' => $redirectbackurl, 'phonepe.callBackUrl' => $callbackurl, ]); $transactionId = date('dmYhmi') . rand(111111, 999999); $data = array( 'merchantId' => $merchantId, 'merchantTransactionId' => $transactionId, 'merchantUserId' => $merchantUserId, 'amount' => $amount * 100, 'redirectUrl' => $redirectbackurl, 'redirectMode' => 'POST', 'callbackUrl' => $callbackurl, 'paymentInstrument' => array( 'type' => 'PAY_PAGE', ), ); $encode = base64_encode(json_encode($data)); $string = $encode . '/pg/v1/pay' . $saltKey; $sha256 = hash('sha256', $string); $finalXHeader = $sha256 . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/pay', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode(['request' => $encode]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-VERIFY: ' . $finalXHeader ), )); $response = curl_exec($curl); curl_close($curl); $rData = json_decode($response); $url = $rData->data->instrumentResponse->redirectInfo->url; return response()->json(['link' => $url, 'status' => 200]); } public function nfcOrderSuccess(Request $request) { $merchantId = getSelectedPaymentGateway('phonepe_merchant_id'); $merchantUserId = getSelectedPaymentGateway('phonepe_merchant_id'); $baseUrl = getSelectedPaymentGateway('phonepe_env') == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getSelectedPaymentGateway('phonepe_salt_key'); $saltIndex = getSelectedPaymentGateway('phonepe_salt_index'); $callbackurl = route('phonepe-subscription-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.callBackUrl' => $callbackurl, ]); $finalXHeader = hash('sha256','/pg/v1/status/'.$request['merchantId'].'/'.$request['transactionId'].$saltKey).'###'.$saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl.'/pg/v1/status/'.$request['merchantId'].'/'.$request['transactionId'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'accept: application/json', 'X-VERIFY: '.$finalXHeader, 'X-MERCHANT-ID: '.$request['merchantId'] ), )); $responses = curl_exec($curl); $response = json_decode($responses); curl_close($curl); try { $orderId = request()->input('nfcorderId'); $userId = NfcOrders::findOrFail($orderId)->user_id; Auth::loginUsingId($userId); $status = NfcOrders::SUCCESS; $nfcOrder = NfcOrders::get()->find($orderId); $type = NfcOrders::PHONEPE; $transactionId = $response->data->transactionId ; $amount = $response->data->amount / 100; $transactionDetails = [ 'nfc_order_id' => $orderId, 'type' => $type, 'transaction_id' => $transactionId, 'amount' => $amount, 'user_id' => $userId, 'status' => $status, ]; NfcOrderTransaction::create($transactionDetails); $vcardName = Vcard::find($nfcOrder['vcard_id'])->name; $cardType = Nfc::find($nfcOrder['card_type'])->name; Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder, $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); Auth::loginUsingId($userId); return redirect(route('user.orders')); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/ECardsController.php000064400000011743152164577510013732 0ustar00tenant_id; $vCards = Vcard::whereTenantId($tenantId)->pluck('name', 'id'); return view('virtual-backgrounds.index', compact('vCards')); } public function getVcardData(Request $request): JsonResponse { $input = $request->all(); $vcard = Vcard::with('socialLink')->findOrFail($input['vcardId']); $data = [ 'id' => $vcard['id'], 'first_name' => $vcard['first_name'], 'last_name' => $vcard['last_name'], 'email' => $vcard['email'], 'occupation' => $vcard['occupation'], 'location' => $vcard['location'], 'region_code' => $vcard['region_code'], 'phone' => $vcard['phone'], 'website' => $vcard['socialLink']['website'], ]; return response()->json(['data' => $data, 'success' => true]); } public function downloadEcard(CreateEcardRequest $request): RedirectResponse { $input = $request->all(); $path = asset('uploads/ecard'); if (! Storage::exists($path)) { Storage::disk('public')->makeDirectory('uploads/ecard'); } $zipFile = public_path('virtual_backgrounds/virtual-backgrounds.zip'); if (File::exists($zipFile)) { File::delete($zipFile); } if ($input['e-card-id'] == 1) { $data = retriveH1Card($input); } if ($input['e-card-id'] == 2) { $data = retriveH2Card($input); } if ($input['e-card-id'] == 3) { $data = retriveH3Card($input); } if ($input['e-card-id'] == 4) { $data = retriveH4Card($input); } if ($input['e-card-id'] == 5) { $data = retriveH5Card($input); } if ($input['e-card-id'] == 6) { $data = retriveH6Card($input); } if ($input['e-card-id'] == 7) { $data = retriveH7Card($input); } if ($input['e-card-id'] == 8) { $data = retriveH8Card($input); } if ($input['e-card-id'] == 9) { $data = retriveH9Card($input); } if ($input['e-card-id'] == 10) { $data = retriveH10Card($input); } if ($input['e-card-id'] == 11) { $data = retriveH11Card($input); } if ($input['e-card-id'] == 12) { $data = retriveH12Card($input); } if ($input['e-card-id'] == 13) { $data = retriveH13Card($input); } // delete images after generate zip file $vcardId = $input['vcard_id']; $qrCodeImage = public_path('ecard/'.$vcardId.'-qr.png'); $frontImage = public_path('virtual_backgrounds/Front.jpg'); $backImage = public_path('virtual_backgrounds/Back.jpg'); $frontImage1 = public_path('uploads/ecard/'.$vcardId .'/Front.png'); $backImage1 = public_path('uploads/ecard/'.$vcardId.'/Back.png'); $directory = public_path('uploads/ecard/'.$vcardId); if (File::exists($qrCodeImage)) { File::delete($qrCodeImage); } if (File::exists($frontImage)) { File::delete($frontImage); } if (File::exists($backImage)) { File::delete($backImage); } if (File::exists($frontImage1)) { File::delete($frontImage1); } if (File::exists($backImage1)) { File::delete($backImage1); File::deleteDirectory($directory); } return redirect(asset($data[0])); } public function getEcard(Request $request): \Illuminate\View\View { return view(); } public function create($ecard): \Illuminate\View\View { $vcards = Vcard::whereTenantId(getLogInTenantId())->where('status', Vcard::ACTIVE)->pluck('name', 'id')->toArray(); return view('virtual-backgrounds.create', compact('vcards', 'ecard')); } public function store(Request $request, $cardImageId) { } public function custom(): View|Factory|Application { $tenantId = Auth::user()->tenant_id; $vcards = Vcard::whereTenantId($tenantId)->pluck('name', 'id'); return view('virtual-backgrounds.custom', compact('vcards')); } public function qrCode(Request $request) { $link = $request->input('link'); $qrcode = QrCode::size(100)->generate($link); return $qrcode; } } Http/Controllers/AffiliateUserController.php000064400000000332152164577510015304 0ustar00subscriptionRepository = $subscriptionRepository; } public function onBoard(Request $request): JsonResponse { $data = $this->subscriptionRepository->manageSubscription($request->all()); $subscription = $data['subscription']; $api = new Api(getSelectedPaymentGateway('razorpay_key'), getSelectedPaymentGateway('razorpay_secret')); $orderData = [ 'receipt' => 1, 'amount' => $data['amountToPay'] * 100, 'currency' => $subscription->plan->currency->currency_code, 'notes' => [ 'email' => Auth::user()->email, 'name' => Auth::user()->full_name, 'subscriptionId' => $subscription->id, 'amountToPay' => $data['amountToPay'], ], ]; session(['payment_type' => request()->get('payment_type')]); $razorpayOrder = $api->order->create($orderData); $data['id'] = $razorpayOrder->id; $data['amount'] = $data['amountToPay']; $data['name'] = Auth::user()->full_name; $data['email'] = Auth::user()->email; $data['contact'] = Auth::user()->contact; return $this->sendResponse($data, 'Order created successfully'); } /** * @return false|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse */ public function paymentSuccess(Request $request) { $input = $request->all(); Log::info('RazorPay Payment Successfully'); Log::info($input); $api = new Api(getSelectedPaymentGateway('razorpay_key'), getSelectedPaymentGateway('razorpay_secret')); if (count($input) && ! empty($input['razorpay_payment_id'])) { try { $payment = $api->payment->fetch($input['razorpay_payment_id']); $generatedSignature = hash_hmac( 'sha256', $payment['order_id'] . '|' . $input['razorpay_payment_id'], getSelectedPaymentGateway('razorpay_secret') ); if ($generatedSignature != $input['razorpay_signature']) { return redirect()->back(); } // Create Transaction Here $subscriptionID = $payment['notes']['subscriptionId']; $amountToPay = $payment['notes']['amountToPay']; $subscription = Subscription::findOrFail($subscriptionID); Subscription::findOrFail($subscriptionID)->update([ 'payment_type' => Subscription::RAZORPAY, 'status' => Subscription::ACTIVE ]); // De-Active all other subscription Subscription::whereTenantId(getLogInTenantId()) ->where('id', '!=', $subscriptionID) ->where('status', '!=', Subscription::REJECT) ->update([ 'status' => Subscription::INACTIVE, ]); $transaction = Transaction::create([ 'tenant_id' => $subscription->tenant_id, 'transaction_id' => $payment->id, 'type' => session('payment_type'), 'amount' => $amountToPay, 'status' => Subscription::ACTIVE, 'meta' => json_encode($payment->toArray()), ]); $subscription = Subscription::findOrFail($subscriptionID); $planName = $subscription->plan->name; $subscription->update(['transaction_id' => $transaction->id]); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if ($affiliateAmountType == 1) { AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount, 'is_verified' => 1]); } else if ($affiliateAmountType == 2) { $amount = $amountToPay * $affiliateAmount / 100; AffiliateUser::whereUserId(getLogInUserId())->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount, 'is_verified' => 1]); } $userEmail = getLogInUser()->email; $firstName = getLogInUser()->first_name; $lastName = getLogInUser()->last_name; $emailData = [ 'subscriptionID' => $subscriptionID, 'amountToPay' => $amountToPay, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; manageVcards(); Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); return view('sadmin.plans.payment.paymentSuccess'); } catch (Exception $e) { return false; } } return redirect()->back(); } /** * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View */ public function paymentFailed(): View { return view('sadmin.plans.payment.paymentcancel'); } public function nfcPaymentSuccess(Request $request) { $input = $request->all(); $api = new Api(getSelectedPaymentGateway('razorpay_key'), getSelectedPaymentGateway('razorpay_secret')); if (count($input) && ! empty($input['razorpay_payment_id'])) { try { $payment = $api->payment->fetch($input['razorpay_payment_id']); $generatedSignature = hash_hmac( 'sha256', $payment['order_id'] . '|' . $input['razorpay_payment_id'], getSelectedPaymentGateway('razorpay_secret') ); if ($generatedSignature != $input['razorpay_signature']) { return redirect()->back(); } // $nfcOrder = NfcOrders::create([ // 'name' => $payment['notes']['customer_name'], // 'designation' => $payment['notes']['designation'], // 'phone' => $payment['notes']['phone'], // 'email' => $payment['notes']['email'], // 'address' => $payment['notes']['address'], // 'company_name' => $payment['notes']['company_name'], // 'order_status' => NfcOrders::PENDING, // 'card_type' => $payment['notes']['card_type'], // 'user_id' => getLogInUserId(), // 'vcard_id' => $payment['notes']['vcard_id'], // ]); $id = session()->get('orderid'); NfcOrders::where('id', $id)->update(['order_status' => NfcOrders::PENDING]); $nfcOrder = NfcOrders::where('id', $id)->get(); $vcardName = VCard::find($nfcOrder[0]->vcard_id)->name; $cardType = Nfc::find($nfcOrder[0]->card_type)->name; NfcOrderTransaction::create([ 'nfc_order_id' => $id, 'type' => NfcOrders::RAZOR_PAY, 'transaction_id' => $payment->id, 'amount' => $payment['notes']['amountToPay'], 'user_id' => getLogInUser()->id, 'status' => NfcOrders::SUCCESS, ]); Mail::to(getSuperAdminSettingValue('email'))->send(new AdminNfcOrderMail($nfcOrder[0], $vcardName, $cardType)); Flash::success(__('messages.nfc.order_placed_success')); return redirect(route('user.orders')); } catch (Exception $e) { Log::info($e->getMessage()); return false; } } return redirect()->back(); } public function nfcPaymentFailed(Request $request): View { $input = $request->all(); $api = new Api(getSelectedPaymentGateway('razorpay_key'), getSelectedPaymentGateway('razorpay_secret')); $payment = $api->payment->fetch($input['razorpay_payment_id']); $id = session()->get('orderid'); NfcOrders::where('id', $id)->update(['order_status' => NfcOrders::PENDING]); $nfcOrder = NfcOrders::where('id', $id)->get(); NfcOrderTransaction::create([ 'nfc_order_id' => $id, 'type' => NfcOrders::RAZOR_PAY, 'transaction_id' => $payment->id, 'amount' => $payment['notes']['amountToPay'], 'user_id' => getLogInUser()->id, 'status' => NfcOrders::FAIL, ]); return view('sadmin.plans.payment.paymentcancel'); } public function productPaymentSuccess(Request $request) { $input = $request->all(); $product = Session::get('productId'); $userId = $product->vcard->user->id; $api = new Api(getUserSettingValue('razorpay_key', $userId), getUserSettingValue('razorpay_secret', $userId)); $payment = $api->payment->fetch($input['razorpay_payment_id']); $generatedSignature = hash_hmac( 'sha256', $payment['order_id'] . '|' . $input['razorpay_payment_id'], getSelectedPaymentGateway('razorpay_secret') ); if ($generatedSignature != $input['razorpay_signature']) { return redirect()->back(); } if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyId = Currency::whereId($product->currency_id)->first()->id; $name = $payment['notes']['name']; $email = $payment['notes']['email']; $contact = $payment['contact']; $address = $payment['notes']['address']; $currency = $payment['currency']; $payment_type = $payment['notes']['payment_type']; $amount = $payment['amount'] / 100; $transaction_id = $payment['id']; try { DB::beginTransaction(); ProductTransaction::create([ 'product_id' => $product->id, 'name' => $name, 'email' => $email, 'phone' => $contact, 'address' => $address, 'currency_id' => $currencyId, 'meta' => json_encode($payment), 'type' => $payment_type, 'transaction_id' => $transaction_id, 'amount' => $amount, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $name, 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $contact, 'address' => $address, 'payment_type' => __('messages.razorpay'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($email)->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); session()->forget('productId'); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } catch (HttpException $ex) { print_r($ex->getMessage()); } } public function productPaymentFailed(Request $request): View { $input = $request->all(); $product = Session::get('productId'); $userId = $product->vcard->user->id; $api = new Api(getUserSettingValue('razorpay_key', $userId), getUserSettingValue('razorpay_secret', $userId)); $vcard = $product->vcard; session()->forget('productId'); Flash::error(__('messages.placeholder.payment_cancel')); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias])); } } Http/Controllers/UserPhonepeController.php000064400000035204152164577510015024 0ustar00 $input]); $merchantId = getUserSettingValue('phonepe_merchant_id', $userId); $merchantUserId = getUserSettingValue('phonepe_merchant_id', $userId); $baseUrl = getUserSettingValue('phonepe_env', $userId) == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getUserSettingValue('phonepe_salt_key', $userId); $saltIndex = getUserSettingValue('phonepe_salt_index', $userId); $callbackurl = route('phonepe-appointmentbook-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.redirectUrl' => $redirectbackurl, 'phonepe.callBackUrl' => $callbackurl, ]); $transactionId = date('dmYhmi') . rand(111111, 999999); $data = array( 'merchantId' => $merchantId, 'merchantTransactionId' => $transactionId, 'merchantUserId' => $merchantUserId, 'amount' => $amount * 100, 'redirectUrl' => $redirectbackurl, 'redirectMode' => 'POST', 'callbackUrl' => $callbackurl, 'mobileNumber' => $phone, 'paymentInstrument' => array( 'type' => 'PAY_PAGE', ), ); $encode = base64_encode(json_encode($data)); $string = $encode . '/pg/v1/pay' . $saltKey; $sha256 = hash('sha256', $string); $finalXHeader = $sha256 . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/pay', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode(['request' => $encode]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-VERIFY: ' . $finalXHeader ), )); $response = curl_exec($curl); curl_close($curl); $rData = json_decode($response); $url = $rData->data->instrumentResponse->redirectInfo->url; return response()->json(['link' => $url, 'status' => 200]); } public function appointmentBookSuccess(Request $request) { $input = request()->input('input'); $vcard = Vcard::with('tenant.user')->where('id', $input['vcard_id'])->first(); $userId = $vcard->tenant->user->id; $merchantId = getUserSettingValue('phonepe_merchant_id', $userId); $merchantUserId = getUserSettingValue('phonepe_merchant_id', $userId); $baseUrl = getUserSettingValue('phonepe_env', $userId) == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getUserSettingValue('phonepe_salt_key', $userId); $saltIndex = getUserSettingValue('phonepe_salt_index', $userId); $callbackurl = route('phonepe-appointmentbook-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.callBackUrl' => $callbackurl, ]); $finalXHeader = hash('sha256', '/pg/v1/status/' . $request['merchantId'] . '/' . $request['transactionId'] . $saltKey) . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/status/' . $request['merchantId'] . '/' . $request['transactionId'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'accept: application/json', 'X-VERIFY: ' . $finalXHeader, 'X-MERCHANT-ID: ' . $request['merchantId'] ), )); $responses = curl_exec($curl); $response = json_decode($responses); curl_close($curl); try { $transactionId = $response->data->transactionId; // Auth::loginUsingId($userId); $currencyId = Currency::whereCurrencyCode($input['currency_code'])->first()->id; $tenantId = $vcard->tenant->id; $amount = $input['amount']; $transactionDetails = [ 'vcard_id' => $vcard->id, 'transaction_id' => $transactionId, 'currency_id' => $currencyId, 'amount' => $amount, 'tenant_id' => $tenantId, 'type' => Appointment::PHONEPE, 'status' => Transaction::SUCCESS, 'meta' => json_encode($response), ]; $appointmentTran = AppointmentTransaction::create($transactionDetails); $appointmentInput = [ 'name' => $input['name'], 'email' => $input['email'], 'date' => $input['date'], 'phone' => $input['phone'], 'from_time' => $input['from_time'], 'to_time' => $input['to_time'], 'vcard_id' => $input['vcard_id'], 'appointment_tran_id' => $appointmentTran->id, 'toName' => $vcard->fullName > 1 ? $vcard->fullName : $vcard->tenant->user->fullName, 'vcard_name' => $vcard->name, ]; /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($appointmentInput, $vcardEmail); Flash::success(__('messages.placeholder.payment_done')); App::setLocale(session::get('languageChange_' . $vcard->url_alias)); return redirect(route('vcard.show', [$vcard->url_alias, __('messages.placeholder.appointment_created')])); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function productBuy($input, $product) { $amount = $product->price; $phone = $input['phone']; $userId = $product->vcard->user->id; $redirectbackurl = route('phonepe-Product-response') . '?' . http_build_query(['input' => $input]); $merchantId = getUserSettingValue('phonepe_merchant_id', $userId); $merchantUserId = getUserSettingValue('phonepe_merchant_id', $userId); $baseUrl = getUserSettingValue('phonepe_env', $userId) == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getUserSettingValue('phonepe_salt_key', $userId); $saltIndex = getUserSettingValue('phonepe_salt_index', $userId); $callbackurl = route('phonepe-Product-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.redirectUrl' => $redirectbackurl, 'phonepe.callBackUrl' => $callbackurl, ]); $transactionId = date('dmYhmi') . rand(111111, 999999); $data = array( 'merchantId' => $merchantId, 'merchantTransactionId' => $transactionId, 'merchantUserId' => $merchantUserId, 'amount' => $amount * 100, 'redirectUrl' => $redirectbackurl, 'redirectMode' => 'POST', 'callbackUrl' => $callbackurl, 'mobileNumber' => $phone, 'paymentInstrument' => array( 'type' => 'PAY_PAGE', ), ); $encode = base64_encode(json_encode($data)); $string = $encode . '/pg/v1/pay' . $saltKey; $sha256 = hash('sha256', $string); $finalXHeader = $sha256 . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/pay', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode(['request' => $encode]), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'X-VERIFY: ' . $finalXHeader ), )); $response = curl_exec($curl); curl_close($curl); $rData = json_decode($response); $url = $rData->data->instrumentResponse->redirectInfo->url; return response()->json(['link' => $url, 'status' => 200]); } public function productBuySuccess(Request $request) { $input = request()->input('input'); $product = Product::whereId($input['product_id'])->first(); $currencyId = isset($product->currency) ? $product->currency->id : Currency::whereId(getUserSettingValue('currency_id', $product->vcard->user->id))->first()->id; $userId = $product->vcard->user->id; $merchantId = getUserSettingValue('phonepe_merchant_id', $userId); $merchantUserId = getUserSettingValue('phonepe_merchant_id', $userId); $baseUrl = getUserSettingValue('phonepe_env', $userId) == 'production' ? 'https://api.phonepe.com/apis/hermes' : 'https://api-preprod.phonepe.com/apis/pg-sandbox'; $saltKey = getUserSettingValue('phonepe_salt_key', $userId); $saltIndex = getUserSettingValue('phonepe_salt_index', $userId); $callbackurl = route('phonepe-Product-response'); config([ 'phonepe.merchantId' => $merchantId, 'phonepe.merchantUserId' => $merchantUserId, 'phonepe.env' => $baseUrl, 'phonepe.saltKey' => $saltKey, 'phonepe.saltIndex' => $saltIndex, 'phonepe.callBackUrl' => $callbackurl, ]); $finalXHeader = hash('sha256', '/pg/v1/status/' . $request['merchantId'] . '/' . $request['transactionId'] . $saltKey) . '###' . $saltIndex; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $baseUrl . '/pg/v1/status/' . $request['merchantId'] . '/' . $request['transactionId'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => false, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'accept: application/json', 'X-VERIFY: ' . $finalXHeader, 'X-MERCHANT-ID: ' . $request['merchantId'] ), )); $responses = curl_exec($curl); $response = json_decode($responses); curl_close($curl); try { $transactionId = $response->data->transactionId; $amount = $response->data->amount / 100; DB::beginTransaction(); ProductTransaction::create([ 'product_id' => $input['product_id'], 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'address' => $input['address'], 'currency_id' => $currencyId, 'meta' => json_encode($response), 'type' => $input['payment_method'], 'transaction_id' => $transactionId, 'amount' => $amount, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $input['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $input['phone'], 'address' => $input['address'], 'payment_type' => __('messages.phonepe'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($input['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); session()->forget('input'); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/SocialAuthController.php000064400000007511152164577510014623 0ustar00redirect(); } /** * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function handleSocialCallback($provider): \Illuminate\Http\RedirectResponse { if (Auth::check()) { return redirect('/'); } $socialUser = Socialite::driver($provider)->user(); if (empty($socialUser['email'])) { Flash::error(__('messages.placeholder.we_could_not_fb_id')); return redirect(route('register')); } try { DB::beginTransaction(); /** @var User $user */ $user = User::whereRaw('lower(email) = ?', strtolower($socialUser['email']))->first(); $existingAccount = null; if (! empty($user)) { /** @var SocialAccount $existingProfile */ $existingAccount = SocialAccount::where('provider_id', $socialUser->id)->first(); } else { $username = explode(' ', $socialUser['name']); $userData['first_name'] = $username[0]; $userData['last_name'] = $username[1]; $userData['email'] = $socialUser['email']; $userData['email_verified_at'] = Carbon::now(); $userData['password'] = bcrypt(Str::random(40)); $userData['affiliate_code'] = generateUniqueAffiliateCode(); $tenant = MultiTenant::create(['tenant_username' => $userData['first_name']]); $userData['tenant_id'] = $tenant->id; /** @var User $user */ $user = User::create($userData)->assignRole(Role::ROLE_ADMIN); $plan = Plan::whereIsDefault(true)->first(); $subscription = new Subscription(); $subscription->plan_id = $plan->id; $subscription->starts_at = Carbon::now(); $subscription->ends_at = Carbon::now()->addDays($plan->trial_days); $subscription->plan_amount = $plan->price; $subscription->plan_frequency = $plan->frequency; $subscription->trial_ends_at = Carbon::now()->addDays($plan->trial_days); $subscription->no_of_vcards = $plan->no_of_vcards; $subscription->tenant_id = $user['tenant_id']; $subscription->status = Subscription::ACTIVE; $subscription->saveQuietly(); } if (empty($existingAccount)) { $existingAccount = SocialAccount::where('provider_id', $socialUser->id)->first(); if (empty($existingAccount)) { $socialAccount = new SocialAccount(); $socialAccount->tenant_id = $user->tenant_id; $socialAccount->provider = $provider; $socialAccount->provider_id = $socialUser->id; $socialAccount->save(); } } DB::commit(); Auth::login($user); return redirect(route('admin.dashboard')); } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } } Http/Controllers/StateController.php000064400000003104152164577510013641 0ustar00stateRepository = $stateRepository; } public function index(): View { return view('sadmin.states.index'); } public function store(CreateStateRequest $request): JsonResponse { $input = $request->all(); $state = $this->stateRepository->create($input); return $this->sendResponse($state, __('messages.flash.state_create')); } public function edit(State $state): JsonResponse { return $this->sendResponse($state, 'State successfully retrieved.'); } public function update(UpdateStateRequest $request, State $state): JsonResponse { $input = $request->all(); $this->stateRepository->update($input, $state->id); return $this->sendSuccess(__('messages.flash.state_update')); } public function destroy(State $state): JsonResponse { $cities = City::where('state_id', $state->id)->count(); if ($cities > 0) { return $this->sendError(__('messages.flash.state_used')); } $state->delete(); return $this->sendSuccess('State deleted successfully.'); } } Http/Controllers/SendMailController.php000064400000002613152164577510014261 0ustar00toArray(); $newEmail = $emails; return view('sadmin.send_mail.index',compact('newEmail')); } public function store(SendMailRequest $request) { ini_set('max_execution_time', 1200); $input = $request->all(); $enquiries = EmailSubscription::all(); $sendEmailData = [ 'subject' => $input['subject'], 'description' => $input['description'], ]; $sendEmail = SendEmail::create($sendEmailData); if (isset($input['custom_email'])) { foreach ($input['custom_email'] as $enquiries) { $data = [ 'subject' => $input['subject'], 'description' => $input['description'], 'email' => $enquiries, ]; Mail::to($enquiries)->send(new MailSendEmail($data)); } } Flash::success(__('messages.send_mail.mail_send_successfully')); return redirect()->back(); } } Http/Controllers/UserController.php000064400000021460152164577510013504 0ustar00userRepo = $userRepository; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { return view('users.index'); } /** * @return Application|Factory|View */ public function create(): \Illuminate\View\View { return view('users.create'); } /** * @return Application|RedirectResponse|Redirector */ public function store(CreateUserRequest $request): RedirectResponse { $input = $request->all(); $this->userRepo->store($input); Flash::success(__('messages.flash.user_create')); return redirect(route('users.index')); } /** * @return Application|Factory|View */ public function show(Request $request, User $user): \Illuminate\View\View { if (! empty($user) && $user->getRoleNames()[0] == 'admin') { return view('users.show', compact('user')); } abort(404); } /** * @return Application|Factory|View */ public function edit(User $user): \Illuminate\View\View { $subscription = Subscription::with(['plan']) ->whereTenantId($user->tenant_id) ->where('status', Subscription::ACTIVE)->latest()->first(); return view('users.edit', compact('user', 'subscription')); } public function emailVerified(User $user): JsonResponse { DB::table('users')->where('id', $user->id)->update(['email_verified_at' => Carbon::now()]); // $affiliateUser = AffiliateUser::withoutGlobalScope('verifiedUser') // ->whereIsVerified(false) // ->whereUserId($user->id) // ->first(); // // if ($affiliateUser) { // // $affiliateUser->update(['is_verified' => true]); // // } return $this->sendSuccess(__('messages.flash.verified_email')); } public function updateStatus(User $user): JsonResponse { $user->update([ 'is_active' => ! $user->is_active, ]); return $this->sendSuccess(__('messages.flash.user_status')); } /** * @return Application|RedirectResponse|Redirector */ public function update(UpdateUserRequest $request, User $user): RedirectResponse { $this->userRepo->update($request->all(), $user); Flash::success(__('messages.flash.user_update')); return redirect(route('users.index')); } public function destroy(User $user): JsonResponse { if ($user->getRoleNames()[0] == 'admin') { $affiliateUsers = AffiliateUser::whereUserId($user->id)->orWhere('affiliated_by', $user->id)->get(); $withdrawals = Withdrawal::whereUserId($user->id)->get(); foreach ($withdrawals as $withdrawal) { $withdrawalTransactions = WithdrawalTransaction::where('withdrawal_id', $withdrawal->id)->get(); foreach ($withdrawalTransactions as $transaction) { $transaction->delete(); } $withdrawal->delete(); } foreach ($affiliateUsers as $affiliateUser) { $affiliateUser->delete(); } NfcOrderTransaction::where('user_id', $user->id)->delete(); NfcOrders::where('user_id', $user->id)->delete(); Vcard::where('tenant_id', $user->tenant_id)->delete(); MultiTenant::where('id', $user->tenant_id)->delete(); $user->delete(); return $this->sendSuccess('User deleted successfully.'); } return $this->sendError('Seems, you are not allowed to access this record.'); } /** * @return Application|RedirectResponse|Redirector */ public function impersonate(User $user): RedirectResponse { getLogInUser()->impersonate($user); return redirect(route('admin.dashboard')); } /** * @return Application|RedirectResponse|Redirector */ public function impersonateLeave(): RedirectResponse { getLogInUser()->leaveImpersonation(); return redirect(route('users.index')); } /** * @return Application|Factory|View */ public function editProfile(): \Illuminate\View\View { $user = Auth::user(); return view('profile.index', compact('user')); } public function updateProfile(UpdateUserProfileRequest $request): RedirectResponse { $this->userRepo->updateProfile($request->all()); $verifiedUser = EmailVerification::where('user_id', getLogInUserId())->first(); if ($verifiedUser) { Flash::success(__('messages.placeholder.email_verification')); } else { Flash::success(__('messages.flash.user_profile')); } return redirect(route('profile.setting')); } public function changePassword(UpdateChangePasswordRequest $request): JsonResponse { $input = $request->all(); try { /** @var User $user */ $user = Auth::user(); if (! Hash::check($input['current_password'], $user->password)) { return $this->sendError(__('messages.flash.current_invalid')); } $input['password'] = Hash::make($input['new_password']); $user->update($input); return $this->sendSuccess(__('messages.flash.password_update')); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function changeUserPassword(UpdateUserPasswordRequest $request, User $user): JsonResponse { $input = $request->all(); try { $input['password'] = Hash::make($input['new_password']); $this->userRepo->update($input, $user); $data = [ 'name' => $user->full_name, 'toName' => getLogInUser()->full_name, ]; Mail::to($user->email) ->send(new ChangePasswordMail('emails.change_password_mail', __('messages.flash.password_update'), $data)); return $this->sendSuccess(__('messages.flash.password_update')); } catch (Exception $e) { throw new UnprocessableEntityHttpException($e->getMessage()); } } public function changeLanguage(Request $request): JsonResponse { $input = $request->all(); $user = Auth::user(); if ($user !== null) { $user->update($input); } return $this->sendSuccess(__('messages.flash.language_update')); } public function changeMode(): RedirectResponse { $user = Auth::user(); if ($user !== null) { $user->update([ 'theme_mode' => ! $user->theme_mode, ]); } return redirect()->back(); } public function userDelete(User $user) { $result = $this->userRepo->userDataDelete($user); if ($result) { return Redirect::route('home'); } return $this->sendError('Seems, you are not allowed to access this record.'); } public function updateSteps($steps) { $user = getLogInUser(); $user->steps = $steps; $user->update(); return response()->json(['message' => 'Steps updated successfully']); } } Http/Controllers/CurrencyController.php000064400000000603152164577510014354 0ustar00validate([ 'file' => 'required|file|mimes:zip' ]); $file = $request->file('file'); $filePathInfo = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME); $extractionPath = base_path('Modules/'); $moduleFolder = $extractionPath . $filePathInfo; if (is_dir($moduleFolder)) { return $this->sendError(__('messages.addon.module_folder_already_exists')); } $isExistFiles = [ $filePathInfo . '/' . 'composer.json', $filePathInfo . '/' . 'Providers/RouteServiceProvider.php' ]; $zip = new ZipArchive; if ($zip->open($file) === TRUE) { $fileNames = []; for ($i = 0; $i < $zip->numFiles; $i++) { $fileNames[] = $zip->getNameIndex($i); } $checkFiles = []; foreach ($isExistFiles as $isExistFile) { if (!in_array($isExistFile, $fileNames)) { $checkFiles[] = $isExistFile; } } $zip->close(); if (!empty($checkFiles)) { return $this->sendError(__('messages.addon.zip_required_file')); } if ($zip->open($file) === TRUE) { $zip->extractTo($extractionPath); $zip->close(); $addOn = AddOn::updateOrCreate([ 'name' => $filePathInfo, ]); $content = file_get_contents(base_path("modules_statuses.json")); $content = json_decode($content, true); $content[$filePathInfo] = true; file_put_contents(base_path("modules_statuses.json"), json_encode($content)); } else { return $this->sendError(__('messages.addon.failed_to_extraction')); } \Artisan::call('module:migrate', ['--force' => true]); return $this->sendSuccess(__('messages.addon.addon_uploaded_successfully')); } else { return $this->sendError(__('messages.addon.failed_to_open')); } } public function update($id) { $addOnModule = AddOn::find($id); if (!$addOnModule) { return $this->sendError(__('messages.addon.module_not_found')); } $addOnModule->status = !$addOnModule->status; $addOnModule->save(); return $this->sendSuccess('Module status Updated successfully'); } } Http/Controllers/MailSettingController.php000064400000003454152164577510015011 0ustar00all(); $mailSetting = MailSetting::first(); if ($mailSetting) { $mailSetting->update($input); } else { MailSetting::create($input); } $envFilePath = base_path('.env'); $envFileContent = file_get_contents($envFilePath); $envFileContent = preg_replace('/^MAIL_MAILER=.*/m', 'MAIL_MAILER=' . strtolower(MailSetting::TYPE[$request->mail_protocol]), $envFileContent); $envFileContent = preg_replace('/^MAIL_HOST=.*/m', "MAIL_HOST={$request['mail_host']}", $envFileContent); $envFileContent = preg_replace('/^MAIL_PORT=.*/m', "MAIL_PORT={$request['mail_port']}", $envFileContent); $envFileContent = preg_replace('/^MAIL_USERNAME=.*/m', "MAIL_USERNAME={$request['mail_username']}", $envFileContent); $envFileContent = preg_replace('/^MAIL_PASSWORD=.*/m', "MAIL_PASSWORD={$request['mail_password']}", $envFileContent); $envFileContent = preg_replace('/^MAIL_ENCRYPTION=.*/m', 'MAIL_ENCRYPTION=' . strtolower(MailSetting::ENCRYPTION_TYPE[$request->mail_encryption]), $envFileContent); $envFileContent = preg_replace('/^MAIL_FROM_ADDRESS=.*/m', "MAIL_FROM_ADDRESS={$request['sender_email_address']}", $envFileContent); file_put_contents($envFilePath, $envFileContent); Flash::success(__('messages.vcard.mail_settings') . ' ' . __('messages.flash.vcard_update')); return Redirect::back(); } } Http/Controllers/SubscriptionController.php000064400000036516152164577510015262 0ustar00subscriptionRepo = $subscriptionRepo; } /** * @return Application|Factory|View */ public function index(Request $request): \Illuminate\View\View { $currentPlan = getCurrentSubscription(); $days = $remainingDay = ''; if ($currentPlan->ends_at > Carbon::now()) { $days = Carbon::parse($currentPlan->ends_at)->diffInDays(); $remainingDay = $days . ' Days'; } if ($days >= 30 && $days <= 365) { $remainingDay = ''; $months = floor($days / 30); $extraDays = $days % 30; if ($extraDays > 0) { $remainingDay .= $months . ' Month ' . $extraDays . ' Days'; } else { $remainingDay .= $months . ' Month '; } } if ($days >= 365) { $remainingDay = ''; $years = floor($days / 365); $extraMonths = floor($days % 365 / 30); $extraDays = floor($days % 365 % 30); if ($extraMonths > 0 && $extraDays < 1) { $remainingDay .= $years . ' Years ' . $extraMonths . ' Month '; } elseif ($extraDays > 0 && $extraMonths < 1) { $remainingDay .= $years . ' Years ' . $extraDays . ' Days'; } elseif ($years > 0 && $extraDays > 0 && $extraMonths > 0) { $remainingDay .= $years . ' Years ' . $extraMonths . ' Month ' . $extraDays . ' Days'; } else { $remainingDay .= $years . ' Years '; } } return view('subscription.index', compact('currentPlan', 'remainingDay')); } public function choosePaymentType($planId, $context = null, $fromScreen = null) { $currentSubscription = getCurrentSubscription(); $customSelectId = request()->get('customFieldId'); $customField = PlanCustomField::find($customSelectId); if ($customField) { if (!$currentSubscription->isExpired()) { if ((checkIfPlanIsInTrial($currentSubscription) || !checkIfPlanIsInTrial($currentSubscription)) && $customField->custom_vcard_price <= 0) { Flash::error(__('messages.placeholder.cannot_switch_to_zero')); return Redirect::back(); } } } $cashPaymentPlan = Subscription::where('tenant_id', Auth::user()->tenant_id)->where('payment_type', 'cash')->where('status', Subscription::PENDING)->first(); if ($cashPaymentPlan) { Flash::error(__('messages.wait_for_apporove_of_cash_payment_by_admin')); return Redirect::back(); } // code for checking the current plan is active or not, if active then it should not allow to choose that plan $subscriptionsPricingPlan = Plan::with('currency')->findOrFail($planId); if ($subscriptionsPricingPlan->currency && $subscriptionsPricingPlan->currency->currency_code === 'BRL') { return redirect()->route('asaas.checkout.show', $planId); } $paymentTypes = getPaymentGateway(); return view('subscription.payment_for_plan', compact('subscriptionsPricingPlan', 'paymentTypes', 'customSelectId', 'customField')); } /** * @return Application|Factory|View */ public function upgrade() { $cashPaymentPlan = Subscription::where('tenant_id', Auth::user()->tenant_id)->where('payment_type', 'cash')->where('status', Subscription::PENDING)->first(); if ($cashPaymentPlan && !$cashPaymentPlan->isExpired()) { Flash::error(__('messages.wait_for_apporove_of_cash_payment_by_admin')); return Redirect::back(); } $plans = Plan::with(['currency', 'planFeature'])->whereStatus(Plan::IS_ACTIVE)->whereIsDefault(Plan::IS_DEACTIVE)->get(); $monthlyPlans = $plans->where('frequency', Plan::MONTHLY); $yearlyPlans = $plans->where('frequency', Plan::YEARLY); $unLimitedPlans = $plans->where('frequency', Plan::UNLIMITED); return view( 'subscription.upgrade', compact('monthlyPlans', 'yearlyPlans', 'unLimitedPlans') ); } public function setPlanZero(Plan $plan): JsonResponse { try { DB::beginTransaction(); Subscription::whereTenantId(getLogInTenantId()) ->whereIsActive(true)->update(['is_active' => false]); $expiryDate = setExpiryDate($plan); Subscription::create([ 'plan_id' => $plan->id, 'ends_at' => $expiryDate, 'status' => true, ]); DB::commit(); return $this->sendSuccess(__('messages.placeholder.subscribed_plan')); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function manualPay(Request $request) { $input = $request->all(); if (isset($input['couponCodeId'])) { $couponId = $input['couponCodeId']; $coupon = CouponCode::find($couponId); if ($coupon) { if ($coupon->coupon_limit != null) { $newLimit = $coupon->coupon_limit_left - 1; CouponCode::where('id', $couponId)->update(['coupon_limit_left' => $newLimit]); } } } if (isset($input['attachment']) && $input['attachment']->getClientMimeType() == 'text/php') { return $this->sendError('PHP file is not valid type for attachment'); } $this->subscriptionRepo->manageSubscription($input); $data = Subscription::whereTenantId(getLogInTenantId())->orderBy('created_at', 'desc')->first(); Subscription::whereId($data->id)->update(['payment_type' => 'Cash', 'status' => Subscription::PENDING]); $is_on = Setting::where('key', 'is_manual_payment_guide_on')->first(); $manual_payment_guide_step = Setting::where('key', 'manual_payment_guide')->first(); $user = \Illuminate\Support\Facades\Auth::user(); $super_admin_data = [ 'super_admin_msg' => $user->full_name . ' created request for payment of ' . $data->plan->currency->currency_icon . '' . $data->payable_amount, 'attachment' => $data->attachment ?? '', 'notes' => $data->notes ?? '', 'id' => $data->id, ]; if ($is_on['value'] == '1') { Mail::to($user['email']) ->send(new ManualPaymentGuideMail($manual_payment_guide_step['value'], $user)); $email = getSuperAdminSettingValue('email'); Mail::to($email) ->send(new SuperAdminManualPaymentMail($super_admin_data, $email)); } return $this->sendSuccess(__('messages.placeholder.subscribed_plan_wait')); } public function downloadAttachment($id): \Illuminate\Http\Response|Application|\Illuminate\Contracts\Routing\ResponseFactory { $subscription = Subscription::findOrFail($id); [$file, $headers] = $this->subscriptionRepo->downloadAttachment($subscription); return response($file, 200, $headers); } public function downloadMailAttachment($id): BinaryFileResponse { $subscription = Subscription::whereTenantId(getLogInTenantId())->findOrFail($id); $headers = [ 'Content-Type' => $subscription->media[0]->mime_type, 'Content-Description' => 'File Transfer', 'Content-Disposition' => "attachment; filename={$subscription->media[0]->file_name}", 'filename' => $subscription->media[0]->file_name, ]; return response()->download($subscription->media[0]->getPath(), $subscription->media[0]->file_name, $headers); } /** * @return Application|Factory|View */ public function cashPlan(): \Illuminate\View\View { return view('sadmin.planPyment.index'); } public function planStatus(Request $request): JsonResponse { if ($request->status == Subscription::ACTIVE) { $user = User::whereTenantId($request->tenant_id)->latest()->first(); if ($user) { // send mail notification $subscription = Subscription::findOrFail($request->id); $planName = $subscription->plan->name; $paymentAmount = $subscription->payable_amount; $userEmail = $user->email; $planName = $subscription->plan->name; $firstName = $user->first_name; $lastName = $user->last_name; $emailData = [ 'subscriptionId' => $request->id, 'subscriptionAmount' => $paymentAmount, 'transactionID' => $request->session_id, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if ($affiliateAmountType == 1) { AffiliateUser::where('user_id', $user->id)->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount, 'is_verified' => 1]); } else if ($affiliateAmountType == 2) { $amount = $paymentAmount * $affiliateAmount / 100; AffiliateUser::where('user_id', $user->id)->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount, 'is_verified' => 1]); } } Subscription::whereTenantId($request->tenant_id)->where('id', '!=', $request->id)->where('status', '!=', Subscription::REJECT)->update(['status' => Subscription::INACTIVE]); } Subscription::where('id', $request->id)->update([ 'status' => $request->status, ]); $user = User::whereTenantId($request->tenant_id)->first(); manageVcards($user); return $this->sendSuccess(__('messages.placeholder.payment_received')); } public function purchaseSubscription(Request $request) { $input = $request->all(); $result = $this->subscriptionRepo->purchaseSubscriptionForStripe($input); // returning from here if the plan is free. if (isset($result['status']) && $result['status'] == true) { manageVcards(); return $this->sendSuccess($result['subscriptionPlan']->name . ' ' . __('messages.subscription.has_been_subscribed')); } else { if (isset($result['status']) && $result['status'] == false) { return $this->sendError(__('messages.placeholder.cannot_switch_to_zero')); } } return $this->sendResponse($result, 'Session created successfully.'); } /** * @return Application|Factory|View * * @throws ApiErrorException */ public function paymentSuccess(Request $request): \Illuminate\View\View { AffiliateUser::whereUserId(getLogInUserId())->withoutGlobalScopes() ->update(['is_verified' => 1]); /** @var SubscriptionRepository $subscriptionRepo */ $subscriptionRepo = app(SubscriptionRepository::class); $subscription = $subscriptionRepo->paymentUpdate($request); manageVcards(); Flash::success($subscription->plan->name . ' ' . __('messages.subscription.has_been_subscribed')); return view('sadmin.plans.payment.paymentSuccess'); } public function handleFailedPayment(): \Illuminate\View\View { $subscriptionPlanId = session('subscription_plan_id'); /** @var SubscriptionRepository $subscriptionRepo */ $subscriptionRepo = app(SubscriptionRepository::class); $subscriptionRepo->paymentFailed($subscriptionPlanId); Flash::error(__('messages.placeholder.unable_to_process_payment')); return view('sadmin.plans.payment.paymentcancel'); } /** * @return Application|Factory|View */ public function userSubscribedPlan(): \Illuminate\View\View { return view('sadmin.subscriptionPlan.index'); } public function userSubscribedPlanEdit(Request $request): JsonResponse { $subscription = Subscription::with([ 'plan:id,name,currency_id', 'tenant.user', 'plan.currency', ])->whereId($request->id)->first(); $paymentTypeName = Subscription::PAYMENT_GATEWAY[$subscription->payment_type] ?? ''; return $this->sendResponse($subscription, $paymentTypeName, 'Subscription successfully retrieved.'); } public function userSubscribedPlanUpdate(Request $request): JsonResponse { $endDate = $request->end_date; if (empty($request->end_date)) { return $this->sendError(__('messages.subscription.end_date_required')); } $endDate = $request->end_date; $format = getSuperAdminSettingValue('datetime_method'); $formattedDate = ($format == 1) ? Carbon::createFromFormat('d M, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 2) ? Carbon::createFromFormat('M d, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 3) ? Carbon::createFromFormat('d/m/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 4) ? Carbon::createFromFormat('Y/m/d', $endDate)->format('Y-m-d H:i:s') : (($format == 5) ? Carbon::createFromFormat('m/d/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 6) ? Carbon::createFromFormat('Y-m-d', $endDate)->format('Y-m-d H:i:s') : Carbon::parse($endDate)->format('Y-m-d H:i:s') ) ) ) ) ); $subscription = Subscription::where('id', $request->id)->update([ 'ends_at' => $formattedDate, 'status' => Subscription::ACTIVE, ]); return $this->sendResponse($subscription, __('messages.placeholder.subscription_date_updated')); } } Http/Controllers/HomeController.php.bak000064400000016004152164577510014210 0ustar00where('language', $language)->get(); $faqs = FrontFAQs::where('language', $language)->first(); $metas = Meta::first(); if (! empty($metas)) { $metas = $metas->toArray(); } $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $aboutUS = AboutUs::with('media')->where('language', $language)->get()->toArray(); $features = Feature::where('language', $language)->get(); $plans = Plan::with(['currency', 'planFeature', 'hasZeroPlan', 'planCustomFields'])->whereIsDefault(Plan::IS_DEACTIVE)->whereStatus(Plan::IS_ACTIVE)->get(); $homePage = getSuperAdminSettingValue('home_page_theme') == 1 ? 'home' : 'home1'; $view = getSuperAdminSettingValue('is_front_page') ? view("front.home.$homePage", compact('plans', 'setting', 'features', 'testimonials', 'aboutUS', 'metas', 'faqs')) : redirect(route('login')); return $view; } public function store(CreateContactRequest $request) { $input = $request->all(); $user = getSuperAdminEmail(); ContactUs::create($input); Mail::to($user) ->send(new LandingContactUsMail( $input, __('messages.placeholder.message_sent') )); return $this->sendSuccess(__('messages.placeholder.message_sent')); } /** * @return Application|Factory|View */ public function showContactUs(): \Illuminate\View\View { return view('sadmin.contactus.index'); } public function destroyContactUs(ContactUs $enquiry): JsonResponse { $enquiry->delete(); return $this->sendSuccess(__('messages.flash.enquiry_delete')); } public function themeConfiguration(): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); $view = view('settings.theme_config.index', compact('setting')); return $view; } public function changeLanguage(Request $request): RedirectResponse { Session::put('languageName', $request->input('languageName')); return redirect()->back(); } public function banner(Request $request): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); return view('sadmin.supportBanner.index', compact('setting')); } public function appDownload(Request $request): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key'); return view('sadmin.supportMobile.index', compact('setting')); } /** * @return Application|Factory|View|RedirectResponse|Redirector */ public function termCondition() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); $view = view('front.terms_conditions', compact('setting', 'faqs')); return $view; } /** * @return Application|Factory|View */ public function privacyPolicy(): \Illuminate\View\View { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); return view('front.privacy_policy', compact('setting', 'faqs')); } public function declineCookie() { session(['declined' => 1]); } public function vcardTemplates() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); return view('front.home.vcards-templates', compact('setting', 'faqs')); } public function forntFaq() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $blogs = Blog::where('status', '1')->get(); $faq = FrontFAQs::where('language', $language)->get(); $faqs = FrontFAQs::where('language', $language)->first(); if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-faq1', compact('setting', 'faq', 'faqs', 'blogs')); } else { return view('front.home.home-faq', compact('setting', 'faq', 'faqs', 'blogs')); } } public function ForntBlog() { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $blogs = Blog::where('status', '1')->get(); $faqs = FrontFAQs::where('language', $language)->first(); if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-blog1', compact('blogs', 'faqs', 'setting')); } else { return view('front.home.home-blog', compact('blogs', 'faqs', 'setting')); } } public function ForntBlogShow($slug) { $language = checkFrontLanguageSession(); $setting = Setting::where('language', $language)->orWhere('language', '')->pluck('value', 'key')->toArray(); $faqs = FrontFAQs::where('language', $language)->first(); $blog = Blog::where('slug', $slug)->first(); if (!$blog->status) { abort(404); } if (getSuperAdminSettingValue('home_page_theme') == 2) { return view('front.home.home-blog-show1', compact('blog', 'faqs', 'setting')); } else { return view('front.home.home-blog-show', compact('blog', 'faqs', 'setting')); } } } Http/Controllers/CityController.php000064400000002767152164577510013507 0ustar00cityRepository = $cityRepository; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { return view('sadmin.cities.index'); } public function store(CreateCityRequest $request): JsonResponse { $input = $request->all(); $state = $this->cityRepository->create($input); return $this->sendResponse($state, __('messages.flash.city_create')); } public function edit(City $city): JsonResponse { return $this->sendResponse($city, 'City successfully retrieved.'); } public function update(UpdateCityRequest $request, City $city): JsonResponse { $input = $request->all(); $this->cityRepository->update($input, $city->id); return $this->sendSuccess(__('messages.flash.city_update')); } public function destroy(City $city): JsonResponse { $city->delete(); return $this->sendSuccess('City deleted successfully.'); } } Http/Controllers/UserSettingController.php000064400000004651152164577510015045 0ustar00userSettingRepository = $userSettingRepository; } /** * @return Application|Factory|View */ public function index(Request $request): \Illuminate\View\View { $sectionName = ($request->get('section') === null) ? 'general' : $request->get('section'); $setting = UserSetting::where('user_id', getLogInUserId())->pluck('value', 'key')->toArray(); return view("user-settings.$sectionName",compact('setting', 'sectionName')); } public function update(UpdateUserSettingRequest $request): RedirectResponse { $id = Auth::id(); if(isset($request->time_format)){ $setting = UserSetting::where('user_id', getLogInUserId())->where('key', 'time_format')->first(); } $userVcards = Vcard::where('tenant_id', getLogInTenantId())->pluck('id')->toArray(); $bookedAppointment = ScheduleAppointment::whereIn('vcard_id', $userVcards)->where('status', ScheduleAppointment::PENDING)->count(); if (! empty($setting) && $bookedAppointment > 0 && $setting->value != $request->time_format) { Flash::error(__('messages.flash.can_not_change_time_format')); return Redirect::back(); } $this->userSettingRepository->update($request->all(), $id); Flash::success(__('messages.flash.setting_update')); return Redirect::back(); } public function paymentMethodUpdate(Request $request){ $id = Auth::id(); $this->userSettingRepository->paymentMethodUpdate($request->all(), $id); Flash::success(__('messages.flash.setting_update')); return Redirect::back(); } } Http/Controllers/CustomLinkController.php000064400000004577152164577510014670 0ustar00customLinkRepo = $customLinkRepo; } /** * Display a listing of the resource. */ public function index() { // } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(CreateCustomLinkRequest $request) { $input = $request->all(); $customLink = $this->customLinkRepo->store($input ); return $this->sendResponse($customLink, __('messages.flash.custom_link_created')); } /** * Display the specified resource. */ public function show(CustomLink $customLink) { // } /** * Show the form for editing the specified resource. */ public function edit(CustomLink $customLink) { return $this->sendResponse($customLink, 'Custom Link successfully retrieved.'); } /** * Update the specified resource in storage. */ public function update(UpdateCustomLinkRequest $request,$id) { $input = $request->all(); $customLink = $this->customLinkRepo->update($input, $id); return $this->sendResponse($customLink, __('messages.flash.custom_link_updated')); } /** * Remove the specified resource from storage. */ public function destroy(CustomLink $customLink) { $customLink->delete(); return $this->sendSuccess(__('messages.flash.custom_link_deleted')); } public function updateShowAsButton(CustomLink $customLink) { $customLink->update([ 'show_as_button' => ! $customLink->show_as_button, ]); return $this->sendSuccess(__('messages.flash.show_as_button')); } public function updateOpenNewTab(CustomLink $customLink) { $customLink->update([ 'open_new_tab' => ! $customLink->open_new_tab, ]); return $this->sendSuccess(__('messages.flash.open_new_tab')); } } Http/Controllers/CountryController.php000064400000003355152164577510014234 0ustar00countryRepository = $countryRepository; } public function index(): View { return view('sadmin.countries.index'); } public function store(CreateCountryRequest $request): JsonResponse { $input = $request->all(); $input['short_code'] = strtoupper($input['short_code']); $country = $this->countryRepository->create($input); return $this->sendResponse($country, __('messages.flash.country_create')); } public function edit(Country $country): JsonResponse { return $this->sendResponse($country, 'Country successfully retrieved.'); } public function update(UpdateCountryRequest $request, Country $country): JsonResponse { $input = $request->all(); $input['short_code'] = strtoupper($input['short_code']); $this->countryRepository->update($input, $country->id); return $this->sendSuccess(__('messages.flash.country_update')); } public function destroy(Country $country): JsonResponse { $states = State::whereCountryId($country->id)->count(); if ($states > 0) { return $this->sendError(__('messages.flash.country_used')); } $country->delete(); return $this->sendSuccess('Country deleted successfully.'); } } Http/Controllers/OnboardingController.php000066400000007737152164577510014665 0ustar00has('social_url') && !$request->has('sources')) { $request->merge(['sources' => [$request->input('social_url')]]); } $request->validate([ 'sources' => ['required', 'array', 'min:1', 'max:5'], 'sources.*' => ['required', 'url', 'max:500', 'distinct'], ], [ 'sources.required' => 'Fornea pelo menos uma URL de rede social ou site.', 'sources.max' => 'Pode fornecer no mximo 5 fontes.', 'sources.*.url' => 'Uma das URLs fornecidas no vlida.', 'sources.*.distinct' => 'No repita URLs.', ]); $user = Auth::user(); $sources = array_filter($request->sources, fn($s) => !empty(trim($s))); // Determine primary URL for backward compatibility $primaryUrl = $sources[0] ?? ''; // Create VCard skeleton $vcard = Vcard::create([ 'user_id' => $user->id, 'tenant_id' => $user->tenant_id ?? null, 'name' => $user->name, 'url_alias' => 'card-' . uniqid(), 'status' => 'pending_payment', 'ai_status' => 'pending', 'ai_social_url' => json_encode(array_values($sources), JSON_UNESCAPED_SLASHES), 'payment_deadline' => now()->addHours(24), 'template_id' => 1, ]); Log::info("[Onboarding] VCard#{$vcard->id} created. Sources: " . implode(', ', $sources)); // Dispatch AI job with full sources array GenerateAiCardJob::dispatch($user, $sources, $vcard->id) ->onQueue('ai-generation'); return redirect()->route('vcard.processing', ['vcard' => $vcard->id]) ->with('message', count($sources) > 1 ? 'A IA est a analisar ' . count($sources) . ' fontes para criar o seu carto...' : 'A IA est a preparar o seu carto...' ); } /** Show processing screen */ public function processing(Vcard $vcard) { if ($vcard->user_id !== Auth::id()) { abort(403); } return view('vcard.processing', compact('vcard')); } /** API: Poll AI status */ public function aiStatus(Vcard $vcard): JsonResponse { if ($vcard->user_id !== Auth::id()) { return response()->json(['error' => 'Unauthorized'], 403); } $aiData = null; if ($vcard->ai_status === 'completed' && $vcard->ai_data) { $decoded = json_decode($vcard->ai_data, true); $aiData = [ 'template_id' => $decoded['template_id'] ?? null, 'color_primary' => $decoded['color_primary'] ?? null, 'confidence' => $decoded['confidence'] ?? null, 'brand_personality' => $decoded['brand_personality'] ?? null, ]; } return response()->json([ 'vcard_id' => $vcard->id, 'ai_status' => $vcard->ai_status, 'template_id' => $vcard->template_id, 'ai_data' => $aiData, 'redirect_url' => $vcard->ai_status === 'completed' ? route('user.vcard.edit', $vcard->id) : null, ]); } } Http/Controllers/NfcCardOrderController.php000064400000002652152164577510015064 0ustar00select('*')->findOrFail($nfcOrder); return view('sadmin.nfc_card_order.show', compact('nfcCardOrder')); } public function downloadLogo($id) { $nfcCardOrder = NfcOrders::findOrFail($id); $mediaCollection = $nfcCardOrder->media; if (! empty($mediaCollection)) { $mediaItem = $mediaCollection->first(); $mediaPath = $mediaItem->getPath(); if (config('app.media_disc') === 'public') { $mediaPath = (Str::after($mediaItem->getUrl(), '/uploads')); } $file = Storage::disk(config('app.media_disc'))->get($mediaPath); $headers = [ 'Content-Type' => $mediaItem->mime_type, 'Content-Description' => 'File Transfer', 'Content-Disposition' => "attachment; filename={$mediaItem->file_name}", 'filename' => $mediaItem->file_name, ]; return response($file, 200, $headers); } } } Http/Controllers/Auth/AuthenticatedSessionController.php000064400000002055152164577510017614 0ustar00authenticate(); $request->session()->regenerate(); return redirect()->intended(RouteServiceProvider::HOME); } /** * Destroy an authenticated session. */ public function destroy(Request $request): RedirectResponse { Auth::guard('web')->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } } Http/Controllers/Auth/EmailVerificationNotificationController.php000064400000001225152164577510021425 0ustar00user()->hasVerifiedEmail()) { return redirect()->intended(RouteServiceProvider::HOME); } $request->user()->sendEmailVerificationNotification(); return back()->with('status', 'verification-link-sent'); } } Http/Controllers/Auth/EmailVerificationPromptController.php000064400000001123152164577510020255 0ustar00user()->hasVerifiedEmail() ? redirect()->intended(RouteServiceProvider::HOME) : view('auth.verify-email'); } } Http/Controllers/Auth/VerifyEmailController.php000064400000001466152164577510015707 0ustar00user()->hasVerifiedEmail()) { return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); } if ($request->user()->markEmailAsVerified()) { event(new Verified($request->user())); } return redirect()->intended(RouteServiceProvider::HOME.'?verified=1'); } } Http/Controllers/Auth/RegisteredUserController.php000064400000002507152164577510016424 0ustar00validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:'.User::class], 'password' => ['required', 'confirmed', Rules\Password::defaults()], ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); event(new Registered($user)); Auth::login($user); return redirect(RouteServiceProvider::HOME); } } Http/Controllers/Auth/PasswordResetLinkController.php000064400000002443152164577510017112 0ustar00validate([ 'email' => ['required', 'email'], ]); // We will send the password reset link to this user. Once we have attempted // to send the link, we will examine the response then see the message we // need to show to the user. Finally, we'll send out a proper response. $status = Password::sendResetLink( $request->only('email') ); return $status == Password::RESET_LINK_SENT ? back()->with('status', __($status)) : back()->withInput($request->only('email')) ->withErrors(['email' => __($status)]); } } Http/Controllers/Auth/error_log000064400000017052152164577510012631 0ustar00[17-Jun-2026 01:40:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/PasswordResetLinkController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/PasswordResetLinkController.php on line 15 [17-Jun-2026 01:40:30 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php on line 13 [17-Jun-2026 01:40:31 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php on line 9 [17-Jun-2026 01:40:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php on line 10 [17-Jun-2026 01:40:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php on line 18 [17-Jun-2026 01:40:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php on line 14 [17-Jun-2026 01:40:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php:30 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php on line 30 [17-Jun-2026 01:40:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php:21 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php on line 21 [19-Jun-2026 18:40:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php on line 13 [19-Jun-2026 18:40:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php on line 9 [19-Jun-2026 18:40:50 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php on line 18 [19-Jun-2026 18:40:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php on line 14 [19-Jun-2026 18:40:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php on line 10 [19-Jun-2026 18:40:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php:30 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php on line 30 [19-Jun-2026 18:40:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php:21 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php on line 21 [16-Jul-2026 10:02:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationNotificationController.php on line 10 [16-Jul-2026 10:03:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php:21 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/AuthenticatedSessionController.php on line 21 [16-Jul-2026 11:31:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/EmailVerificationPromptController.php on line 9 [16-Jul-2026 18:45:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php:30 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/RegisteredUserController.php on line 30 [16-Jul-2026 23:02:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/NewPasswordController.php on line 18 [17-Jul-2026 00:13:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/ConfirmablePasswordController.php on line 13 [17-Jul-2026 00:17:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/VerifyEmailController.php on line 14 [17-Jul-2026 05:39:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Auth/PasswordResetLinkController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Auth/PasswordResetLinkController.php on line 15 Http/Controllers/Auth/NewPasswordController.php000064400000004214152164577510015741 0ustar00 $request]); } /** * Handle an incoming new password request. * * @throws \Illuminate\Validation\ValidationException */ public function store(Request $request): RedirectResponse { $request->validate([ 'token' => ['required'], 'email' => ['required', 'email'], 'password' => ['required', 'confirmed', Rules\Password::defaults()], ]); // Here we will attempt to reset the user's password. If it is successful we // will update the password on an actual user model and persist it to the // database. Otherwise we will parse the error and return the response. $status = Password::reset( $request->only('email', 'password', 'password_confirmation', 'token'), function ($user) use ($request) { $user->forceFill([ 'password' => Hash::make($request->password), 'remember_token' => Str::random(60), ])->save(); event(new PasswordReset($user)); } ); // If the password was successfully reset, we will redirect the user back to // the application's home authenticated view. If there is an error we can // redirect them back to where they came from with their error message. return $status == Password::PASSWORD_RESET ? redirect()->route('login')->with('status', __($status)) : back()->withInput($request->only('email')) ->withErrors(['email' => __($status)]); } } Http/Controllers/Auth/ConfirmablePasswordController.php000064400000002037152164577510017432 0ustar00validate([ 'email' => $request->user()->email, 'password' => $request->password, ])) { throw ValidationException::withMessages([ 'password' => __('auth.password'), ]); } $request->session()->put('auth.password_confirmed_at', time()); return redirect()->intended(RouteServiceProvider::HOME); } } Http/Controllers/FrontFAQsController.php000064400000003477152164577510014401 0ustar00frontFaqsRepo = $frontFaqsRepo; } /** * Display a listing of the resource. */ public function index() { return view('sadmin.faqs.index'); } /** * Store a newly created resource in storage. */ public function store(CreateFrontFaqRequest $request) { $input = $request->all(); $faqs = $this->frontFaqsRepo->store($input); return $this->sendResponse($faqs, __('messages.faqs.create_front_faqs')); } /** * Show the form for editing the specified resource. */ public function edit(string $id): JsonResponse { $language = getLogInUser()->language; $faq = FrontFAQs::where(['id'=> $id,'language' => $language])->first(); return $this->sendResponse($faq, 'FAQs successfully retrieved.'); } /** * Update the specified resource in storage. */ public function update(CreateFrontFaqRequest $request, string $id): JsonResponse { $input = $request->all(); $testimonial = $this->frontFaqsRepo->update($input, $request->faqs_id); return $this->sendResponse($testimonial, __('messages.faqs.update_front_faqs')); } /** * Remove the specified resource from storage. */ public function destroy(string $id): JsonResponse { FrontFAQs::where('id', $id)->delete(); return $this->sendSuccess('FAQs deleted successfully.'); } } Http/Controllers/UserDashboardController.php000064400000000372152164577510015313 0ustar00all(); $endDate = $request->date; $format = getSuperAdminSettingValue('datetime_method'); $input['date'] = ($format == 1) ? Carbon::createFromFormat('d M, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 2) ? Carbon::createFromFormat('M d, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 3) ? Carbon::createFromFormat('d/m/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 4) ? Carbon::createFromFormat('Y/m/d', $endDate)->format('Y-m-d H:i:s') : (($format == 5) ? Carbon::createFromFormat('m/d/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 6) ? Carbon::createFromFormat('Y-m-d', $endDate)->format('Y-m-d H:i:s') : Carbon::parse($endDate)->format('Y-m-d H:i:s') ) ) ) ) ); try { DB::beginTransaction(); /** @var Vcard $vcard */ $vcard = Vcard::with('tenant.user')->where('id', $input['vcard_id'])->first(); $input['toName'] = $vcard->fullName > 1 ? $vcard->fullName : $vcard->tenant->user->fullName; $input['vcard_name'] = $vcard->name; $userId = $vcard->tenant->user->id; if (isset($input['payment_method'])) { //Stripe if ($input['payment_method'] == Appointment::STRIPE) { /** @var AppointmentRepository $repo */ $repo = App::make(AppointmentRepository::class); $result = $repo->userCreateSession($userId, $vcard, $input); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.stripe_created')); } //Phonepe if ($input['payment_method'] == Appointment::PHONEPE) { $currency = $input['currency_code']; if ($currency != "INR") { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_phonepe')); } /** @var UserPhonepeController $phonepe */ $phonepe = App::make(UserPhonepeController::class); $result = $phonepe->appointmentBook($userId, $vcard, $input); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.phonepe_created')); } // PAYSTACK if ($input['payment_method'] == Appointment::PAYSTACK) { if (isset($input['currency_code']) && ! in_array( strtoupper($input['currency_code']), getPayStackSupportedCurrencies() )) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_paystack')); } $currency = $input['currency_code']; $amount = $input['amount']; $currencyCode = $input['currency_code']; $clientId = getUserSettingValue('paystack_key', $userId); $clientSecret = getUserSettingValue('paystack_secret', $userId); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); $data = [ 'email' => $input['email'], 'orderID' => $vcard->id, 'amount' => $amount * 100, 'quantity' => 1, 'currency' => $currency, 'reference' => Paystack::genTranxRef(), 'metadata' => json_encode(['vcard_id' => $vcard->id]), ]; $result = Paystack::getAuthorizationUrl($data)->redirectNow(); session()->put(['appointment_details' => $input]); session(['vcard_user_id' => $userId, 'tenant_id' => $vcard->tenant->id, 'vcard_id' => $vcard->id]); $targetUrl = $result->getTargetUrl(); DB::commit(); return $this->sendResponse(['payment_method' => $input['payment_method'], $targetUrl], __('messages.placeholder.paystack_created')); } //flutterwave if ($input['payment_method'] == Appointment::FLUTTERWAVE) { $supportedCurrency = ['GBP', 'CAD', 'XAF', 'CLP', 'COP', 'EGP', 'EUR', 'GHS', 'GNF', 'KES', 'MWK', 'MAD', 'NGN', 'RWF', 'SLL', 'STD', 'ZAR', 'TZS', 'UGX', 'USD', 'XOF', 'ZMW']; if (isset($input['currency_code']) && ! in_array( strtoupper($input['currency_code']), $supportedCurrency )) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_flutterwave')); } /** @var UserFlutterwaveController $flutterwave */ $flutterwave = App::make(UserFlutterwaveController::class); $result = $flutterwave->userOnBoard($userId, $vcard, $input); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.flutterwave_created')); } //PayPal if ($input['payment_method'] == Appointment::PAYPAL) { if (isset($input['currency_code']) && ! in_array( strtoupper($input['currency_code']), getPayPalSupportedCurrencies() )) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported')); } /** @var PaypalController $payPalCont */ $payPalCont = App::make(PaypalController::class); $result = $payPalCont->userOnBoard($userId, $vcard, $input); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.paypal_created')); } //Manually if ($input['payment_method'] == Appointment::MANUALLY) { $currencyCode = $input['currency_code']; $currency = Currency::where('currency_code', $currencyCode)->first(); $appointmentTransaction = AppointmentTransaction::create([ 'vcard_id' => $input['vcard_id'], 'transaction_id' => null, 'currency_id' => $currency->id, 'amount' => $input['amount'], 'tenant_id' => $vcard->tenant->id, 'type' => Appointment::MANUALLY, 'status' => 0, 'meta' => json_encode([]), ]); $appointmentTransactionId = $appointmentTransaction->id; DB::commit(); $inputDate = Carbon::parse($input['date'])->format('Y-m-d'); ScheduleAppointment::create([ 'vcard_id' => $input['vcard_id'], 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'date' => $inputDate, 'from_time' => $input['from_time'], 'to_time' => $input['to_time'], 'remarks' => null, 'person_count' => null, 'payment_type' => Appointment::MANUALLY, 'status' => 0, 'appointment_tran_id' => $appointmentTransactionId, 'meta' => json_encode([]), ]); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], ], __('messages.placeholder.manual_payment')); } } /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($input, $vcardEmail); DB::commit(); setLocalLang(getLocalLanguage()); return $this->sendSuccess(__('messages.placeholder.appointment_created')); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } public function paymentStatus(Request $request): JsonResponse { try { $appointmentStatus = $request->status; $appointmentTransaction = ScheduleAppointment::find($request->id); $appointmentTranId = $appointmentTransaction->appointment_tran_id; AppointmentTransaction::where('id', $appointmentTranId)->update([ 'type' => $appointmentStatus, ]); return $this->sendSuccess(__('messages.placeholder.payment_status')); } catch (\Exception $e) { return $this->sendError($e->getMessage()); } } /** * @return Application|Factory|View */ public function appointmentsList(): \Illuminate\View\View { return view('appointment.list'); } /** * @return Application|Factory|View */ public function appointmentCalendar(Request $request) { if ($request->ajax()) { $data = $this->getCalendar(); return $this->sendResponse($data, 'Appointment calendar data retrieved successfully.'); } return view('appointment.appointment-calendar'); } /** * @return array */ public function getCalendar() { /** @var ScheduleAppointment $appointment */ $appointments = ScheduleAppointment::whereHas('vcard', function ($q) { $q->where('tenant_id', getLogInTenantId()); })->get(); $data = []; foreach ($appointments as $key => $appointment) { if (getUserSettingValue('time_format', getLogInUserId()) == UserSetting::HOUR_24) { $startTime = date('H:i', strtotime($appointment->from_time)); $endTime = date('H:i', strtotime($appointment->to_time)); $start = Carbon::createFromFormat( 'Y-m-d H:i', date('Y-m-d', strtotime($appointment->date)) . ' ' . $startTime ); $end = Carbon::createFromFormat( 'Y-m-d H:i', date('Y-m-d', strtotime($appointment->date)) . ' ' . $endTime ); } else { $startTime = date('h:i A', strtotime($appointment->from_time)); $endTime = date('h:i A', strtotime($appointment->to_time)); $start = Carbon::createFromFormat( 'Y-m-d h:i A', date('Y-m-d', strtotime($appointment->date)) . ' ' . $startTime ); $end = Carbon::createFromFormat( 'Y-m-d h:i A', date('Y-m-d', strtotime($appointment->date)) . ' ' . $endTime ); } $data[$key]['id'] = $appointment->id; if (getUserSettingValue('time_format', getLogInUserId()) == UserSetting::HOUR_24) { $data[$key]['startDateTime'] = $start->format('jS M, Y - H:i'); $data[$key]['endDateTime'] = $end->format('jS M, Y - H:i'); $data[$key]['title'] = date('H:i', strtotime($appointment->from_time)) . '-' . date( 'H:i', strtotime($appointment->to_time) ); } else { $data[$key]['startDateTime'] = $start->format('jS M, Y - h:i A'); $data[$key]['endDateTime'] = $end->format('jS M, Y - h:i A'); $data[$key]['title'] = date('h:i A', strtotime($startTime)) . '-' . date('h:i A', strtotime($endTime)); } $data[$key]['name'] = $appointment->name; $data[$key]['email'] = $appointment->email; $data[$key]['phone'] = is_null($appointment->phone) ? 'N/A' : $appointment->phone; $data[$key]['vcardName'] = $appointment->vcard->name; $data[$key]['start'] = $start->toDateTimeString(); $data[$key]['description'] = $appointment->vcard->description; $data[$key]['status'] = $appointment->vcard->status; $data[$key]['end'] = $end->toDateTimeString(); $data[$key]['color'] = '#FFF'; $data[$key]['className'] = [getStatusClassName($appointment->vcard->status)]; } return $data; } /** * @return mixed */ public function appointmentsUpdate(ScheduleAppointment $appointment) { $appointments = ScheduleAppointment::findOrFail($appointment->id); $appointments->update([ 'status' => ScheduleAppointment::COMPLETED, ]); $data['name'] = $appointment->name; $data['date'] = Carbon::parse($appointment->date)->format('d M, Y'); $data['from_time'] = $appointment->from_time; $data['to_time'] = $appointment->to_time; Mail::to($appointment->email) ->send(new AppointmentApproveMail($data)); return $this->sendSuccess(__('messages.flash.plan_status')); } public function destroy(ScheduleAppointment $appointment): JsonResponse { if ($appointment->appointment_tran_id == null) { $appointment->delete(); return $this->sendSuccess('Appointment deleted successfully.'); } return $this->sendError(__('messages.placeholder.paid_appointment_cant_delete')); } } Http/Controllers/FeatureController.php000064400000005050152164577510014156 0ustar00featureRepository = $featureRepository; } public function index(): \Illuminate\View\View { return view('settings.features.index'); } public function show($id) { // } public function edit(Feature $feature): \Illuminate\View\View { return view('settings.features.edit', compact('feature')); } public function new(): \Illuminate\View\View { return view('settings.features.new'); } public function update(UpdateFeatureRequest $request, $id): RedirectResponse { $input = $request->all(); $this->featureRepository->update($input, $id); Flash::success(__('messages.flash.feature_update')); return redirect(route('features.index')); } public function store(UpdateFeatureRequest $request): RedirectResponse { $input = $request->all(); // Get current language from logged-in user $language = getLogInUser()->language; $input['language'] = $language; // Validate unique slug for the language $this->validate($request, [ 'slug' => 'required|unique:features,slug,NULL,id,language,' . $language, ]); // Generate slug if not provided if (empty($input['slug'])) { $count = Feature::where('language', $language)->count(); $input['slug'] = $language . '.features.' . ($count + 1); } else { // Ensure slug format if (!Str::startsWith($input['slug'], $language . '.features.')) { $input['slug'] = $language . '.features.' . Str::slug($input['slug']); } } $this->featureRepository->update($input, null); Flash::success(__('messages.flash.feature_update')); return redirect(route('features.index')); } }Http/Controllers/ContactRequestController.php000064400000002247152164577510015534 0ustar00email)->latest()->first(); if ($contactRequest) { return redirect()->route('add-contact', $request->vcard_id); } else { $input = $request->all(); try { DB::beginTransaction(); $contactRequest = ContactRequest::create($input); DB::commit(); setLocalLang(getLocalLanguage()); return $contactRequest; } catch (Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } return redirect()->back(); } } Http/Controllers/BlogController.php000064400000004773152164577510013461 0ustar00blogRepository = $blogRepository; } /** * Display a listing of the resource. */ public function index() { return view('sadmin.blog.index'); } /** * Show the form for creating a new resource. */ public function create() { return view('sadmin.blog.create'); } /** * Store a newly created resource in storage. */ public function store(CreateBlogRequest $request) { $input = $request->all(); $this->blogRepository->store($input); Flash::success(__('messages.flash.blog_create')); return redirect(route('blogs.index')); } /** * Display the specified resource. */ public function show(Blog $blog) { return view('sadmin.blog.show', compact('blog')); } /** * Show the form for editing the specified resource. */ public function edit(Blog $blog) { return view('sadmin.blog.edit', compact('blog')); } /** * Update the specified resource in storage. */ public function update(UpdateBlogRequest $request, $id) { $input = $request->all(); $this->blogRepository->update($input, $id); Flash::success(__('messages.flash.blog_update')); return redirect(route('blogs.index')); } /** * Remove the specified resource from storage. */ public function destroy(Blog $blog) { $blog->delete(); return $this->sendSuccess('Blog deleted successfully.'); } public function slug(Request $request) { $text = $request->text; if ($text == '') { $text = ''; } $slug = preg_replace('/[^\p{L}\p{N}]+/u', '-', trim($text)); return $this->sendResponse($slug, __('messages.placeholder.content_generated_successfully')); } public function updateBlogStatus(Blog $blog) { $blog->update([ 'status' => ! $blog->status, ]); return $this->sendSuccess(__('messages.flash.blog_status')); } } Http/Controllers/AppBaseController.php000064400000001260152164577510014075 0ustar00 true, 'message' => $message, ], 200); } } Http/Controllers/VcardBlogController.php000064400000003466152164577510014437 0ustar00vcardBlogRepo = $vcardBlogRepo; } /** * @return Application|Factory|View */ public function index(): \Illuminate\View\View { return view('vcards.blogs.index'); } /** * @return mixed */ public function store(CreateVcardBlogRequest $request) { $input = $request->all(); $blog = $this->vcardBlogRepo->store($input); return $this->sendResponse($blog, __('messages.flash.create_blog')); } /** * @return mixed */ public function edit(VcardBlog $vcardBlog) { return $this->sendResponse($vcardBlog, 'VCard successfully retrieved.'); } /** * @return mixed */ public function update(UpdateVcardBlogRequest $request, VcardBlog $vcardBlog) { $input = $request->all(); $service = $this->vcardBlogRepo->update($input, $vcardBlog->id); return $this->sendResponse($service, __('messages.flash.update_blog')); } /** * @return mixed */ public function destroy(VcardBlog $vcardBlog) { $vcardBlog->clearMediaCollection(VcardBlog::BLOG_PATH); $vcardBlog->delete(); return $this->sendSuccess(__('messages.flash.delete_blog')); } } Http/Controllers/PlanController.php000064400000011103152164577510013451 0ustar00planRepository = $planRepository; } /** * @param Request $request * @return Application|Factory|View */ public function index(): \Illuminate\View\View { return view('sadmin.plans.index'); } /** * @return Application|Factory|View */ public function create(): \Illuminate\View\View { return view('sadmin.plans.create'); } /** * @return Application|RedirectResponse|Redirector */ public function store(CreatePlanRequest $request): RedirectResponse { $input = $request->all(); $this->planRepository->store($input); Flash::success(__('messages.flash.plan_create')); return redirect(route('plans.index')); } /** * @return Application|Factory|View */ public function edit(Plan $plan): \Illuminate\View\View { $planCustomFields = PlanCustomField::where('plan_id', $plan->id)->get(); $planCustomFieldsCount = $planCustomFields->count(); $planCustomFields = $planCustomFieldsCount > 0 ? $planCustomFields : []; $templates = $plan->templates()->pluck('template_id')->toArray(); $feature = PlanFeature::wherePlanId($plan->id)->first(); return view('sadmin.plans.edit', compact('plan', 'feature', 'templates','planCustomFields')); } /** * @return Application|RedirectResponse|Redirector */ public function update(UpdatePlanRequest $request, $id): RedirectResponse { $input = $request->all(); $input['custom_select'] = $request->has('custom_select') ? 1 : 0; $maxStorageUsed = getMaxStorageUsedByPlan($id); $newStorageLimit = $request->input('storage_limit'); if ($newStorageLimit < $maxStorageUsed) { return redirect()->back()->withErrors([ 'storage_limit' => trans('messages.plan.storage_limit_exist', ['maxStorageUsed' => number_format($maxStorageUsed, 2)]) ]); } $this->planRepository->update($input, $id); Flash::success(__('messages.flash.plan_update')); return redirect(route('plans.index')); } public function updateStatus(Plan $plan): JsonResponse { $plan->update([ 'is_active' => ! $plan->is_active, ]); return $this->sendSuccess(__('messages.flash.plan_status')); } public function updatePlanStatus(Plan $plan) { $plan->update([ 'status' => ! $plan->status, ]); return $this->sendSuccess(__('messages.flash.plan_status')); } /** * @return mixed */ public function destroy(Plan $plan) { $subscription = Subscription::where('plan_id', $plan->id)->where('status', Subscription::ACTIVE)->count(); if ($plan->is_default == Plan::IS_DEFAULT) { return $this->sendError(__('messages.placeholder.default_plan_can_not_be_delete')); } if ($subscription > 0) { return $this->sendError(__('messages.placeholder.plan_already_used')); } $plan->delete(); return $this->sendSuccess('Plan deleted successfully.'); } public function makePlanDefault(int $id): JsonResponse { $defaultSubscriptionPlan = Plan::where('is_default', 1)->first(); $defaultSubscriptionPlan->update(['is_default' => 0]); $subscriptionPlan = Plan::find($id); if (empty($subscriptionPlan)) { $defaultSubscriptionPlan->update(['is_default' => 1]); return $this->sendSuccess(__('messages.flash.plan_default')); } if ($subscriptionPlan->trial_days == 0) { $subscriptionPlan->trial_days = Plan::TRIAL_DAYS; } $subscriptionPlan->is_default = 1; $subscriptionPlan->save(); return $this->sendSuccess(__('messages.flash.plan_default')); } } Http/Controllers/ProductController.php000064400000022350152164577510014205 0ustar00vcardProductRepo = $vcardProductRepo; } /** * @param $id * @return mixed */ public function store(CreateProductRequest $request): JsonResponse { $input = $request->all(); $service = $this->vcardProductRepo->store($input); return $this->sendResponse($service, __('messages.flash.create_product')); } public function edit($id): JsonResponse { $product = Product::with('currency')->where('id', $id)->first(); if ($product->currency) { $product['formatted_amount'] = getCurrencyAmount($product->price, $product->currency->currency_icon); } return $this->sendResponse($product, 'Product successfully retrieved.'); } public function destroy($id): JsonResponse { $product = Product::where('id', $id)->first(); $product->clearMediaCollection(Product::PRODUCT_PATH); $product->delete(); return $this->sendSuccess('Product deleted successfully.'); } public function update(UpdateProductRequest $request, $id): JsonResponse { $input = $request->all(); $service = $this->vcardProductRepo->update($input, $id); return $this->sendResponse($service, __('messages.flash.update_product')); } public function buy(ProductBuyRequest $request) { $input = $request->all(); $product = Product::with('currency', 'vcard.user')->whereId($input['product_id'])->first(); $currency = isset($product->currency_id) ? $product->currency->currency_code : Currency::whereId(getUserSettingValue('currency_id', $product->vcard->user->id))->first()->currency_code; try { App::setLocale(Session::get('languageChange_' . $product->vcard->url_alias)); DB::beginTransaction(); if ($input['payment_method'] == Product::STRIPE) { /** @var VcardProductRepository $repo */ $repo = App::make(VcardProductRepository::class); $result = $repo->productBuySession($input, $product); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.stripe_created')); } // PhonePe if ($input['payment_method'] == Product::PHONEPE) { if ($currency != "INR") { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_phonepe')); } /** @var UserPhonepeController $phonepe */ $phonepe = App::make(UserPhonepeController::class); $result = $phonepe->productBuy($input, $product); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.phonepe_created')); } // Paystack if ($input['payment_method'] == Product::PAYSTACK) { if (isset($currency) && !in_array(strtoupper($currency), getPayStackSupportedCurrencies())) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_paystack')); } /** @var UserPaystackController $paystack */ $paystack = App::make(UserPaystackController::class); $result = $paystack->productBuy($input, $product); $targetUrl = $result->getTargetUrl(); DB::commit(); return $this->sendResponse(['payment_method' => $input['payment_method'], $targetUrl], __('messages.placeholder.paystack_created')); } // Flutterwave if ($input['payment_method'] == Product::FLUTTERWAVE) { $supportedCurrency = ['GBP', 'CAD', 'XAF', 'CLP', 'COP', 'EGP', 'EUR', 'GHS', 'GNF', 'KES', 'MWK', 'MAD', 'NGN', 'RWF', 'SLL', 'STD', 'ZAR', 'TZS', 'UGX', 'USD', 'XOF', 'ZMW']; if (isset($currency) && !in_array(strtoupper($currency), $supportedCurrency)) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported_flutterwave')); } /** @var UserFlutterwaveController $flutterwave */ $flutterwave = App::make(UserFlutterwaveController::class); $targetUrl = $flutterwave->productBuy($input, $product); DB::commit(); return $this->sendResponse(['payment_method' => $input['payment_method'], $targetUrl], __('messages.placeholder.flutterwave_created')); } // Razor Pay if ($input['payment_method'] == Product::RAZORPAY) { $repo = App::make(VcardProductRepository::class); $result = $repo->userCreateRazorPaySession($input, $product, $currency); $result['payment_method'] = $input['payment_method']; $userId = $product->vcard->user->id; $product = Product::find($input['product_id']); Session::put('productId', $product); DB::commit(); return $this->sendResponse([ $result ], __('messages.nfc.razorpay_session_success')); } //manually if ($input['payment_method'] == Product::MANUALLY) { $product = Product::find($input['product_id']); ProductTransaction::create([ 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'address' => $input['address'], 'type' => $input['payment_method'], 'product_id' => $input['product_id'], 'currency_id' => $product->currency_id, 'amount' => $product->price, 'status' => 1, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $input['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $input['phone'], 'address' => $input['address'], 'payment_type' => __('messages.manually'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $product->vcard->user->id)) { Mail::to($input['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $product->vcard->user->id)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $result['payment_method'] = $input['payment_method']; DB::commit(); return $this->sendResponse([ $result ], __('messages.flash.product_purchase_success')); } //PayPal if ($input['payment_method'] == Product::PAYPAL) { if (isset($currency) && !in_array(strtoupper($currency), getPayPalSupportedCurrencies())) { return $this->sendError(__('messages.placeholder.this_currency_is_not_supported')); } /** @var PaypalController $payPalCont */ $payPalCont = App::make(PaypalController::class); $result = $payPalCont->buyProductOnboard($input, $product); DB::commit(); return $this->sendResponse([ 'payment_method' => $input['payment_method'], $result, ], __('messages.placeholder.paypal_created')); } } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } public function updateProductStatus($id, $status) { $product = ProductTransaction::find($id); if (!$product) { return redirect()->back()->with('error', 'Product not found.'); } $product->status = $status; $product->save(); return redirect()->back()->with('success', __('messages.flash.product_status_change')); } } Http/Controllers/FrontTestimonialController.php000064400000004077152164577510016074 0ustar00frontTestimonialRepo = $frontTestimonialRepo; } /** * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View * * @throws \Exception */ public function index(): View { return view('sadmin.testimonial.index'); } /** * Store a newly created resource in storage. */ public function store(CreateFrontTestimonialRequest $request): JsonResponse { $input = $request->all(); $testimonial = $this->frontTestimonialRepo->store($input); return $this->sendResponse($testimonial, __('messages.flash.create_front_testimonial')); } public function edit(FrontTestimonial $frontTestimonial): JsonResponse { return $this->sendResponse($frontTestimonial, 'Testimonial successfully retrieved.'); } public function update(UpdateFrontTestimonialRequest $request): JsonResponse { $input = $request->all(); $testimonial = $this->frontTestimonialRepo->update($input, $request->testimonial_id); return $this->sendResponse($testimonial, __('messages.flash.update_front_testimonial')); } /** * Remove the specified resource from storage. * * @param int $id */ public function destroy(FrontTestimonial $frontTestimonial): JsonResponse { $frontTestimonial->clearMediaCollection(FrontTestimonial::PATH); $frontTestimonial->delete(); return $this->sendSuccess('Testimonial deleted successfully.'); } } Http/Controllers/InstagramEmbedController.php000064400000004130152164577510015443 0ustar00instagramembedRepo = $instagramembedRepo; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(Request $request, $id) { } /** * Store a newly created resource in storage. * * @return \Illuminate\Http\Response */ public function store(CreateInstagramEmbedRequest $request) { $input = $request->all(); $this->instagramembedRepo->store($input); return $this->sendSuccess(__('messages.placeholder.embedtag_created')); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit(InstagramEmbed $instagramembed) { return $this->sendResponse($instagramembed, 'instagramembed successfully retrieved.'); } /** * Update the specified resource in storage. * * @param int $id * @return \Illuminate\Http\Response */ public function update(UpdateInstagramEmbedRequest $request, InstagramEmbed $instagramembed) { $input = $request->all(); $this->instagramembedRepo->update($input, $instagramembed->id); return $this->sendSuccess(__('messages.placeholder.embedtag_updated')); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($instagramembed) { InstagramEmbed::destroy($instagramembed); return $this->sendSuccess('VCard service deleted successfully.'); } } Http/Controllers/VcardServiceController.php000064400000003217152164577510015146 0ustar00vcardServiceRepo = $vcardServiceRepo; } /** * @return mixed */ public function index($id) { } public function store(CreateVcardServiceRequest $request): JsonResponse { $input = $request->all(); $service = $this->vcardServiceRepo->store($input); return $this->sendResponse($service, __('messages.flash.create_service')); } public function edit(VcardService $vcardService): JsonResponse { return $this->sendResponse($vcardService, 'VCard successfully retrieved.'); } public function update(UpdateVcardServiceRequest $request, VcardService $vcardService): JsonResponse { $input = $request->all(); $service = $this->vcardServiceRepo->update($input, $vcardService->id); return $this->sendResponse($service, __('messages.flash.update_service')); } public function destroy(VcardService $vcardService): JsonResponse { $vcardService->clearMediaCollection(VcardService::SERVICES_PATH); $vcardService->delete(); return $this->sendSuccess(__('messages.flash.delete_service')); } } Http/Controllers/SettingController.php000064400000022101152164577510014174 0ustar00settingRepository = $settingRepository; } /** * @return Application|Factory|View */ public function index(Request $request): \Illuminate\View\View { $setting = Setting::pluck('value', 'key')->toArray(); $paymentGateways = Plan::PAYMENT_METHOD; $paypalMode = Plan::PAYPAL_MODE; $selectedPaymentGateways = PaymentGateway::pluck('payment_gateway_id', 'payment_gateway')->toArray(); $metas = Meta::first(); $sectionName = ($request->get('section') === null) ? 'general' : $request->get('section'); if (! empty($metas)) { $metas = $metas->toArray(); } $mailsetting = MailSetting::first(); return view( "settings.$sectionName", compact('setting', 'selectedPaymentGateways', 'metas', 'sectionName', 'paymentGateways', 'paypalMode', 'mailsetting') ); } public function update(UpdateSettingRequest $request): RedirectResponse { if ($request->favicon) { $imageSize = getimagesize($request->favicon); $width = $imageSize[0]; $height = $imageSize[1]; if ($width > 16 && $height > 16) { Flash::error(__('messages.placeholder.favicon_invalid')); return redirect()->back(); } } $id = Auth::id(); $this->settingRepository->update($request->all(), $id); Flash::success(__('messages.flash.setting_update')); return redirect(route('setting.index')); } /** * @return Application|Factory|View */ public function frontCmsIndex(): \Illuminate\View\View { $language = getLogInUser()->language; $setting = Setting::where('language', $language)->orWhere('language','')->pluck('value', 'key')->toArray(); return view('settings.front_cms.index', compact('setting')); } /** * @return Application|RedirectResponse|Redirector */ public function frontCmsUpdate(UpdateFrontCmsRequest $request): RedirectResponse { $id = Auth::id(); $this->settingRepository->update($request->all(), $id); Flash::success(__('messages.flash.front_cms')); return redirect(route('setting.front.cms')); } public function settingTermsConditions(Request $request): RedirectResponse { $inputs = $request->all(); $inputs = Arr::except($inputs, ['_token']); $inputs['terms_conditions'] = json_decode($inputs['terms_conditions']); $inputs['privacy_policy'] = json_decode($inputs['privacy_policy']); foreach ($inputs as $key => $value) { /** @var FrontCMSSetting $cmsSetting */ $termsConditions = Setting::where('key', $key)->first(); $termsConditions->update(['value' => $value]); } Flash::success(__('messages.vcard.term-condition').' '.__('messages.flash.vcard_update')); return Redirect::back(); } public function updateManualPaymentGuide(Request $request): RedirectResponse { $input = $request->all(); $input = Arr::except($input, ['_token']); $input['manual_payment_guide'] = json_decode($input['manual_payment_guide']); $input['is_manual_payment_guide_on'] = isset($input['is_manual_payment_guide_on']); foreach ($input as $key => $value) { $manualPaymentGuide = Setting::where('key', $key)->first(); $manualPaymentGuide->update(['value' => $value]); } Flash::success(__('messages.vcard.manual_payment_guide').' '.__('messages.flash.vcard_update')); return redirect()->back(); } public function updateMobileValidation() { $setting = Setting::where('key', 'mobile_validation')->firstOrFail(); $setting->update([ 'value' => $setting->value ? 0 : 1, ]); Flash::success(__('messages.flash.mobile_validation')); return $this->sendSuccess('messages.flash.mobile_validation'); } public function updateGoogleAnalytics(Request $request): RedirectResponse { Meta::query()->delete(); if (isset($request->site_title) || isset($request->site_title) || isset($request->site_title) || isset($request->site_title) || isset($request->google_analytics)) { Meta::updateOrCreate([ 'site_title' => $request->site_title, 'home_title' => $request->home_title, 'meta_keyword' => $request->meta_keyword, 'meta_description' => $request->meta_description, 'google_analytics' => $request->google_analytics, ]); } Flash::success(__('messages.vcard.google_config').' '.__('messages.flash.vcard_update')); return Redirect::back(); } public function updatePaymentMethod(UpdatePaymentRequest $request): RedirectResponse { $paymentGateways = $request->payment_gateway; $input = $request->all(); PaymentGateway::query()->delete(); if (isset($paymentGateways)) { foreach ($paymentGateways as $paymentGateway) { PaymentGateway::updateOrCreate( ['payment_gateway_id' => $paymentGateway], [ 'payment_gateway' => Plan::PAYMENT_METHOD[$paymentGateway], ] ); } } $paymentMethodKeys = [ 'stripe_key', 'stripe_secret', 'flutterwave_key', 'flutterwave_secret', 'paypal_client_id', 'paypal_secret','paypal_mode', 'razorpay_key', 'razorpay_secret', 'paystack_key', 'paystack_secret', 'phonepe_merchant_id', 'phonepe_merchant_user_id', 'phonepe_env', 'phonepe_salt_key', 'phonepe_salt_index', 'manual_payment_guide', ]; foreach ($paymentMethodKeys as $key) { $setting = Setting::where('key', $key)->first(); $setting->update(['value' => $input[$key]]); } Flash::success(__('messages.vcard.payment_config').' '.__('messages.flash.vcard_update')); return Redirect::back(); } public function updateTheme(Request $request){ $themeSetting = Setting::where('key','home_page_theme')->first(); $themeSetting->update(['value'=>$request->theme_id]); Flash::success(__('messages.flash.success_theme_update')); return Redirect::back(); } public function upgradeDatabase(){ Artisan::call('migrate', ['--force' => true]); Flash::success(__('messages.flash.database_upgrade_succesfully')); return Redirect::back(); } public function generateSitemap(){ Artisan::call('sitemap:generate'); Flash::success(__('messages.sitemap_generated')); return Redirect::back(); } public function bannerStore(HomeBannerRequest $request) { $requestData = $request->all(); $this->settingRepository->updateBanner($requestData); Flash::success(__('messages.flash.banner_data_update')); return Redirect::back(); } public function appUrlStore(MobileRequest $request) { $requestData = $request->all(); $this->settingRepository->updateAppUrl($requestData); Flash::success(__('messages.app_download_url')); return Redirect::back(); } public function homePageUpdate(Request $request): RedirectResponse { if ($request->favicon) { $imageSize = getimagesize($request->favicon); $width = $imageSize[0]; $height = $imageSize[1]; if ($width > 16 && $height > 16) { Flash::error(__('messages.placeholder.favicon_invalid')); return redirect()->back(); } } $id = Auth::id(); $this->settingRepository->homePageUpdate($request->all(), $id); Flash::success(__('messages.flash.setting_update')); return redirect()->back(); } } Http/Controllers/NfcController.php000064400000003151152164577510013271 0ustar00NfcRepository = $NfcRepository; } public function index(Request $request) { return view('sadmin.nfc.index'); } public function store(CreateNfcRequest $request) { $input = $request->all(); $nfc = $this->NfcRepository->store($input); return $this->sendResponse($nfc,__('messages.nfc.nfc_card_created_success')); } public function edit($id){ $nfc = Nfc::with('media')->find($id); return $this->sendResponse($nfc, 'Nfc Type successfully retrieved.'); } public function update(UpdateNfcCardRequest $request,$id){ $input = $request->all(); $nfc = $this->NfcRepository->update($input, $id); return $this->sendResponse($nfc,__('messages.nfc.nfc_card_updated_success')); } public function destroy($id) { $nfcOrder = NfcOrders::where('card_type',$id)->exists(); if($nfcOrder){ return $this->sendError(__('messages.nfc.card_can_not_deleted')); } $nfc = Nfc::find($id); $nfc->delete(); return $this->sendSuccess(__('messages.nfc.nfc_card_deleted_success')); } } Http/Controllers/StorageLimitController.php000064400000004462152164577510015174 0ustar00sum() / (1024 * 1024); $userLimit = $totalStorageData; $storageLimit = getCurrentSubscription()->plan->storage_limit; $productStorageMB = isset($userStorageData['product_storage']) ? $userStorageData['product_storage'] / (1024 * 1024) : 0; $serviceStorageMB = isset($userStorageData['services_storage']) ? $userStorageData['services_storage'] / (1024 * 1024) : 0; $testimonialStorageMB = isset($userStorageData['testimonial_storage']) ? $userStorageData['testimonial_storage'] / (1024 * 1024) : 0; $socialStorageMB = isset($userStorageData['social_storage']) ? $userStorageData['social_storage'] / (1024 * 1024) : 0; $blogStorageMB = isset($userStorageData['blog_storage']) ? $userStorageData['blog_storage'] / (1024 * 1024) : 0; $galleryStorageMB = isset($userStorageData['gallery_storage']) ? $userStorageData['gallery_storage'] / (1024 * 1024) : 0; $profileStorageMB = isset($userStorageData['profile_storage']) ? $userStorageData['profile_storage'] / (1024 * 1024) : 0; $pwaStorageMB = isset($userStorageData['pwa_storage']) ? $userStorageData['pwa_storage'] / (1024 * 1024) : 0; $avatarStorageMB = isset($userStorageData['avatar_storage']) ? $userStorageData['avatar_storage'] / (1024 * 1024) : 0; $storagePercentage = $userLimit * 100 / $storageLimit; $labels = [ __('messages.used_storage'), __('messages.unused_storage'), ]; $chartData = [ 'labels' => $labels, 'data' => [$storagePercentage, 100 - $storagePercentage], ]; return view('storage.index', compact('userLimit','chartData','storageLimit','blogStorageMB','productStorageMB','serviceStorageMB', 'testimonialStorageMB','socialStorageMB','galleryStorageMB','profileStorageMB','pwaStorageMB','avatarStorageMB')); } } Http/Controllers/EmailSubscriptionController.php000064400000002057152164577510016223 0ustar00all()); return $this->sendSuccess(__('messages.placeholder.subscribed_successfully')); } /** * @return mixed */ public function destroy(EmailSubscription $emailSubscription) { $emailSubscription->delete(); return $this->sendSuccess('Email deleted successfully.'); } } Http/Controllers/UserPaystackController.php000064400000016764152164577510015217 0ustar00get('vcard_user_id'); $currencyCode = Currency::whereId(getUserSettingValue('currency_id', $userId))->first(); $clientId = getUserSettingValue('paystack_key', $userId); $clientSecret = getUserSettingValue('paystack_secret', $userId); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); $response = Paystack::getPaymentData(); $tenantId = session()->get('tenant_id'); $amount = $response['data']['requested_amount'] / 100; $currencyCode = $response['data']['currency']; $currencyId = Currency::whereCurrencyCode($currencyCode)->first()->id; $transactionId = $response['data']['id']; $vcardId = $response['data']['metadata']['vcard_id'] ?? null; $vcard = Vcard::with('tenant.user')->where('id', $vcardId)->first(); if ($vcardId) { $transactionDetails = [ 'vcard_id' => $vcardId, 'transaction_id' => $transactionId, 'currency_id' => $currencyId, 'amount' => $amount, 'tenant_id' => $tenantId, 'type' => Appointment::PAYSTACK, 'status' => Transaction::SUCCESS, 'meta' => json_encode($response), ]; $appointmentTran = AppointmentTransaction::create($transactionDetails); $appointmentInput = session()->get('appointment_details'); session()->forget('appointment_details'); $appointmentInput['appointment_tran_id'] = $appointmentTran->id; $appointmentInput['vcard_id'] = $vcardId; /** @var AppointmentRepository $appointmentRepo */ $appointmentRepo = App::make(AppointmentRepository::class); $vcardEmail = is_null($vcard->email) ? $vcard->tenant->user->email : $vcard->email; $appointmentRepo->appointmentStoreOrEmail($appointmentInput, $vcardEmail); session()->forget(['vcard_user_id', 'tenant_id', 'vcard_id']); Flash::success(__('messages.placeholder.payment_done')); App::setLocale(session::get('languageChange_' . $vcard->url_alias)); return redirect(route('vcard.show', [$vcard->url_alias, __('messages.placeholder.appointment_created')])); } else { $input = session()->get('input'); $product = Product::whereId($input['product_id'])->first(); $userId = $product->vcard->user->id; $clientId = getUserSettingValue('paystack_key', $userId); $clientSecret = getUserSettingValue('paystack_secret', $userId); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyId = Currency::whereId($product->currency_id)->first()->id; try { $response = Paystack::getPaymentData(); $amount = $response['data']['requested_amount'] / 100; $transactionId = $response['data']['id']; DB::beginTransaction(); ProductTransaction::create([ 'product_id' => $input['product_id'], 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'address' => $input['address'], 'currency_id' => $currencyId, 'meta' => json_encode($response), 'type' => $input['payment_method'], 'transaction_id' => $transactionId, 'amount' => $amount, ]); $orderMailData = [ 'user_name' => $product->vcard->user->full_name, 'customer_name' => $input['name'], 'product_name' => $product->name, 'product_price' => $product->price, 'phone' => $input['phone'], 'address' => $input['address'], 'payment_type' => __('messages.paystack'), 'order_date' => Carbon::now()->format('d M Y'), ]; if (getUserSettingValue('product_order_send_mail_customer', $userId)) { Mail::to($input['email'])->send(new ProductOrderSendCustomer($orderMailData)); } if (getUserSettingValue('product_order_send_mail_user', $userId)) { Mail::to($product->vcard->user->email)->send(new ProductOrderSendUser($orderMailData)); } $vcard = $product->vcard; App::setLocale(Session::get('languageChange_' . $vcard->url_alias)); session()->forget('input'); DB::commit(); return redirect(route('showProducts', [$vcard->id, $vcard->url_alias, __('messages.placeholder.product_purchase')])); } catch (\Exception $ex) { print_r($ex->getMessage()); } } } public function productBuy($input, $product) { $userId = $product->vcard->user->id; $clientId = getUserSettingValue('paystack_key', $userId); $clientSecret = getUserSettingValue('paystack_secret', $userId); config([ 'paystack.publicKey' => $clientId, 'paystack.secretKey' => $clientSecret, 'paystack.paymentUrl' => "https://api.paystack.co", ]); if (empty($product->currency_id)) { $product->currency_id = getUserSettingValue('currency_id', $userId); } $currencyCode = Currency::whereId($product->currency_id)->first()->currency_code; $email = $input['email']; $productId = $product->id; $productAmount = $product->price; try { $data = [ 'email' => $email, 'orderID' => $productId, 'amount' => $productAmount * 100, 'quantity' => 1, 'currency' => $currencyCode, 'reference' => Paystack::genTranxRef(), 'metadata' => json_encode(['product_id' => $productId]), ]; $result = Paystack::getAuthorizationUrl($data)->redirectNow(); session()->put(['input' => $input]); session()->put(['vcard_user_id' => $userId]); return $result; } catch (\Exception $e) { Flash::error(__('messages.setting.paystack_credential')); return Redirect()->back(); } } } Http/Controllers/SubscriptionController.php.bak000064400000036171152164577510016013 0ustar00subscriptionRepo = $subscriptionRepo; } /** * @return Application|Factory|View */ public function index(Request $request): \Illuminate\View\View { $currentPlan = getCurrentSubscription(); $days = $remainingDay = ''; if ($currentPlan->ends_at > Carbon::now()) { $days = Carbon::parse($currentPlan->ends_at)->diffInDays(); $remainingDay = $days . ' Days'; } if ($days >= 30 && $days <= 365) { $remainingDay = ''; $months = floor($days / 30); $extraDays = $days % 30; if ($extraDays > 0) { $remainingDay .= $months . ' Month ' . $extraDays . ' Days'; } else { $remainingDay .= $months . ' Month '; } } if ($days >= 365) { $remainingDay = ''; $years = floor($days / 365); $extraMonths = floor($days % 365 / 30); $extraDays = floor($days % 365 % 30); if ($extraMonths > 0 && $extraDays < 1) { $remainingDay .= $years . ' Years ' . $extraMonths . ' Month '; } elseif ($extraDays > 0 && $extraMonths < 1) { $remainingDay .= $years . ' Years ' . $extraDays . ' Days'; } elseif ($years > 0 && $extraDays > 0 && $extraMonths > 0) { $remainingDay .= $years . ' Years ' . $extraMonths . ' Month ' . $extraDays . ' Days'; } else { $remainingDay .= $years . ' Years '; } } return view('subscription.index', compact('currentPlan', 'remainingDay')); } public function choosePaymentType($planId, $context = null, $fromScreen = null) { $currentSubscription = getCurrentSubscription(); $customSelectId = request()->get('customFieldId'); $customField = PlanCustomField::find($customSelectId); if ($customField) { if (!$currentSubscription->isExpired()) { if ((checkIfPlanIsInTrial($currentSubscription) || !checkIfPlanIsInTrial($currentSubscription)) && $customField->custom_vcard_price <= 0) { Flash::error(__('messages.placeholder.cannot_switch_to_zero')); return Redirect::back(); } } } $cashPaymentPlan = Subscription::where('tenant_id', Auth::user()->tenant_id)->where('payment_type', 'cash')->where('status', Subscription::PENDING)->first(); if ($cashPaymentPlan) { Flash::error(__('messages.wait_for_apporove_of_cash_payment_by_admin')); return Redirect::back(); } // code for checking the current plan is active or not, if active then it should not allow to choose that plan $subscriptionsPricingPlan = Plan::findOrFail($planId); $paymentTypes = getPaymentGateway(); return view('subscription.payment_for_plan', compact('subscriptionsPricingPlan', 'paymentTypes', 'customSelectId', 'customField')); } /** * @return Application|Factory|View */ public function upgrade() { $cashPaymentPlan = Subscription::where('tenant_id', Auth::user()->tenant_id)->where('payment_type', 'cash')->where('status', Subscription::PENDING)->first(); if ($cashPaymentPlan && !$cashPaymentPlan->isExpired()) { Flash::error(__('messages.wait_for_apporove_of_cash_payment_by_admin')); return Redirect::back(); } $plans = Plan::with(['currency', 'planFeature'])->whereStatus(Plan::IS_ACTIVE)->whereIsDefault(Plan::IS_DEACTIVE)->get(); $monthlyPlans = $plans->where('frequency', Plan::MONTHLY); $yearlyPlans = $plans->where('frequency', Plan::YEARLY); $unLimitedPlans = $plans->where('frequency', Plan::UNLIMITED); return view( 'subscription.upgrade', compact('monthlyPlans', 'yearlyPlans', 'unLimitedPlans') ); } public function setPlanZero(Plan $plan): JsonResponse { try { DB::beginTransaction(); Subscription::whereTenantId(getLogInTenantId()) ->whereIsActive(true)->update(['is_active' => false]); $expiryDate = setExpiryDate($plan); Subscription::create([ 'plan_id' => $plan->id, 'ends_at' => $expiryDate, 'status' => true, ]); DB::commit(); return $this->sendSuccess(__('messages.placeholder.subscribed_plan')); } catch (\Exception $e) { DB::rollBack(); throw new UnprocessableEntityHttpException($e->getMessage()); } } public function manualPay(Request $request) { $input = $request->all(); if (isset($input['couponCodeId'])) { $couponId = $input['couponCodeId']; $coupon = CouponCode::find($couponId); if ($coupon) { if ($coupon->coupon_limit != null) { $newLimit = $coupon->coupon_limit_left - 1; CouponCode::where('id', $couponId)->update(['coupon_limit_left' => $newLimit]); } } } if (isset($input['attachment']) && $input['attachment']->getClientMimeType() == 'text/php') { return $this->sendError('PHP file is not valid type for attachment'); } $this->subscriptionRepo->manageSubscription($input); $data = Subscription::whereTenantId(getLogInTenantId())->orderBy('created_at', 'desc')->first(); Subscription::whereId($data->id)->update(['payment_type' => 'Cash', 'status' => Subscription::PENDING]); $is_on = Setting::where('key', 'is_manual_payment_guide_on')->first(); $manual_payment_guide_step = Setting::where('key', 'manual_payment_guide')->first(); $user = \Illuminate\Support\Facades\Auth::user(); $super_admin_data = [ 'super_admin_msg' => $user->full_name . ' created request for payment of ' . $data->plan->currency->currency_icon . '' . $data->payable_amount, 'attachment' => $data->attachment ?? '', 'notes' => $data->notes ?? '', 'id' => $data->id, ]; if ($is_on['value'] == '1') { Mail::to($user['email']) ->send(new ManualPaymentGuideMail($manual_payment_guide_step['value'], $user)); $email = getSuperAdminSettingValue('email'); Mail::to($email) ->send(new SuperAdminManualPaymentMail($super_admin_data, $email)); } return $this->sendSuccess(__('messages.placeholder.subscribed_plan_wait')); } public function downloadAttachment($id): \Illuminate\Http\Response|Application|\Illuminate\Contracts\Routing\ResponseFactory { $subscription = Subscription::findOrFail($id); [$file, $headers] = $this->subscriptionRepo->downloadAttachment($subscription); return response($file, 200, $headers); } public function downloadMailAttachment($id): BinaryFileResponse { $subscription = Subscription::whereTenantId(getLogInTenantId())->findOrFail($id); $headers = [ 'Content-Type' => $subscription->media[0]->mime_type, 'Content-Description' => 'File Transfer', 'Content-Disposition' => "attachment; filename={$subscription->media[0]->file_name}", 'filename' => $subscription->media[0]->file_name, ]; return response()->download($subscription->media[0]->getPath(), $subscription->media[0]->file_name, $headers); } /** * @return Application|Factory|View */ public function cashPlan(): \Illuminate\View\View { return view('sadmin.planPyment.index'); } public function planStatus(Request $request): JsonResponse { if ($request->status == Subscription::ACTIVE) { $user = User::whereTenantId($request->tenant_id)->latest()->first(); if ($user) { // send mail notification $subscription = Subscription::findOrFail($request->id); $planName = $subscription->plan->name; $paymentAmount = $subscription->payable_amount; $userEmail = $user->email; $planName = $subscription->plan->name; $firstName = $user->first_name; $lastName = $user->last_name; $emailData = [ 'subscriptionId' => $request->id, 'subscriptionAmount' => $paymentAmount, 'transactionID' => $request->session_id, 'planName' => $planName, 'first_name' => $firstName, 'last_name' => $lastName, ]; Mail::to($userEmail)->send(new SubscriptionPaymentSuccessMail($emailData)); $affiliateAmount = getSuperAdminSettingValue('affiliation_amount'); $affiliateAmountType = getSuperAdminSettingValue('affiliation_amount_type'); if ($affiliateAmountType == 1) { AffiliateUser::where('user_id', $user->id)->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $affiliateAmount, 'is_verified' => 1]); } else if ($affiliateAmountType == 2) { $amount = $paymentAmount * $affiliateAmount / 100; AffiliateUser::where('user_id', $user->id)->where('amount', 0)->withoutGlobalScopes()->update(['amount' => $amount, 'is_verified' => 1]); } } Subscription::whereTenantId($request->tenant_id)->where('id', '!=', $request->id)->where('status', '!=', Subscription::REJECT)->update(['status' => Subscription::INACTIVE]); } Subscription::where('id', $request->id)->update([ 'status' => $request->status, ]); $user = User::whereTenantId($request->tenant_id)->first(); manageVcards($user); return $this->sendSuccess(__('messages.placeholder.payment_received')); } public function purchaseSubscription(Request $request) { $input = $request->all(); $result = $this->subscriptionRepo->purchaseSubscriptionForStripe($input); // returning from here if the plan is free. if (isset($result['status']) && $result['status'] == true) { manageVcards(); return $this->sendSuccess($result['subscriptionPlan']->name . ' ' . __('messages.subscription.has_been_subscribed')); } else { if (isset($result['status']) && $result['status'] == false) { return $this->sendError(__('messages.placeholder.cannot_switch_to_zero')); } } return $this->sendResponse($result, 'Session created successfully.'); } /** * @return Application|Factory|View * * @throws ApiErrorException */ public function paymentSuccess(Request $request): \Illuminate\View\View { AffiliateUser::whereUserId(getLogInUserId())->withoutGlobalScopes() ->update(['is_verified' => 1]); /** @var SubscriptionRepository $subscriptionRepo */ $subscriptionRepo = app(SubscriptionRepository::class); $subscription = $subscriptionRepo->paymentUpdate($request); manageVcards(); Flash::success($subscription->plan->name . ' ' . __('messages.subscription.has_been_subscribed')); return view('sadmin.plans.payment.paymentSuccess'); } public function handleFailedPayment(): \Illuminate\View\View { $subscriptionPlanId = session('subscription_plan_id'); /** @var SubscriptionRepository $subscriptionRepo */ $subscriptionRepo = app(SubscriptionRepository::class); $subscriptionRepo->paymentFailed($subscriptionPlanId); Flash::error(__('messages.placeholder.unable_to_process_payment')); return view('sadmin.plans.payment.paymentcancel'); } /** * @return Application|Factory|View */ public function userSubscribedPlan(): \Illuminate\View\View { return view('sadmin.subscriptionPlan.index'); } public function userSubscribedPlanEdit(Request $request): JsonResponse { $subscription = Subscription::with([ 'plan:id,name,currency_id', 'tenant.user', 'plan.currency', ])->whereId($request->id)->first(); $paymentTypeName = Subscription::PAYMENT_GATEWAY[$subscription->payment_type] ?? ''; return $this->sendResponse($subscription, $paymentTypeName, 'Subscription successfully retrieved.'); } public function userSubscribedPlanUpdate(Request $request): JsonResponse { $endDate = $request->end_date; if (empty($request->end_date)) { return $this->sendError(__('messages.subscription.end_date_required')); } $endDate = $request->end_date; $format = getSuperAdminSettingValue('datetime_method'); $formattedDate = ($format == 1) ? Carbon::createFromFormat('d M, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 2) ? Carbon::createFromFormat('M d, Y', $endDate)->format('Y-m-d H:i:s') : (($format == 3) ? Carbon::createFromFormat('d/m/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 4) ? Carbon::createFromFormat('Y/m/d', $endDate)->format('Y-m-d H:i:s') : (($format == 5) ? Carbon::createFromFormat('m/d/Y', $endDate)->format('Y-m-d H:i:s') : (($format == 6) ? Carbon::createFromFormat('Y-m-d', $endDate)->format('Y-m-d H:i:s') : Carbon::parse($endDate)->format('Y-m-d H:i:s') ) ) ) ) ); $subscription = Subscription::where('id', $request->id)->update([ 'ends_at' => $formattedDate, 'status' => Subscription::ACTIVE, ]); return $this->sendResponse($subscription, __('messages.placeholder.subscription_date_updated')); } } Http/Controllers/iframeController.php000064400000002424152164577510014030 0ustar00iframeRepo = $iframeRepo; } public function store(CreateiframeRequest $request): JsonResponse { $input = $request->all(); $iframe = $this->iframeRepo->store($input); return $this->sendResponse($iframe, __('messages.flash.iframe_create')); } public function edit(Iframe $iframe): JsonResponse { return $this->sendResponse($iframe, 'iframe successfully retrieved.'); } public function update(UpdateiframeRequest $request, Iframe $iframe): JsonResponse { $input = $request->all(); $iframe = $this->iframeRepo->update($input, $iframe->id); return $this->sendResponse($iframe, __('messages.flash.iframe_update')); } public function destroy(Iframe $iframe): JsonResponse { $iframe->delete(); return $this->sendSuccess('messages.flash.iframe_delete'); } } Http/Controllers/AdminUserController.php000064400000005550152164577510014457 0ustar00userRepo = $userRepository; } public function index(): \Illuminate\View\View { return view('admin_users.index'); } /** * @return Application|Factory|View */ public function show($id): \Illuminate\View\View { $user = User::find($id); if (! empty($user) && $user->getRoleNames()[0] == 'super_admin') { return view('admin_users.show', compact('user')); } abort(404); } /** * @return Application|Factory|View */ public function create(): \Illuminate\View\View { return view('admin_users.create'); } /** * @return Application|RedirectResponse|Redirector */ public function store(CreateUserRequest $request): RedirectResponse { $input = $request->all(); $input['role'] = Role::ROLE_SUPER_ADMIN; $this->userRepo->store($input); Flash::success(__('messages.admin.admin_created_successfully')); return redirect(route('admins.index')); } /** * @return Application|Factory|View */ public function edit($id): \Illuminate\View\View { $user = User::find($id); return view('admin_users.edit', compact('user')); } /** * @return Application|RedirectResponse|Redirector */ public function update(UpdateUserRequest $request, $id): RedirectResponse { $user = User::findOrFail($id); $this->userRepo->update($request->all(), $user); Flash::success(__('messages.admin.admin_updated_successfully')); return redirect(route('admins.index')); } /** * @param User $user * @return mixed */ public function destroy(User $admin) { $adminDate = $admin->created_at; $loggedInAdminDate = Auth::user()->created_at; if ($loggedInAdminDate > $adminDate) { return $this->sendError(__('messages.admin.not_allowed_to_access')); } Vcard::where('tenant_id', $admin->tenant_id)->delete(); MultiTenant::where('id', $admin->tenant_id)->delete(); $admin->delete(); return $this->sendSuccess(__('messages.admin.admin_delete_successfully')); } } Http/Middleware/FreshInstall.php000064400000001526152164577510012670 0ustar00alreadyInstalled()) { try { DB::connection()->getPdo(); } catch (\Exception $e) { return redirect(route('installs')); } } $response = $next($request); return $response; } public function alreadyInstalled() { return file_exists(storage_path('installed')); } } Http/Middleware/ValidateSignature.php000064400000000714152164577510013703 0ustar00 */ protected $except = [ // 'fbclid', // 'utm_campaign', // 'utm_content', // 'utm_medium', // 'utm_source', // 'utm_term', ]; } Http/Middleware/TrustProxies.php000064400000001211152164577510012754 0ustar00|string|null */ protected $proxies; /** * The headers that should be used to detect proxies. * * @var int */ protected $headers = Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_AWS_ELB; } Http/Middleware/VerifyCsrfToken.php000064400000001604152164577510013352 0ustar00 */ public function hosts(): array { return [ $this->allSubdomainsOfApplicationUrl(), ]; } } Http/Middleware/RedirectIfAuthenticated.php000064400000001153152164577510015011 0ustar00check()) { return Redirect::to(getDashboardURL()); } } return $next($request); } } Http/Middleware/Authenticate.php000064400000001742152164577510012710 0ustar00authenticate($request, $guards); App::setLocale(Auth::user()->language); return $next($request); } /** * Get the path the user should be redirected to when they are not authenticated. */ protected function redirectTo(Request $request): ?string { if (! $request->expectsJson()) { return route('login'); } } } Http/Middleware/CheckVcardAnalytics.php000064400000001320152164577510014127 0ustar00where('tenant_id', getLogInTenantId())->pluck('id')->toArray(); if (in_array($request->vcard->id, $vcards)) { return $next($request); } else { abort('404'); } } } Http/Middleware/SetLanguage.php000064400000001424152164577510012466 0ustar00language); } else { App::setLocale(getSuperAdminSettingValue('default_language')); } } else { App::setLocale($localeLanguage); } return $next($request); } } Http/Middleware/DetectRegion.php000066400000006146152164577510012653 0ustar00 [ 'currency' => 'EUR', 'currency_symbol' => '', 'locale' => 'pt_PT', 'country' => 'PT', 'payment_gateway' => 'ifthen', 'stripe_key' => 'STRIPE_KEY_PT', 'stripe_secret' => 'STRIPE_SECRET_PT', 'flag' => 'PT', 'name' => 'Portugal', ], 'card.aosegundo.com.br' => [ 'currency' => 'BRL', 'currency_symbol' => 'R$', 'locale' => 'pt_BR', 'country' => 'BR', 'payment_gateway' => 'asaas', 'stripe_key' => 'STRIPE_KEY_BR', 'stripe_secret' => 'STRIPE_SECRET_BR', 'flag' => 'BR', 'name' => 'Brasil', ], 'cardfyz.com' => [ 'currency' => 'EUR', 'currency_symbol' => '', 'locale' => 'pt_BR', 'country' => 'BR', 'payment_gateway' => 'stripe_br', 'stripe_key' => 'STRIPE_KEY', 'stripe_secret' => 'STRIPE_SECRET', 'flag' => 'BR', 'name' => 'Card Ao Segundo (legado)', ], ]; public function handle(Request $request, Closure $next): Response { $host = $request->getHost(); $region = $this->regions[$host] ?? $this->regions['cardfyz.com']; // Determinar gateway activo baseado no .env (dinamico - seguro dentro do handle) if ($host === 'card.aosegundo.pt') { $activeGateway = env('GATEWAY_PT', $region['payment_gateway']); } elseif ($host === 'card.aosegundo.com.br') { $activeGateway = env('GATEWAY_BR', $region['payment_gateway']); } else { $activeGateway = env('GATEWAY_BR', $region['payment_gateway']); } // Injectar configuracoes regionais em runtime config([ 'app.currency' => $region['currency'], 'app.currency_symbol' => $region['currency_symbol'], 'app.locale' => $region['locale'], 'app.country' => $region['country'], 'app.payment_gateway' => $activeGateway, 'app.region_flag' => $region['flag'], 'app.region_name' => $region['name'], 'app.url' => 'https://' . $host, ]); // Partilhar com todas as views Blade view()->share('appRegion', $region); view()->share('appCurrency', $region['currency']); view()->share('appCountry', $region['country']); view()->share('currentDomain', $host); view()->share('activeGateway', $activeGateway); return $next($request); } } Http/Middleware/checkVcardEdit.php000064400000001532152164577510013132 0ustar00vcard->id; $tenantId = getLogInUser()->tenant_id; $VcardId = Vcard::whereTenantId($tenantId)->pluck('id')->toArray(); if (in_array($requestVcardId, $VcardId)) { return $next($request); } else { return Response::json(ResponseUtil::makeError('Seems, you are not allowed to access this record."'), 422); } } } Http/Middleware/EncryptCookies.php000064400000000446152164577510013233 0ustar00is_active || ! isset($user->email_verified_at))) { $isActive = $user->is_active; Auth::logout(); return redirect(route('login'))->withErrors(! $isActive ? 'Your account is not active. Please contact to administrator.' : 'Your email is not verified.'); } return $response; } } Http/Middleware/CheckVcardEnquiry.php000064400000003551152164577510013644 0ustar00where('tenant_id', getLogInTenantId())->pluck('id')->toArray(); if ($request->vcard) { if (in_array($request->vcard, $vcards)) { return $next($request); } else { abort('404'); } } if (! is_numeric($request->enquiry)) { if ($request->appointment) { $appointment = ScheduleAppointment::whereIn('vcard_id', $vcards)->pluck('id')->toArray(); if (in_array($request->appointment->id, $appointment)) { return $next($request); } else { abort('404'); } } $enquiry = Enquiry::whereIn('vcard_id', $vcards)->pluck('id')->toArray(); if (in_array($request->enquiry->id, $enquiry)) { return $next($request); } else { return Response::json(ResponseUtil::makeError('Seems, you are not allowed to access this record."'), 422); } } else { $enquiry = Enquiry::whereIn('vcard_id', $vcards)->pluck('id')->toArray(); if (in_array($request->enquiry, $enquiry)) { return $next($request); } else { abort('404'); } } } } Http/Middleware/XSS.php000064400000001077152164577510010750 0ustar00all(); array_walk_recursive($input, function (&$input) { $input = (is_null($input)) ? null : Purifier::clean(html_entity_decode($input)); }); $request->merge($input); return $next($request); } } Http/Middleware/Analytics.php000064400000003773152164577510012227 0ustar00root(), '', $request->url()) ?: '/'; $urlAlias = Route::current()->parameters['alias']; $vcardId = Vcard::select('id')->where('url_alias', $urlAlias)->pluck('id')->toArray(); if (! $vcardId) { return abort('404'); } $agent = new Agent(); if (! $agent->isRobot()) { $agent->setUserAgent($request->headers->get('user-agent')); $agent->setHttpHeaders($request->headers); $sessionExists = Analytic::where('session', $request->session()->getId())->where('vcard_id', $vcardId[0])->exists(); if ($sessionExists) { return $next($request); } $items = implode($agent->languages()); $lang = substr($items, 0, 2); $ip = Location::get($request->ip()); $country = $ip ? $ip->countryName : ''; Analytic::create([ 'session' => $request->session()->getId(), 'vcard_id' => $vcardId[0], 'uri' => $uri, 'source' => $request->headers->get('referer'), 'country' => $country, 'browser' => $agent->browser() ?? null, 'device' => $agent->deviceType(), 'operating_system' => $agent->platform(), 'ip' => $request->ip(), 'language' => $lang, 'meta' => json_encode(Location::get($request->ip())), ]); return $next($request); } return $next($request); } } Http/Middleware/languageChangeMiddleware.php000064400000001162152164577510015155 0ustar00alias); if (! empty($localeLanguage)) { setLocalLang($localeLanguage); return $next($request); } setLocalLang(getVcardDefaultLanguage()); return $next($request); } } Http/Middleware/CheckVcardSubscription.php000064400000001462152164577510014673 0ustar00parameters['alias']; $vcard = Vcard::select(['id', 'tenant_id'])->whereUrlAlias($urlAlias)->firstOrFail(); /** @var User $user */ $user = User::whereTenantId($vcard->tenant_id)->with('subscription')->first(); if ($user->subscription->ends_at > Carbon::now()->format('Y-m-d H:i:s')) { return $request; } return abort(404); } } Http/Middleware/PreventRequestsDuringMaintenance.php000064400000000541152164577510016761 0ustar00where('status', Subscription::ACTIVE) ->where('tenant_id', getLogInUser()->tenant_id) ->first(); if (! $subscription) { Vcard::where('tenant_id', getLogInUser()->tenant_id)->update([ 'status' => 0, ]); return redirect(route('subscription.upgrade')) ->withErrors(__('messages.subscription.subscription_expired')); } if ($subscription->isExpired()) { Vcard::where('tenant_id', getLogInUser()->tenant_id)->update([ 'status' => 0, ]); return redirect(route('subscription.upgrade')) ->withErrors(__('messages.subscription.subscription_expired')); } return $request; } } Http/Middleware/MultiTenantMiddleware.php000064400000001673152164577510014537 0ustar00tenancy = $tenancy; $this->resolver = $resolver; } /** * Handle an incoming request. */ public function handle(Request $request, Closure $next): Response { $tenant = Auth::user()->tenant_id; return $this->initializeTenancy( $request, $next, $tenant ); } } Http/Middleware/TrimStrings.php000064400000000575152164577510012562 0ustar00 */ protected $except = [ 'current_password', 'password', 'password_confirmation', ]; } Models/AboutUs.php000064400000004452152164577510010104 0ustar00 'string', 'description' => 'string', 'language' => 'string', 'slug' => 'string' ]; public static $rules = [ 'language' => 'string|max:10', 'slug' => 'string|max:100', 'title.*' => 'string|max:100', 'description.*' => 'string|max:500', 'image.*' => 'mimes:jpg,bmp,png,apng,avif,jpeg,', ]; const PATH = 'aboutUs'; public function getAboutUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('front/images/about-1.png'); } } Models/Appointment.php000064400000004427152164577510011022 0ustar00 'integer', 'day_of_week' => 'integer', 'start_time' => 'string', 'end_time' => 'string', ]; const ALL = 0; const BOOKED = 1; const CHECK_IN = 2; const CHECK_OUT = 3; const CANCELLED = 4; const STATUS = [ self::BOOKED => 'Booked', self::CHECK_IN => 'Check In', self::CHECK_OUT => 'Check Out', self::CANCELLED => 'Cancelled', ]; const STRIPE = 1; const PAYPAL = 2; const PAYSTACK = 3; const PHONEPE = 4; const MANUALLY = 7; const FLUTTERWAVE = 8; const APPROVED = 5; const REJECT = 6; const PAYMENT_METHOD = [ self::STRIPE => 'Stripe', self::PAYPAL => 'Paypal', self::PAYSTACK => 'Paystack', self::PHONEPE => 'PhonePe', self::MANUALLY => 'Manually', self::FLUTTERWAVE => 'Flutterwave', ]; } Models/Product.php000064400000007647152164577510010153 0ustar00 'string', 'currency_id' => 'integer', 'price' => 'string', 'description' => 'string', 'vcard_id' => 'integer', 'product_url' => 'string', ]; public static $rules = [ 'name' => 'required|string|min:2', 'price' => 'nullable|numeric|min:0', 'currency_id' => 'required_with:price', 'description' => 'string|nullable', 'product_icon' => 'required|mimes:jpg,jpeg,png', 'product_url' => 'nullable|url', ]; const PRODUCT_PATH = 'vcards/products'; const STRIPE = 1; const PAYPAL = 2; const MANUALLY = 3; const RAZORPAY = 6; const PHONEPE = 4; const PAYSTACK = 5; const FLUTTERWAVE = 7; const SELECT_PAYMENT_GATEWAY = 0; const PAYMENT_METHOD = [ self::SELECT_PAYMENT_GATEWAY => 'Select Payment Gateway', self::STRIPE => 'Stripe', self::PAYPAL => 'Paypal', self::MANUALLY => 'Manually', self::RAZORPAY => 'Razorpay', self::PHONEPE => 'PhonePe', self::PAYSTACK => 'Paystack', self::FLUTTERWAVE => 'Flutterwave', ]; const APPROVED = 0; const PENDING = 1; const REJECT = 2; const STATUS_ARR = [ self::APPROVED => 'Approved', self::REJECT => 'Reject', self::PENDING => 'Pending', ]; public function getProductIconAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PRODUCT_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('assets/images/default_service.png'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function currency(): BelongsTo { return $this->belongsTo(Currency::class, 'currency_id'); } } Models/PlanTemplate.php000064400000002121152164577510011077 0ustar00 'integer', 'template_id' => 'integer', ]; } Models/Subscription.php000064400000013706152164577510011210 0ustar00 'Stripe', self::PAYPAL => 'Paypal', self::RAZORPAY => 'Razorpay', self::MANUALLY => 'Manually', self::PAYSTACK => 'Paystack', self::PHONEPE => 'PhonePe', self::FLUTTERWAVE => 'Flutterwave', ]; const PAYMENT_TYPES = [ self::TYPE_FREE => 'Free Plan', self::TYPE_STRIPE => 'Stripe', self::TYPE_PAYPAL => 'PayPal', self::TYPE_RAZORPAY => 'RazorPay', ]; const TYPE = [ 'stripe' => 'Stripe', 'paypal' => 'PayPal', 'razorpay' => 'RazorPay', 'manually' => 'Manually', ]; const ACTIVE = 1; const INACTIVE = 0; const PENDING = 2; const REJECT = 3; const STATUS_ARR = [ self::ACTIVE => 'Active', self::INACTIVE => 'Deactive', self::PENDING => 'Pending', self::REJECT => 'Reject', ]; const MONTH = 'Month'; const YEAR = 'Year'; public const ATTACHMENT_PATH = 'attachment'; public const NOTES_PATH = 'notes'; protected $appends = ['attachment']; /** * @var array */ protected $fillable = [ 'tenant_id', 'plan_id', 'transaction_id', 'plan_amount', 'discount', 'payable_amount', 'plan_frequency', 'starts_at', 'ends_at', 'trial_ends_at', 'status', 'coupon_code_meta', 'no_of_vcards', 'notes', 'payment_type', ]; public function getAttachmentAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::ATTACHMENT_PATH)->first(); if (! empty($media)) { return $media->getFullUrl(); } return false; } protected $casts = [ 'tenant_id' => 'string', 'plan_id' => 'integer', 'transaction_id' => 'integer', 'plan_amount' => 'double', 'discount' => 'double', 'payable_amount' => 'double', 'plan_frequency' => 'integer', 'starts_at' => 'datetime', 'ends_at' => 'datetime', 'trial_ends_at' => 'datetime', 'status' => 'integer', 'coupon_code_meta' => 'json', 'no_of_vcards' => 'double', 'payment_type' => 'string', ]; public function plan(): BelongsTo { return $this->belongsTo(Plan::class, 'plan_id'); } public function isExpired(): bool { $now = Carbon::now(); if ($this->ends_at > $now) { return false; } // this means the subscription is ended. if ((! empty($this->trial_ends_at) && $this->trial_ends_at < $now) || $this->ends_at < $now) { return true; } // this means the subscription is not ended. return false; } public function transactions(): HasOne { return $this->hasOne(Transaction::class, 'transaction_id', 'id'); } public function users(): BelongsTo { return $this->belongsTo(Subscription::class); } } Models/CustomLink.php000064400000001515152164577510010607 0ustar00 'required', 'link' => 'required|url', ]; const SQUARE = 'square'; const ROUND = 'rounded'; const BUTTON_STYLE = [ self::SQUARE => 'square', self::ROUND => 'rounded', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/MailSetting.php000064400000002773152164577510010746 0ustar00 'integer', 'mail_protocol' => 'integer', 'mail_host' => 'string', 'mail_port' => 'integer', 'mail_username' => 'string', 'mail_password' => 'string', 'sender_email_address' => 'string', 'mail_encryption' => 'string', ]; const SMTP = 1; const MAIL_LOG = 2; const SENDMAIL = 3; const TYPE = [ self::SMTP => 'SMTP', self::MAIL_LOG => 'log', self::SENDMAIL => 'SENDMAIL', ]; const TLS = 1; const SSL = 2; const NULL = 3; const ENCRYPTION_TYPE = [ self::TLS => 'tls', self::SSL => 'ssl', self::NULL => 'null', ]; public static $rules = [ 'mail_protocol' => 'required', 'mail_host' => 'required|max:100', 'mail_port' => 'required|integer|min:1', 'mail_username' => 'required|max:100', 'mail_password' => 'required|min:6|max:190', 'mail_encryption' => 'required', 'sender_email_address' => 'required|email:filter|max:100', ]; } Models/EmailSubscription.php000064400000002165152164577510012155 0ustar00 'string', ]; public static $rules = [ 'email' => 'required|email:filter|unique:email_subscriptions,email', ]; } Models/Banner.php000064400000001677152164577510007735 0ustar00 'string', 'title' => 'string', 'description' => 'string', 'banner_button' => 'string', ]; /** * @var array */ public static $rules = [ 'url' => 'url', 'title' => 'required|string', 'description' => 'required|string', 'banner_button' => 'required|string', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/FrontTestimonial.php000064400000004144152164577520012022 0ustar00 'string', 'description' => 'string', ]; const PATH = 'testimonials'; protected $appends = ['testimonial_url']; public static $rules = [ 'name' => 'string|min:2', 'description' => 'string|max:250', 'image' => 'required|mimes:jpg,jpeg,png', ]; public function getTestimonialUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('assets/img/testimonials/male.jpeg'); } } Models/ScheduleAppointment.php000064400000007200152164577520012470 0ustar00 'string', 'email' => 'string', 'date' => 'string', 'phone' => 'string', 'from_time' => 'string', 'to_time' => 'string', 'vcard_id' => 'integer', 'appointment_tran_id' => 'integer', 'status' => 'integer', ]; public static $rules = [ 'name' => 'required|min:2', 'email' => 'required|email:filter', 'phone' => 'required|nullable|numeric|min:0', ]; const FREE = 0; const PAID = 1; const ALL = 3; const TYPES = [ self::ALL => 'All', self::FREE => 'Free', self::PAID => 'Paid', ]; const PENDING = 0; const COMPLETED = 1; const STATUS_ALL = 3; const STATUS = [ self::STATUS_ALL => 'All', self::PENDING => 'Pending', self::COMPLETED => 'Completed', ]; protected $appends = ['paid_amount']; public function getPaidAmountAttribute(): string { $transaction = $this->appointmentTransaction; if ($transaction) { return getCurrencyAmount($transaction->currency_symbol, $transaction->amount); } return ''; } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class , 'vcard_id'); } public function appointmentTransaction(): BelongsTo { return $this->belongsTo(AppointmentTransaction::class,'appointment_tran_id','id'); } } Models/Traits/StorageLimit.php000064400000003645152164577520012377 0ustar00hasRole(Role::ROLE_ADMIN)) { $total = totalStorage() + $file->getSize() / (1024 * 1024); $planStorage = getCurrentSubscription()->plan->storage_limit; if ($total < $planStorage) { return app(FileAdderFactory::class)->create($this, $file); } else { throw new StorageLimitExceededException(__('messages.storage_full')); } } else { return app(FileAdderFactory::class)->create($this, $file); } } public function newClearMediaCollection($input, string $collectionName = 'default'): HasMedia { $oldMediaStorage = $this->getMedia($collectionName)->sum('size') / (1024*1024); $newMediaStorage = $input->getSize() / (1024*1024); $total = totalStorage() - $oldMediaStorage + $newMediaStorage; $planStorage = getCurrentSubscription()->plan->storage_limit; if ($total > $planStorage) { throw new StorageLimitExceededException(__('messages.storage_full')); } $this ->getMedia($collectionName) ->each(fn (Media $media) => $media->delete()); event(new CollectionHasBeenCleared($this, $collectionName)); if ($this->mediaIsPreloaded()) { unset($this->media); } return $this; } } Models/AffiliateUser.php000064400000005105152164577520011242 0ustar00whereIsVerified(true); }); } protected $fillable = [ 'affiliated_by', 'user_id', 'is_verified', 'amount', ]; protected $casts = [ 'affiliated_by' => 'integer', 'user_id' => 'integer', 'is_verified' => 'integer', 'amount' => 'integer', ]; protected $appends = ['total_amount']; public function affiliated_by_user(): BelongsTo { return $this->belongsTo(User::class, 'affiliated_by'); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id', 'id')->withoutGlobalScope(TenantScope::class); } public function getTotalAmountAttribute() { return $this->where('affiliated_by', $this->affiliated_by)->sum('amount'); } } Models/Withdrawal.php000064400000004142152164577520010625 0ustar00 'integer', 'email' => 'string', 'amount' => 'integer', 'is_approved' => 'integer', 'rejection_note' => 'string', ]; const INPROCESS = '0'; const APPROVED = '1'; const REJECTED = '2'; const APPROVAL_STATUS = [ self::INPROCESS => 'In Process', self::APPROVED => 'Approved', self::REJECTED => 'Rejected', ]; public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(User::class, 'user_id'); } } Models/NfcOrderTransaction.php000064400000000614152164577520012427 0ustar00belongsTo(Vcard::class, 'vcard_id'); } } Models/Role.php000064400000004055152164577520007423 0ustar00 'string', 'display_name' => 'string', 'is_default' => 'integer', 'guard_name' => 'string', ]; /** * @var array */ public static $rules = [ 'display_name' => 'required|unique:roles,name', 'permission_id' => 'required', ]; } Models/Transaction.php000064400000004371152164577520011010 0ustar00 'string', 'amount' => 'double', 'type' => 'integer', 'tenant_id' => 'string', 'status' => 'integer', 'meta' => 'json', ]; const SUCCESS = 1; const FAILED = 0; const STRIPE = 1; const PAYPAL = 2; const PAYSTACK = 3; const PHONEPE = 4; const FLUTTERWAVE = 5; const TYPE = [ self::STRIPE => 'Stripe', self::PAYPAL => 'paypal', self::PAYSTACK => 'Paystack', self::PHONEPE => 'PhonePe', self::FLUTTERWAVE => 'Flutterwave', ]; } Models/Feature.php000064400000004512152164577520010113 0ustar00 'string', 'slug' => 'string', 'name' => 'string', 'description' => 'string', ]; public static $rules = [ 'language' => 'required|string', 'name' => 'required', 'description' => 'required', 'featureImage' => 'required|mimes:jpg,bmp,png', ]; protected $appends = ['profile_image']; protected $with = ['media']; protected $table = 'features'; public function getProfileImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } }Models/PrivacyPolicy.php000064400000003070152164577520011313 0ustar00 'string', 'vcard_id' => 'integer', ]; const PRIVACY_POLICY = 'privacy-policy'; public $table = 'privacy_policies'; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function dynamicVcard() { return $this->hasOne(DynamicVcard::class, 'vcard_id'); } } Models/FrontFAQs.php000064400000001012152164577520010313 0ustar00 'string', 'description' => 'string', ]; public static $rules = [ 'title' => 'required|string|min:3', 'description' => 'required|string|min:3', ]; } Models/PaymentGateway.php000064400000002363152164577520011461 0ustar00 'integer', 'payment_gateway' => 'string', ]; } Models/MultiTenant.php000064400000004124152164577520010763 0ustar00 'array', ]; protected $dispatchesEvents = [ 'saving' => SavingTenant::class, 'saved' => TenantSaved::class, 'creating' => CreatingTenant::class, 'updating' => UpdatingTenant::class, 'updated' => TenantUpdated::class, 'deleting' => DeletingTenant::class, 'deleted' => TenantDeleted::class, ]; public function user(): BelongsTo { return $this->belongsTo(User::class, 'id', 'tenant_id'); } } Models/PlanFeature.php000064400000007272152164577520010734 0ustar00 'integer', 'products_services' => 'integer', 'testimonials' => 'integer', 'hide_branding' => 'integer', 'enquiry_form' => 'integer', 'social_links' => 'integer', 'custom_links' => 'integer', 'password' => 'integer', 'custom_css' => 'integer', 'custom_js' => 'integer', 'custom_fonts' => 'integer', 'products' => 'integer', 'appointments' => 'integer', 'gallery' => 'integer', 'analytics' => 'integer', 'seo' => 'integer', 'blog' => 'integer', 'affiliation' => 'integer', 'custom_qrcode' => 'integer', 'insta_embed' => 'integer', 'iframes' => 'integer', ]; public function plan(): BelongsTo { return $this->belongsTo(Plan::class, 'plan_id'); } } Models/Setting.php000064400000007065152164577520010143 0ustar00 'string', 'value' => 'string', 'language' => 'string', ]; const HOME_PAGE_THEME = [ 1 => 'Theme 1', 2 => 'Theme 2', ]; const FORMAT1 = 1; const FORMAT2 = 2; const FORMAT3 = 3; const FORMAT4 = 4; const FORMAT5 = 5; const FORMAT6 = 6; const DATE_FORMATE = [ self::FORMAT1 => 'Day Month, Year', self::FORMAT2 => 'Month Day, Year', self::FORMAT3 => 'DD/MM/YYYY', self::FORMAT4 => 'YYYY/MM/DD', self::FORMAT5 => 'MM/DD/YYYY', self::FORMAT6 => 'YYYY-MM-DD', ]; const AFFILIATION_FORMAT1 = 1; const AFFILIATION_FORMAT2 = 2; const AFFILIATION_FORMATE = [ self::AFFILIATION_FORMAT1 => 'Fix Amount', self::AFFILIATION_FORMAT2 => 'Percentage (%)', ]; /** * @var array */ public static $rules = [ 'app_name' => 'required|string|max:30', 'app_logo' => 'nullable|mimes:jpg,jpeg,png', ]; public const PATH = 'settings'; public const FRONTPATH = 'front_cms'; public function getLogoUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset($this->value); } public function getFaviconUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset($this->value); } public function getfrontCmsAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::FRONTPATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset($this->value); } public function country(): BelongsTo { return $this->belongsTo(Country::class, 'country_id'); } } Models/Vcard.php000064400000037317152164577520007570 0ustar00 'string', 'name' => 'string', 'occupation' => 'string', 'description' => 'string', 'first_name' => 'string', 'last_name' => 'string', 'email' => 'string', 'region_code' => 'string', 'phone' => 'string', 'location' => 'string', 'location_url' => 'string', 'template_id' => 'integer', 'share_btn' => 'integer', 'company' => 'string', 'job_title' => 'string', 'dob' => 'string', 'password' => 'string', 'branding' => 'integer', 'font_family' => 'string', 'font_size' => 'string', 'custom_css' => 'string', 'custom_js' => 'string', 'status' => 'integer', 'enable_download_qr_code' => 'integer', 'tenant_id' => 'string', 'qr_code_download_size' => 'integer', 'site_title' => 'string', 'home_title' => 'string', 'meta_keyword' => 'string', 'meta_description' => 'string', 'google_analytics' => 'string', 'default_language' => 'string', 'language_enable' => 'string', 'enable_enquiry_form' => 'integer', 'made_by_url' => 'string', 'made_by' => 'string', 'alternative_email' => 'string', 'alternative_phone' => 'string', 'alternative_region_code' => 'string', 'services_slider_view' => 'integer', 'cover_image_type' => 'string', ]; const VERIFIED = 1; const NOTVERIFIED = 0; const SELECT_VERIFIED = 2; const STATUS_ARR = [ self::SELECT_VERIFIED => 'Select Verified', self::VERIFIED => 'Verified', self::NOTVERIFIED => 'Not Verified', ]; /** * @var string[] */ protected $appends = ['profile_url', 'cover_url', 'profile_url_base64', 'full_name']; /** * Validation rules * * @var array */ public static $rules = [ 'url_alias' => 'string|min:6|max:24|unique:vcards,url_alias', 'name' => 'string|min:2', 'occupation' => 'nullable|string', 'first_name' => 'string|min:2', 'description' => 'nullable|string', 'last_name' => 'string', 'company' => 'nullable|string', 'job_title' => 'nullable|string', 'email' => 'nullable|email:filter', 'phone' => 'nullable', 'made_by_url' => 'nullable|url', 'made_by' => 'nullable|', 'alternative_email' => 'nullable|email:filter', 'alternative_phone' => 'nullable', ]; const PROFILE_PATH = 'vcards/profiles'; const COVER_PATH = 'vcards/covers'; const LANGUAGE_ENABLE = 1; const TEMPLATE_1 = 1; const TEMPLATE_2 = 2; const TEMPLATE_3 = 3; const TEMPLATE_4 = 4; const TEMPLATE = [ self::TEMPLATE_1, self::TEMPLATE_2, self::TEMPLATE_3, self::TEMPLATE_4, ]; const ACTIVE = 1; const INACTIVE = 0; const SELECT_STATUS = 2; const STATUS = [ self::SELECT_STATUS => 'Select Status', self::ACTIVE => 'Active', self::INACTIVE => 'Deactive', ]; const TEMPLATE_URL = [ self::TEMPLATE_1 => 'assets/images/default_cover_image.jpg', self::TEMPLATE_2 => 'assets/images/default_cover_image.jpg', self::TEMPLATE_3 => 'assets/images/default_cover_image.jpg', self::TEMPLATE_4 => 'assets/images/default_cover_image.jpg', ]; const FONT_FAMILY = [ 'Poppins' => 'Default', 'Roboto' => 'Roboto', 'Times New Roman' => 'Times New Roman', 'Open Sans' => 'Open Sans', 'Montserrat' => 'Montserrat', 'Lato' => 'Lato', 'Raleway' => 'Raleway', 'PT Sans' => 'PT Sans', 'Merriweather' => 'Merriweather', 'Prompt' => 'Prompt', 'Work Sans' => 'Work Sans', 'Concert One' => 'Concert One', ]; const LINK = 0; const EMBED_TAG = 1; const LOCATION_TYPE = [ self::LINK => 'link', self::EMBED_TAG => 'embed_tag', ]; const COVER = 0; const CONTAIN = 1; const COVER_IMAGE_TYPE = [ self::COVER => 'cover', self::CONTAIN => 'contain', ]; public function getFullNameAttribute(): string { return $this->first_name . ' ' . $this->last_name; } public function getProfileUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/user2.png'); } public function getProfileUrlBase64Attribute(): string { $url = asset('web/media/avatars/user2.png'); /** @var Media $media */ $media = $this->getMedia(self::PROFILE_PATH)->first(); if ($media !== null) { $url = $media->getFullUrl(); } return base64_encode($url); } public function getCoverUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::COVER_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('assets/images/default_cover_image.jpg'); } public function template(): BelongsTo { return $this->belongsTo(Template::class, 'template_id'); } public function services(): HasMany { return $this->hasMany(VcardService::class, 'vcard_id'); } public function gallery(): HasMany { return $this->hasMany(Gallery::class, 'vcard_id'); } public function products(): HasMany { return $this->hasMany(Product::class, 'vcard_id'); } public function InstagramEmbed(): HasMany { return $this->hasMany(InstagramEmbed::class, 'vcard_id'); } public function testimonials(): HasMany { return $this->hasMany(Testimonial::class, 'vcard_id'); } public function socialLink(): HasOne { return $this->hasOne(SocialLink::class, 'vcard_id'); } public function subscriptions(): HasMany { return $this->hasMany(Subscription::class, 'tenant_id', 'tenant_id'); } public function user(): HasOne { return $this->hasOne(User::class, 'tenant_id', 'tenant_id'); } public function appointmentDetail(): HasOne { return $this->hasOne(AppointmentDetail::class, 'vcard_id'); } public function businessCard(): HasOne { return $this->hasOne(BusinessCards::class, 'vcard_id'); } public function businessHours(): HasMany { return $this->hasMany(BusinessHour::class, 'vcard_id', 'id'); } public function appointmentHours(): HasMany { return $this->hasMany(Appointment::class, 'vcard_id', 'id'); } public function enquiry(): HasMany { return $this->hasMany(Enquiry::class, 'vcard_id'); } public function Analytics(): HasMany { return $this->hasMany(Analytic::class, 'vcard_id'); } public function blogs(): HasMany { return $this->hasMany(VcardBlog::class, 'vcard_id'); } public function privacy_policy(): HasOne { return $this->hasOne(PrivacyPolicy::class, 'vcard_id'); } public function term_condition(): HasOne { return $this->hasOne(TermCondition::class, 'vcard_id'); } public function schedule_appointments(): HasMany { return $this->hasMany(ScheduleAppointment::class, 'vcard_id'); } public function subscriptions_email(): HasMany { return $this->hasMany(VcardEmailSubscription::class, 'vcard_id'); } public function banners() { return $this->hasMany(Banner::class); } public function iframes() { return $this->hasMany(Iframe::class); } public function dynamic_vcard(): HasMany { return $this->hasMany(DynamicVcard::class, 'vcard_id'); } public function customeLink(): HasMany { return $this->hasMany(CustomLink::class, 'vcard_id'); } public function Qrcode() { return $this->hasMany(QrcodeEdit::class); } } Models/ContactRequest.php000064400000001046152164577520011463 0ustar00 'required|string|max:180', 'email' => 'required|email|max:191|unique:contact_requests,email,', 'phone' => 'required|numeric', ]; } Models/PlanCustomField.php000064400000000622152164577520011547 0ustar00belongsTo(Plan::class); } } Models/State.php000064400000002750152164577520007602 0ustar00 'integer', 'name' => 'string', ]; /** * @var array */ public static $rules = [ 'name' => 'required|max:180|unique:states,name,', 'country_id' => 'required', ]; public function country(): BelongsTo { return $this->belongsTo(Country::class, 'country_id'); } } Models/ProductTransaction.php000064400000005176152164577520012355 0ustar00belongsTo(Product::class); } public function currency(){ return $this->belongsTo(Currency::class); } } Models/InstagramEmbed.php000064400000001725152164577520011405 0ustar00 'string', 'embedtag' => 'string', 'vcard_id' => 'integer', ]; public static $rules = [ 'type' => 'required', 'embedtag' => 'nullable|required', ]; const TYPE_POST = 0; const TYPE_REEL = 1; const TYPE = [ self::TYPE_POST => 'Post', self::TYPE_REEL => 'Reel', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function getTypeNameAttribute($value): string { return self::TYPE[$this->type]; } } Models/MultibancoReference.php000066400000001576152164577520012445 0ustar00 'float', 'expires_at' => 'datetime', 'paid_at' => 'datetime', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class); } public function isExpired(): bool { return $this->expires_at && $this->expires_at->isPast(); } public function isPaid(): bool { return $this->status === 'paid'; } } Models/AppointmentTransaction.php000064400000005430152164577520013224 0ustar00 'integer', 'transaction_id' => 'string', 'currency_id' => 'integer', 'amount' => 'double', 'tenant_id' => 'string', 'status' => 'integer', 'type' => 'string', 'meta' => 'json', ]; protected $appends = ['currency_symbol']; public function currency(): BelongsTo { return $this->belongsTo(Currency::class, 'currency_id'); } public function getCurrencySymbolAttribute(): string { return $this->currency->currency_icon; } public function scheduleAppointments(): HasOne { return $this->hasOne(ScheduleAppointment::class,'appointment_tran_id','id'); } } Models/Group.php000064400000001223152164577520007610 0ustar00 'string', 'name' => 'string', ]; public function user(): HasOne { return $this->hasOne(User::class, 'tenant_id', 'tenant_id'); } public function businessCard(): HasOne { return $this->hasOne(BusinessCards::class, 'group_id'); } } Models/Blog.php000064400000002414152164577520007402 0ustar00 'required', 'slug' => 'required', 'blog_image' => 'required', 'description' => 'required', ]; const BLOGIMAGE = 'blog_img'; const IS_ACTIVE = 1; const DEACTIVATE = 0; const SELECT_STATUS = 2; const STATUS_ARR = [ self::SELECT_STATUS => 'Select Status', self::IS_ACTIVE => 'Active', self::DEACTIVATE => 'Deactivate', ]; protected $appends = ['blog_image',]; public function getBlogImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::BLOGIMAGE)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } } Models/SocialLink.php000064400000006704152164577520010555 0ustar00 'integer', 'website' => 'string', 'twitter' => 'string', 'facebook' => 'string', 'instagram' => 'string', 'youtube' => 'string', 'tumblr' => 'string', 'reddit' => 'string', 'linkedin' => 'string', 'whatsapp' => 'string', 'pinterest' => 'string', 'tiktok' => 'string', 'snapchat' => 'string', ]; protected $appends = ['social_icon']; const SOCIAL_ICON = 'icon'; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function getSocialIconAttribute() { /** @var Media $media */ $media = $this->getMedia(self::SOCIAL_ICON)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } public function icon() { return $this->hasMany(SocialIcon::class, 'social_link_id'); } } Models/VcardService.php000064400000005035152164577520011101 0ustar00 'required|string|min:2', 'description' => 'string|max:250', 'service_icon' => 'required|mimes:jpg,jpeg,png', 'service_url' => 'nullable|url', ]; const SERVICES_PATH = 'vcards/services'; public function getServiceIconAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::SERVICES_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('assets/images/default_service.png'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/QrcodeEdit.php000064400000003641152164577520010545 0ustar00 'square', self::DOT => 'dot', self::ROUND => 'round', ]; const EYE_SQUARE = 'square'; const EYE_CIRCLE = 'circle'; const QRCODE_EYE_STYLE = [ self::EYE_SQUARE => 'square', self::EYE_CIRCLE => 'circle', ]; protected $table = 'qr_code_customizations'; protected $fillable = [ 'name', 'tenant_id', 'vcard_id', 'key', 'value', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/VcardBlog.php000064400000004727152164577520010373 0ustar00 'required|string|min:2|max:100', 'description' => 'string|required', 'blog_icon' => 'required|mimes:jpg,jpeg,png', ]; protected $table = 'vcard_blog'; protected $appends = ['blog_icon']; protected $with = ['media']; protected $fillable = [ 'title', 'description', 'vcard_id', ]; public function getBlogIconAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::BLOG_PATH)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('assets/images/default_service.png'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function dynamicVcard() { return $this->hasOne(DynamicVcard::class, 'vcard_id'); } } Models/Plan.php000064400000011407152164577520007413 0ustar00 'string', 'currency_id' => 'integer', 'price' => 'double', 'frequency' => 'integer', 'is_default' => 'integer', 'trial_days' => 'integer', 'no_of_vcards' => 'integer', 'storage_limit' => 'integer', ]; const IS_DEFAULT = 1; const IS_ACTIVE = 1; const IS_DEACTIVE = 0; const TRIAL_DAYS = 7; const MONTHLY = 1; const YEARLY = 2; const UNLIMITED = 3; const DURATION = [ self::MONTHLY => 'Month', self::YEARLY => 'Year', self::UNLIMITED => 'Unlimited', ]; const STRIPE = 1; const PAYPAL = 2; const RAZORPAY = 3; const MANUALLY = 4; const PAYSTACK = 5; const PHONEPE = 6; const FLUTTERWAVE = 7; const PAYMENT_METHOD = [ self::STRIPE => 'Stripe', self::PAYPAL => 'Paypal', self::RAZORPAY => 'Razorpay', self::MANUALLY => 'Manually', self::PAYSTACK => 'Paystack', self::PHONEPE => 'PhonePe', self::FLUTTERWAVE => 'Flutterwave', ]; const PAYPAL_MODE = [ 'sandbox' => 'Sandbox', 'live' => 'Live', ]; /** * @var array */ public static $rules = [ 'name' => 'required|string|min:2|unique:plans,name,', 'currency_id' => 'required', // 'no_of_vcards' => 'required|numeric', 'custom_vcard_number.*' => 'required_if:custom_select,1|numeric', 'custom_vcard_price.*' => 'required_if:custom_select,1|numeric', ]; public function currency(): BelongsTo { return $this->belongsTo(Currency::class, 'currency_id'); } public function planFeature(): HasOne { return $this->hasOne(PlanFeature::class, 'plan_id'); } public function subscriptions(): HasMany { return $this->hasMany(Subscription::class, 'plan_id'); } public function templates(): BelongsToMany { return $this->belongsToMany(Template::class); } public function hasZeroPlan() { if (getLogInUser()) { return $this->hasMany(Subscription::class)->where('plan_amount', 0) ->where('tenant_id', getLogInUser()->tenant_id); } return $this->hasMany(Subscription::class)->where('plan_amount', 0); } public function planCustomFields() { return $this->hasMany(PlanCustomField::class, 'plan_id'); } } Models/SocialAccount.php000064400000003103152164577520011242 0ustar00 'string', 'provider' => 'string', 'provider_id' => 'string', ]; public function user(): BelongsTo { return $this->belongsTo(User::class); } } Models/VcardSubscribers.php000064400000000365152164577520011770 0ustar00 'string', 'slug' => 'string', 'name' => 'string', 'description' => 'string', ]; public static $rules = [ 'language' => 'required|string|max:5', 'name' => 'required', 'description' => 'required', 'featureImage' => 'required|mimes:jpg,bmp,png', ]; protected $appends = ['profile_image']; protected $with = ['media']; protected $table = 'features'; public function getProfileImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } }Models/Meta.php000064400000003116152164577520007405 0ustar00 'string', 'home_title' => 'string', 'meta_keyword' => 'string', 'meta_description' => 'string', 'google_analytics' => 'string', ]; } Models/Iframe.php000064400000001145152164577520007722 0ustar00 'string', 'vcard_id' => 'integer', ]; public static $rules = [ 'url' => 'required|url', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/Enquiry.php000064400000004623152164577520010157 0ustar00 'integer', 'name' => 'string', 'email' => 'string', 'phone' => 'double', 'message' => 'string', ]; /** * @var array */ public static $rules = [ 'name' => 'required|min:2', 'email' => 'required|email:filter', 'phone' => 'nullable|numeric|regex:/^([0-9\s\-\+\(\)]*)$/|min:10', 'message' => 'required|min:2|max:255', ]; const ATTACHMENT = 'attachment'; protected $appends = ['attachment']; public function getattachmentAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::ATTACHMENT)->first(); if (!empty($media)) { return $media->getFullUrl(); } return false; } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class); } } Models/City.php000064400000003026152164577520007427 0ustar00 'integer', 'name' => 'string', ]; /** * @var array */ public static $rules = [ 'name' => 'required|max:180|unique:cities,name,', 'state_id' => 'required', ]; public function state(): BelongsTo { return $this->belongsTo(State::class, 'state_id'); } } Models/Nfc.php000064400000003201152164577520007220 0ustar00 'required|string', 'price' => 'required|integer', 'description' => 'required|string', 'nfc_img' => 'required|mimes:jpg,jpeg,png', 'nfc_back_img' => 'required|mimes:jpg,jpeg,png', ]; protected $appends = ['nfc_image', 'nfc_back_image']; protected $with = ['media']; public function getNfcImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::NFC_PATH)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('assets/img/nfc/card_default.png'); } public function getNfcBackImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::NFC_BACK_IMAGE)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('assets/img/nfc/card_default.png'); } protected $fillable = [ 'name', 'description', 'price', 'nfc_img', 'nfc_back_img', ]; public function nfcOrders() { return $this->hasMany(NfcOrders::class,'card_type','id'); } } Models/SocialIcon.php000064400000003502152164577520010541 0ustar00getMedia(self::SOCIAL_ICON)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } } Models/BusinessHour.php000064400000004102152164577520011144 0ustar00 'integer', 'day_of_week' => 'integer', 'start_time' => 'string', 'end_time' => 'string', ]; const MON = 1; const TUE = 2; const WED = 3; const THU = 4; const FRI = 5; const SAT = 6; const SUN = 7; const DAY_OF_WEEK = [ self::MON => 'mon', self::TUE => 'tue', self::WED => 'wed', self::THU => 'thu', self::FRI => 'fri', self::SAT => 'sat', self::SUN => 'sun', ]; const WEEKDAY_NAME = [ self::MON => 'MON', self::TUE => 'TUE', self::WED => 'WED', self::THU => 'THU', self::FRI => 'FRI', self::SAT => 'SAT', self::SUN => 'SUN', ]; } Models/TermCondition.php000064400000002654152164577520011303 0ustar00 'string', 'vcard_id' => 'integer', ]; public $table = 'term_conditions'; const TERM_CONDITION = 'term-condition'; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/VcardEmailSubscription.php000064400000003272152164577520013136 0ustar00 'string', 'vcard_id' => 'integer', ]; public static $rules = [ 'email' => 'required|email', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } } Models/NfcCardOrder.php000064400000003525152164577520011017 0ustar00belongsTo(Vcard::class); } public function user(){ return $this->belongsTo(User::class); } public function nfc(){ return $this->belongsTo(Nfc::class, 'nfc_card_type_id', 'id'); } } Models/Permission.php000064400000002451152164577520010650 0ustar00 'string', 'display_name' => 'string', 'guard_name' => 'string', ]; } Models/EmailVerification.php000064400000002505152164577520012112 0ustar00 'integer', 'email' => 'string', 'token' => 'string', ]; } Models/AppointmentDetail.php000064400000003226152164577520012142 0ustar00 'integer', 'is_paid' => 'integer', 'price' => 'double', ]; } Models/User.php000064400000034534152164577520007445 0ustar00 'string', 'last_name' => 'string', 'email' => 'string', 'contact' => 'string', 'region_code' => 'string', 'affiliate_code' => 'string', 'is_active' => 'integer', 'email_verified_at' => 'datetime', 'password' => 'string', 'theme_mode' => 'integer', 'language' => 'string', 'tenant_id' => 'string', 'remember_token' => 'string', ]; const LANGUAGES = [ 'ar' => 'Arabic', 'zh' => 'Chinese', 'en' => 'English', 'fr' => 'French', 'de' => 'German', 'pt' => 'Portuguese', 'ru' => 'Russian', 'es' => 'Spanish', 'tr' => 'Turkish', 'it' => 'Italian', 'pt-br' => 'Portuguese (Brazil)', ]; const ALL_LANGUAGES = [ 'af' => 'Afrikaans', 'sq' => 'Albanian - shqip', 'am' => 'Amharic - አማርኛ', 'ar' => 'Arabic - العربية', 'an' => 'Aragonese - aragonés', 'hy' => 'Armenian - հայերեն', 'ast' => 'Asturian - asturianu', 'az' => 'Azerbaijani - azərbaycan dili', 'eu' => 'Basque - euskara', 'be' => 'Belarusian - беларуская', 'bn' => 'Bengali - বাংলা', 'bs' => 'Bosnian - bosanski', 'br' => 'Breton - brezhoneg', 'bg' => 'Bulgarian - български', 'ca' => 'Catalan - català', 'ckb' => 'Central Kurdish - کوردی (دەستنوسی عەرەبی)', 'zh' => 'Chinese - 中文', 'zh-HK' => 'Chinese (Hong Kong) - 中文(香港)', 'zh-CN' => 'Chinese (Simplified) - 中文(简体)', 'zh-TW' => 'Chinese (Traditional) - 中文(繁體)', 'co' => 'Corsican', 'hr' => 'Croatian - hrvatski', 'cs' => 'Czech - čeština', 'da' => 'Danish - dansk', 'nl' => 'Dutch - Nederlands', 'en' => 'English', 'en-AU' => 'English (Australia)', 'en-CA' => 'English (Canada)', 'en-IN' => 'English (India)', 'en-NZ' => 'English (New Zealand)', 'en-ZA' => 'English (South Africa)', 'en-GB' => 'English (United Kingdom)', 'en-US' => 'English (United States)', 'eo' => 'Esperanto - esperanto', 'et' => 'Estonian - eesti', 'fo' => 'Faroese - føroyskt', 'fil' => 'Filipino', 'fi' => 'Finnish - suomi', 'fr' => 'French - français', 'fr-CA' => 'French (Canada) - français (Canada)', 'fr-FR' => 'French (France) - français (France)', 'fr-CH' => 'French (Switzerland) - français (Suisse)', 'gl' => 'Galician - galego', 'ka' => 'Georgian - ქართული', 'de' => 'German - Deutsch', 'de-AT' => 'German (Austria) - Deutsch (Österreich)', 'de-DE' => 'German (Germany) - Deutsch (Deutschland)', 'de-LI' => 'German (Liechtenstein) - Deutsch (Liechtenstein)', 'de-CH' => 'German (Switzerland) - Deutsch (Schweiz)', 'el' => 'Greek - Ελληνικά', 'gn' => 'Guarani', 'gu' => 'Gujarati - ગુજરાતી', 'ha' => 'Hausa', 'haw' => 'Hawaiian - ʻŌlelo Hawaiʻi', 'he' => 'Hebrew - עברית', 'hi' => 'Hindi - हिन्दी', 'hu' => 'Hungarian - magyar', 'is' => 'Icelandic - íslenska', 'id' => 'Indonesian - Indonesia', 'ia' => 'Interlingua', 'ga' => 'Irish - Gaeilge', 'it' => 'Italian - italiano', 'it-IT' => 'Italian (Italy) - italiano (Italia)', 'it-CH' => 'Italian (Switzerland) - italiano (Svizzera)', 'ja' => 'Japanese - 日本語', 'kn' => 'Kannada - ಕನ್ನಡ', 'kk' => 'Kazakh - қазақ тілі', 'km' => 'Khmer - ខ្មែរ', 'ko' => 'Korean - 한국어', 'ku' => 'Kurdish - Kurdî', 'ky' => 'Kyrgyz - кыргызча', 'lo' => 'Lao - ລາວ', 'la' => 'Latin', 'lv' => 'Latvian - latviešu', 'ln' => 'Lingala - lingála', 'lt' => 'Lithuanian - lietuvių', 'mk' => 'Macedonian - македонски', 'ms' => 'Malay - Bahasa Melayu', 'ml' => 'Malayalam - മലയാളം', 'mt' => 'Maltese - Malti', 'mr' => 'Marathi - मराठी', 'mn' => 'Mongolian - монгол', 'ne' => 'Nepali - नेपाली', 'no' => 'Norwegian - norsk', 'nb' => 'Norwegian Bokmål - norsk bokmål', 'nn' => 'Norwegian Nynorsk - nynorsk', 'oc' => 'Occitan', 'or' => 'Oriya - ଓଡ଼ିଆ', 'om' => 'Oromo - Oromoo', 'ps' => 'Pashto - پښتو', 'fa' => 'Persian - فارسی', 'pl' => 'Polish - polski', 'pt' => 'Portuguese - português', 'pt-BR' => 'Portuguese (Brazil) - português (Brasil)', 'pt-PT' => 'Portuguese (Portugal) - português (Portugal)', 'pa' => 'Punjabi - ਪੰਜਾਬੀ', 'qu' => 'Quechua', 'ro' => 'Romanian - română', 'mo' => 'Romanian (Moldova) - română (Moldova)', 'rm' => 'Romansh - rumantsch', 'ru' => 'Russian - русский', 'gd' => 'Scottish Gaelic', 'sr' => 'Serbian - српски', 'sh' => 'Serbo-Croatian - Srpskohrvatski', 'sn' => 'Shona - chiShona', 'sd' => 'Sindhi', 'si' => 'Sinhala - සිංහල', 'sk' => 'Slovak - slovenčina', 'sl' => 'Slovenian - slovenščina', 'so' => 'Somali - Soomaali', 'st' => 'Southern Sotho', 'es' => 'Spanish - español', 'es-AR' => 'Spanish (Argentina) - español (Argentina)', 'es-419' => 'Spanish (Latin America) - español (Latinoamérica)', 'es-MX' => 'Spanish (Mexico) - español (México)', 'es-ES' => 'Spanish (Spain) - español (España)', 'es-US' => 'Spanish (United States) - español (Estados Unidos)', 'su' => 'Sundanese', 'sw' => 'Swahili - Kiswahili', 'sv' => 'Swedish - svenska', 'tg' => 'Tajik - тоҷикӣ', 'ta' => 'Tamil - தமிழ்', 'tt' => 'Tatar', 'te' => 'Telugu - తెలుగు', 'th' => 'Thai - ไทย', 'ti' => 'Tigrinya - ትግርኛ', 'to' => 'Tongan - lea fakatonga', 'tr' => 'Turkish - Türkçe', 'tk' => 'Turkmen', 'tw' => 'Twi', 'uk' => 'Ukrainian - українська', 'ur' => 'Urdu - اردو', 'ug' => 'Uyghur', 'uz' => 'Uzbek - o‘zbek', 'vi' => 'Vietnamese - Tiếng Việt', 'wa' => 'Walloon - wa', 'cy' => 'Welsh - Cymraeg', 'fy' => 'Western Frisian', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba - Èdè Yorùbá', 'zu' => 'Zulu - isiZulu', ]; const FLAG = [ 'ar' => 'assets/img/LanguageImage/arabic.svg', 'en' => 'assets/img/LanguageImage/english.png', 'zh' => 'assets/img/LanguageImage/china.png', 'fr' => 'assets/img/LanguageImage/france.png', 'de' => 'assets/img/LanguageImage/german.png', 'pt' => 'assets/img/LanguageImage/portuguese.png', 'pt-br' => 'assets/img/LanguageImage/brazil.png', 'ru' => 'assets/img/LanguageImage/russian.jpeg', 'es' => 'assets/img/LanguageImage/spain.png', 'tr' => 'img/LanguageImage/turkish.png', 'it' => 'img/LanguageImage/italian.png', 'hi' => 'img/LanguageImage/india.png', ]; const PROFILE = 'profile'; const ALL = 2; const STEP_3 = 3; const IS_ACTIVE = 1; const DEACTIVATE = 0; const SELECT_STATUS = 2; const STATUS_ARR = [ self::SELECT_STATUS => 'Select Status', self::IS_ACTIVE => 'Active', self::DEACTIVATE => 'Deactivate', ]; protected $appends = ['full_name', 'profile_image', 'plan_name', 'multi_language_date']; /** * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * @var array */ public static $rules = [ 'first_name' => 'required|string|max:180', 'last_name' => 'required|string|max:180', 'email' => 'required|email:filter|max:191|unique:users,email,', ]; public function getProfileImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } public function getFullNameAttribute(): string { return $this->first_name . ' ' . $this->last_name; } public function getMultiLanguageDateAttribute() { setLocalLang(getLogInUser()->language ?? 'en'); return Carbon::parse($this->created_at)->isoFormat('Do MMMM YYYY hh:mm A'); } /** * @return HigherOrderBuilderProxy|mixed */ public function getPlanNameAttribute() { $subscription = $this->subscriptions->where('status', Subscription::ACTIVE)->first(); if (! empty($subscription)) { return $subscription->plan->name; } return ''; } public function subscription(): BelongsTo { return $this->belongsTo(Subscription::class, 'tenant_id', 'tenant_id') ->where('status', Subscription::ACTIVE); } public function subscriptions(): HasMany { return $this->hasMany(Subscription::class, 'tenant_id', 'tenant_id'); } public function markEmailAsVerified() { return DB::table('users')->where('id', $this->id) ->update(['email_verified_at' => \Carbon\Carbon::now()]); } public function products() { return $this->hasMany(Product::class); } public function testimonials() { return $this->belongsToMany(Testimonial::class); } public function blogs() { return $this->belongsToMany(VcardBlog::class); } public function services() { return $this->belongsToMany(VcardService::class); } public function blogallariesgs() { return $this->belongsToMany(Gallery::class); } } Models/VcardSections.php000064400000002313152164577520011264 0ustar00 'integer', 'header' => 'string', 'contact_list' => 'string', 'services' => 'string', 'products' => 'string', 'galleries' => 'string', 'blogs' => 'string', 'map' => 'string', 'testimonials' => 'string', 'business_hours' => 'string', 'appointments' => 'string', 'insta_embed' => 'string', 'banner' => 'string', 'iframes' => 'string', 'news_latter_popup' => 'string', 'one_signal_notification' => 'string', ]; } Models/SendEmail.php000064400000000656152164577520010366 0ustar00 'string', 'description' => 'string', ]; } Models/VcardTemplate.php000064400000001014152164577520011245 0ustar00 'string', 'description' => 'string', 'vcard_id' => 'integer', ]; /** * Validation rules * * @var array */ public static $rules = [ 'name' => 'string|min:2', 'description' => 'string|max:250', 'image' => 'required|mimes:jpg,png,JPEG', ]; const TESTIMONIAL_PATH = 'vcards/testimonials'; public function getImageUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::TESTIMONIAL_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function testimonials() { return $this->hasMany(Testimonial::class); } public function user() { return $this->belongsTo(User::class); } } Models/UserSetting.php000064400000003540152164577520010774 0ustar00 'integer', 'key' => 'string', 'value' => 'string', ]; const HOUR_24 = 1; const HOUR_12 = 0; const TIME_FORMAT = [ self::HOUR_24, self::HOUR_12, ]; const LOGO_PATH = 'pwa_icon'; } Models/Gallery.php000064400000005523152164577520010122 0ustar00 'string', 'link' => 'string', 'vcard_id' => 'integer', ]; const TYPE_IMAGE = 0; const TYPE_YOUTUBE = 1; const TYPE_FILE = 2; const TYPE_VIDEO = 3; const TYPE_AUDIO = 4; const TYPE = [ self::TYPE_IMAGE => 'Image', self::TYPE_YOUTUBE => 'YouTube', self::TYPE_FILE => 'File', self::TYPE_VIDEO => 'Video', self::TYPE_AUDIO => 'Audio', ]; public static $rules = [ 'type' => 'required', 'link' => 'nullable|url', ]; public function getGalleryImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::GALLERY_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('assets/images/default_service.png'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id'); } public function getTypeNameAttribute($value): string { return self::TYPE[$this->type]; } } Models/Analytic.php000064400000005112152164577520010261 0ustar00 'string', 'vcard_id' => 'integer', 'uri' => 'string', 'source' => 'string', 'country' => 'string', 'state' => 'string', 'browser' => 'string', 'device' => 'string', 'operating_system' => 'string', 'ip' => 'string', 'language' => 'string', 'meta' => 'json', ]; public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class, 'vcard_id', 'id'); } } Models/Language.php000064400000004003152164577520010236 0ustar00 'string', 'iso_code' => 'string', 'is_default' => 'integer', 'status' => 'integer', ]; /** * @var array */ public static $rules = [ 'name' => 'required|unique:languages,name|max:20', 'iso_code' => 'required|unique:languages,iso_code|min:2|max:2', ]; const LANGUAGE_PATH = 'language_flag'; protected $appends = ['image_url']; public function getImageUrlAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::LANGUAGE_PATH)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/redflag.jpeg'); } } Models/Country.php000064400000003212152164577520010157 0ustar00 'string', 'short_code' => 'string', 'phone_code' => 'string', ]; protected $table = 'countries'; /** * @var array */ protected $fillable = [ 'short_code', 'name', 'phone_code', ]; /** * @var array */ public static $rules = [ 'name' => 'required|max:180|unique:countries,name,', 'short_code' => 'required|alpha|unique:countries,short_code,', 'phone_code' => 'nullable|numeric|unique:countries,phone_code,', ]; } Models/Currency.php000064400000002654152164577520010317 0ustar00 'integer', 'currency_name' => 'string', 'currency_icon' => 'string', 'currency_code' => 'string', ]; } Models/Template.php000064400000003666152164577520010304 0ustar00 'string', 'path' => 'string', ]; protected $appends = ['template_url']; const TEMPLATE_PATH = 'template'; public function vcards(): HasMany { return $this->hasMany(Vcard::class, 'template_id', 'id'); } public function getTemplateUrlAttribute(): string { return asset($this->path); } } Models/Feature.php.20250219012406.bak000064400000004036152164577520012230 0ustar00 'string', 'description' => 'string', ]; public static $rules = [ 'name' => 'required', 'description' => 'required', 'featureImage' => 'required|mimes:jpg,bmp,png', ]; protected $appends = ['profile_image']; protected $with = ['media']; protected $table = 'features'; public function getProfileImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE)->first(); if ($media !== null) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } } Models/BusinessCards.php000064400000001642152164577520011271 0ustar00 'string', 'url' => 'string', 'group_id' => 'integer', 'vcard_id' => 'integer', ]; public function user(): HasOne { return $this->hasOne(User::class, 'tenant_id', 'tenant_id'); } public function vcard(): BelongsTo { return $this->belongsTo(Vcard::class); } public function groups(): BelongsTo { return $this->belongsTo(Group::class, 'group_id'); } } Models/ContactUs.php000064400000003055152164577520010424 0ustar00 'string', 'email' => 'string', 'subject' => 'string', 'message' => 'string', ]; public static $rules = [ 'name' => 'required|min:2', 'email' => 'required|email:filter', 'subject' => 'required', 'message' => 'required|min:2', ]; } Models/NfcOrders.php000064400000005162152164577520010407 0ustar00 'stripe', self::PAYPAL => 'paypal', self::RAZOR_PAY => 'razorpay', self::MANUALLY => 'manually', self::PHONEPE => 'phonepe', self::PAYSTACK => 'paystack', self::FLUTTERWAVE => 'flutterwave', ]; const ORDER_STATUS_ARR = [ self::PENDING => 'Pending', self::READY_TO_SHIP => 'Ready To Ship', self::SHIPPED => 'Shipped', self::DELIVERED => 'Delivered', self::CANCEL => 'Cancelled', ]; const PAYMENT_STATUS_ARR = [ self::PENDING => 'pending', self::SUCCESS => 'paid', self::FAIL => 'failed', ]; protected $with = ['media']; public static $rules = [ 'card_type' => 'required|integer', 'company_name' => 'required|string', 'name' => 'required|string', 'email' => 'required|email', 'phone' => 'required|integer', 'designation' => 'required|string', 'address' => 'required|string', 'logo' => 'required|mimes:jpg,jpeg,png', 'vcard_id' => 'required|integer', ]; protected $fillable = [ 'card_type', 'name', 'designation', 'phone', 'region_code', 'email', 'address', 'order_status', 'quantity', 'user_id', 'company_name', 'vcard_id', ]; public function nfcCard() { return $this->belongsTo(Nfc::class, 'card_type', 'id'); } public function vcard() { return $this->belongsTo(Vcard::class); } public function user() { return $this->belongsTo(User::class); } public function nfcTransaction() { return $this->hasOne(NfcOrderTransaction::class, 'nfc_order_id', 'id'); } public function nfcPaymentType() { return $this->hasOne(NfcOrderTransaction::class, 'type', 'id'); } } Models/CouponCode.php000064400000004171152164577520010557 0ustar00 'Fixed', self::PERCENTAGE_TYPE => 'Percentage', ]; const ACTIVE = 1; const INACTIVE = 0; const STATUS = [ self::ACTIVE => 'Active', self::INACTIVE => 'InActive', ]; protected $appends = ['is_expired']; public function getIsExpiredAttribute() { return \Carbon\Carbon::parse($this->expire_at)->isPast(); } } Models/WithdrawalTransaction.php000064400000001436152164577520013036 0ustar00 'integer', 'paid_by' => 'integer', 'amount' => 'integer', 'payment_meta' => 'json', ]; const MANUALLY = '0'; const PAYPAL = '1'; const PAID_BY = [ self::MANUALLY => 'Cash', self::PAYPAL => 'Paypal', ]; public function withdrawal(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Withdrawal::class, 'withdrawal_id'); } } MediaLibrary/CustomPathGenerator.php000064400000010061152164577520013573 0ustar00id.DIRECTORY_SEPARATOR; switch ($media->collection_name) { case User::PROFILE: return str_replace('{PARENT_DIR}', User::PROFILE, $path); case Setting::PATH: return str_replace('{PARENT_DIR}', Setting::PATH, $path); case Vcard::PROFILE_PATH: return str_replace('{PARENT_DIR}', Vcard::PROFILE_PATH, $path); case Vcard::COVER_PATH: return str_replace('{PARENT_DIR}', Vcard::COVER_PATH, $path); case VcardService::SERVICES_PATH: return str_replace('{PARENT_DIR}', VcardService::SERVICES_PATH, $path); case Gallery::GALLERY_PATH: return str_replace('{PARENT_DIR}', Gallery::GALLERY_PATH, $path); case Testimonial::TESTIMONIAL_PATH: return str_replace('{PARENT_DIR}', Testimonial::TESTIMONIAL_PATH, $path); case Template::TEMPLATE_PATH: return str_replace('{PARENT_DIR}', Template::TEMPLATE_PATH, $path); case Feature::PROFILE: return str_replace('{PARENT_DIR}', Feature::PROFILE, $path); case Setting::FRONTPATH: return str_replace('{PARENT_DIR}', Setting::FRONTPATH, $path); case FrontTestimonial::PATH: return str_replace('{PARENT_DIR}', FrontTestimonial::PATH, $path); case AboutUs::PATH: return str_replace('{PARENT_DIR}', AboutUs::PATH, $path); case Product::PRODUCT_PATH: return str_replace('{PARENT_DIR}', Product::PRODUCT_PATH, $path); case VcardBlog::BLOG_PATH: return str_replace('{PARENT_DIR}', VcardBlog::BLOG_PATH, $path); case Subscription::ATTACHMENT_PATH: return str_replace('{PARENT_DIR}', Subscription::ATTACHMENT_PATH, $path); case SocialLink::SOCIAL_ICON: return str_replace('{PARENT_DIR}', SocialLink::SOCIAL_ICON, $path); case Subscription::NOTES_PATH: return str_replace('{PARENT_DIR}', Subscription::NOTES_PATH, $path); case Language::LANGUAGE_PATH: return str_replace('{PARENT_DIR}', Language::LANGUAGE_PATH, $path); case Nfc::NFC_PATH: return str_replace('{PARENT_DIR}', Nfc::NFC_PATH, $path); case Nfc::NFC_BACK_IMAGE: return str_replace('{PARENT_DIR}', Nfc::NFC_BACK_IMAGE, $path); case NfcOrders::LOGO_PATH: return str_replace('{PARENT_DIR}', NfcOrders::LOGO_PATH, $path); case UserSetting::LOGO_PATH: return str_replace('{PARENT_DIR}', UserSetting::LOGO_PATH, $path); case Blog::BLOGIMAGE: return str_replace('{PARENT_DIR}', Blog::BLOGIMAGE, $path); case Enquiry::ATTACHMENT: return str_replace('{PARENT_DIR}', Enquiry::ATTACHMENT, $path); case 'default': return ''; } } public function getPathForConversions(Media $media): string { return $this->getPath($media).'thumbnails/'; } public function getPathForResponsiveImages(Media $media): string { return $this->getPath($media).'rs-images/'; } } Console/Kernel.php000064400000002014152164577520010112 0ustar00command('sitemap:generate')->daily(); $schedule->command(PlanExpirationMailCommand::class)->daily(); // === CARD AO SEGUNDO CONTROL: Payment Sentinel === $schedule->command('payments:check-pending')->hourly(); } /** * Register the commands for the application. */ protected function commands(): void { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } } Console/Commands/GenerateSiteMap.php000064400000002072152164577520013454 0ustar00pluck('url_alias', 'id')->toArray(); $sitemap = SitemapGenerator::create(config('app.url'))->getSitemap(); foreach ($activeVcard as $value) { $sitemap->add(route('vcard.show', ['alias' => $value])) ->writeToFile(public_path('sitemap.xml')); } } } Console/Commands/CheckPendingPayments.php000066400000005000152164577520014476 0ustar00info("[{$now}] Iniciando verificacao de pagamentos pendentes..."); // AVISO 24H // VCards criados entre 24h e 36h atras, ainda sem pagamento $toWarn = VCard::where('status', 'pending_payment') ->whereBetween('created_at', [ $now->copy()->subHours(36), $now->copy()->subHours(24), ]) ->whereNull('warned_at') ->with('user') ->get(); foreach ($toWarn as $vcard) { try { Mail::to($vcard->user->email)->send(new PaymentWarningMail($vcard, 'warning')); $vcard->update(['warned_at' => $now]); $this->line(" [AVISO] Email enviado para: {$vcard->user->email}"); Log::info("[CheckPendingPayments] Aviso 24h enviado: user#{$vcard->user->id}"); } catch (\Exception $e) { Log::error("[CheckPendingPayments] Erro ao enviar aviso: " . $e->getMessage()); } } // SOFT DELETE 48H // VCards criados ha mais de 48h, ainda sem pagamento Soft Delete $toDelete = VCard::where('status', 'pending_payment') ->where('created_at', '<', $now->copy()->subHours(48)) ->with('user') ->get(); foreach ($toDelete as $vcard) { try { // Notifica antes de apagar Mail::to($vcard->user->email)->send(new PaymentWarningMail($vcard, 'deleted')); $vcard->delete(); // Soft delete (preserva dados, permite recuperacao) $this->line(" [APAGADO] VCard#{$vcard->id} do user {$vcard->user->email} removido (soft)"); Log::warning("[CheckPendingPayments] Soft delete: vcard#{$vcard->id} user#{$vcard->user->id}"); } catch (\Exception $e) { Log::error("[CheckPendingPayments] Erro ao apagar: " . $e->getMessage()); } } $this->info("Concluido. Avisos: {$toWarn->count()} | Apagados: {$toDelete->count()}"); return Command::SUCCESS; } } Console/Commands/PlanExpirationMailCommand.php000064400000002677152164577520015511 0ustar00with(['subscriptions'])->get(); foreach ($users as $user) { $expirationDate = Carbon::parse($user->subscription->ends_at); $data = [ 'first_name' => $user->first_name, 'last_name' => $user->last_name ]; if ($expirationDate->diffInDays(now()) == getSuperAdminSettingValue('plan_expire_notification')) { Mail::to($user->email)->send(new PlanExpirationReminder($data)); } } Log::info('Plan expiration reminder sent successfully'); } catch (Exception $e) { Log::info($e->getMessage()); } } } Services/AiCardGeneratorService.php000066400000006212152164577520013374 0ustar00 !empty(trim($s))); try { // Step 1: Fetch from ALL sources in parallel (sequential for shared hosting) Log::info("[AiCardGen] Fetching " . count($sources) . " sources for user#{$user->id}"); $multiSourceData = $this->scraper->fetchMultiple($sources); $socialCount = count($multiSourceData['social'] ?? []); $corporateCount = count($multiSourceData['corporate'] ?? []); Log::info("[AiCardGen] Fetched: {$socialCount} social, {$corporateCount} corporate sources"); // Step 2: LLM multi-source analysis $region = config('app.region', 'BR'); $aiResult = $this->llm->analyzeMultiple($multiSourceData, $region); Log::info("[AiCardGen] LLM result: template_id={$aiResult['template_id']}, confidence={$aiResult['confidence']}"); // Step 3: Apply to VCard $updateData = [ 'ai_status' => 'completed', 'ai_data' => json_encode($aiResult, JSON_UNESCAPED_UNICODE), 'template_id' => $aiResult['template_id'], ]; // Only fill fields if VCard doesn't already have them if (empty($vcard->name) && !empty($aiResult['name'])) { $updateData['name'] = $aiResult['name']; } if (empty($vcard->description) && !empty($aiResult['bio'])) { $updateData['description'] = $aiResult['bio']; } if (empty($vcard->occupation) && !empty($aiResult['profession'])) { $updateData['occupation'] = $aiResult['profession']; } if (empty($vcard->company) && !empty($aiResult['company'])) { $updateData['company'] = $aiResult['company']; } $vcard->update($updateData); return [ 'success' => true, 'vcard_id' => $vcard->id, 'template_id' => $aiResult['template_id'], 'completion_pct' => 90, 'sources_used' => count($sources), 'confidence' => $aiResult['confidence'] ?? 'medium', 'ai_result' => $aiResult, ]; } catch (\Exception $e) { Log::error("[AiCardGen] Failed for user#{$user->id}: " . $e->getMessage()); $vcard->update(['ai_status' => 'failed']); return ['success' => false, 'vcard_id' => $vcard->id, 'error' => $e->getMessage()]; } } } Services/LlmAnalyzerService.php000066400000016173152164577520012643 0ustar00fallbackResult($multiSourceData['merged'] ?? []); } $lang = $region === 'PT' ? 'portugus europeu formal' : 'portugus brasileiro profissional'; $merged = $multiSourceData['merged'] ?? []; $social = $multiSourceData['social'] ?? []; $corporate = $multiSourceData['corporate'] ?? []; // Build color hints string $colorHints = ''; $brandColors = $merged['brand_colors'] ?? []; if (!empty($brandColors)) { $colorParts = []; if (!empty($brandColors['theme_color'])) $colorParts[] = "theme-color: {$brandColors['theme_color']}"; if (!empty($brandColors['css_primary'])) $colorParts[] = "CSS primary: {$brandColors['css_primary']}"; if (!empty($brandColors['tile_color'])) $colorParts[] = "tile-color: {$brandColors['tile_color']}"; if (!empty($brandColors['body_bg'])) $colorParts[] = "body-bg: {$brandColors['body_bg']}"; $colorHints = implode(', ', $colorParts); } // Build social profiles summary $socialSummary = ''; foreach ($social as $s) { $socialSummary .= "- [{$s['platform']}] Ttulo: \"{$s['title']}\" | Bio: \"{$s['description']}\"\n"; } // Build corporate summary $corporateSummary = ''; foreach ($corporate as $c) { $corporateSummary .= "- [Website] Nome da empresa: \"{$c['title']}\" | Descrio: \"{$c['description']}\" | Keywords: \"{$c['keywords']}\"\n"; } $sourcesCount = ($merged['sources'] ?? 1); $prompt = "Voc um especialista snior em branding digital e identidade visual corporativa. Voc recebeu dados de {$sourcesCount} fonte(s) distintas para criar um carto de visita digital profissional. === FONTES DE DADOS === PERFIS SOCIAIS (Use para: personalidade, bio, tom de voz do indivduo): {$socialSummary} SITE CORPORATIVO (Use para: cores da marca, nome da empresa, posicionamento): {$corporateSummary} CORES DETECTADAS NO SITE DA EMPRESA: {$colorHints} === INSTRUO CRTICA === - Use as CORES DO SITE CORPORATIVO como base para color_primary e color_secondary. - Se no houver cores do site, use um tom que combine com a personalidade social detectada. - Mantenha a BIO e PROFISSO baseadas nos perfis sociais (voz autntica do indivduo). - O NOME deve priorizar o perfil social; use o site apenas como confirmao. - O TEMPLATE deve refletir o posicionamento: corporativo=1-8, criativo=9-16, empreendedor=17-24. RETORNE APENAS este JSON vlido (sem markdown, sem texto extra): { \"name\": \"nome completo ou profissional\", \"profession\": \"cargo ou rea de atuao\", \"bio\": \"bio profissional em at 160 caracteres em {$lang}\", \"company\": \"nome da empresa ou marca\", \"color_primary\": \"#HEXCOLOR da marca corporativa ou personalidade\", \"color_secondary\": \"#HEXCOLOR complementar\", \"template_id\": \"1 a 24\", \"links\": [\"URLs relevantes\"], \"social_handles\": {}, \"brand_personality\": \"1 palavra: corporativo|criativo|empreendedor|profissional\", \"confidence\": \"high|medium|low\" }"; try { $response = Http::withHeaders([ 'x-api-key' => $apiKey, 'anthropic-version' => '2023-06-01', 'content-type' => 'application/json', ])->timeout(35)->post('https://api.anthropic.com/v1/messages', [ 'model' => config('services.claude.model', 'claude-haiku-4-5'), 'max_tokens' => 700, 'messages' => [['role' => 'user', 'content' => $prompt]], ]); if (!$response->ok()) { Log::error('[LlmAnalyzer] API error: ' . $response->status() . ' - ' . $response->body()); return $this->fallbackResult($merged); } $text = $response->json('content.0.text', ''); // Strip markdown code blocks if present $text = preg_replace('/^```(?:json)?\s*/m', '', $text); $text = preg_replace('/\s*```$/m', '', $text); $text = trim($text); $data = json_decode($text, true); if (json_last_error() !== JSON_ERROR_NONE) { Log::warning('[LlmAnalyzer] Invalid JSON from LLM: ' . substr($text, 0, 200)); return $this->fallbackResult($merged); } // Sanitize template_id $data['template_id'] = max(1, min(24, (int)($data['template_id'] ?? 1))); // If no valid color from LLM, use detected brand color if (empty($data['color_primary']) || !preg_match('/^#[0-9a-fA-F]{3,6}$/', $data['color_primary'])) { $data['color_primary'] = $brandColors['theme_color'] ?? $brandColors['css_primary'] ?? '#2563EB'; } return $data; } catch (\Exception $e) { Log::error('[LlmAnalyzer] Exception: ' . $e->getMessage()); return $this->fallbackResult($merged); } } /** * Legacy single-source analyze (backward compatibility) */ public function analyze(array $scrapedData, string $region = 'BR'): array { // Wrap single source as multi-source format $wrapped = [ 'social' => [$scrapedData], 'corporate' => [], 'merged' => [ 'name' => $scrapedData['title'] ?? '', 'bio_hint' => $scrapedData['description'] ?? '', 'brand_name' => '', 'brand_desc' => '', 'brand_colors' => [], 'platforms' => [$scrapedData['platform'] ?? 'website'], 'sources' => 1, ], ]; return $this->analyzeMultiple($wrapped, $region); } private function fallbackResult(array $merged): array { $brandColor = $merged['brand_colors']['theme_color'] ?? $merged['brand_colors']['css_primary'] ?? '#2563EB'; return [ 'name' => $merged['name'] ?? 'Meu Carto Digital', 'profession' => '', 'bio' => $merged['bio_hint'] ?? '', 'company' => $merged['brand_name'] ?? '', 'color_primary' => $brandColor, 'color_secondary' => '#F59E0B', 'template_id' => 1, 'links' => [], 'social_handles' => [], 'brand_personality' => 'profissional', 'confidence' => 'low', ]; } } Services/SocialScraperService.php000066400000023071152164577520013136 0ustar00detectPlatform($url); if ($platform === 'website') { $sources['corporate'][] = $this->fetchWebsiteData($url); } else { $sources['social'][] = $this->fetchSocialData($url, $platform); } } return [ 'social' => $sources['social'] ?? [], 'corporate' => $sources['corporate'] ?? [], 'merged' => $this->merge($sources), ]; } /** * Fetch Open Graph data from a social profile URL. */ public function fetchSocialData(string $url, string $platform = null): array { $platform = $platform ?? $this->detectPlatform($url); try { $response = Http::withHeaders([ 'User-Agent' => 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)', 'Accept-Language' => 'pt-BR,pt;q=0.9,en;q=0.8', 'Accept' => 'text/html,application/xhtml+xml', ])->timeout(10)->get($url); if (!$response->ok()) { return $this->emptyResult($url, $platform); } $html = $response->body(); return [ 'type' => 'social', 'platform' => $platform, 'url' => $url, 'title' => $this->extractOg($html, 'title') ?: $this->extractMeta($html, 'title') ?: $this->extractTag($html, 'title'), 'description' => $this->extractOg($html, 'description') ?: $this->extractMeta($html, 'description'), 'image' => $this->extractOg($html, 'image') ?: '', 'site_name' => $this->extractOg($html, 'site_name') ?: '', ]; } catch (\Exception $e) { Log::error("[SocialScraper] Social fetch failed for {$url}: " . $e->getMessage()); return $this->emptyResult($url, $platform); } } /** * Fetch corporate website data: title, description, AND brand colors. * Detects colors from: theme-color meta, CSS custom properties, og:image dominant. */ public function fetchWebsiteData(string $url): array { try { $response = Http::withHeaders([ 'User-Agent' => 'Mozilla/5.0 (compatible; CardAoSegundoBot/1.0)', 'Accept' => 'text/html,application/xhtml+xml', ])->timeout(12)->get($url); if (!$response->ok()) { return $this->emptyCorporateResult($url); } $html = $response->body(); // Extract colors from multiple sources $colors = $this->extractBrandColors($html); return [ 'type' => 'corporate', 'platform' => 'website', 'url' => $url, 'title' => $this->extractOg($html, 'title') ?: $this->extractTag($html, 'title'), 'description' => $this->extractOg($html, 'description') ?: $this->extractMeta($html, 'description'), 'image' => $this->extractOg($html, 'image') ?: '', 'colors' => $colors, 'keywords' => $this->extractMeta($html, 'keywords'), 'author' => $this->extractMeta($html, 'author'), ]; } catch (\Exception $e) { Log::error("[SocialScraper] Website fetch failed for {$url}: " . $e->getMessage()); return $this->emptyCorporateResult($url); } } /** * Extract brand colors from HTML/CSS: * Priority: theme-color > CSS :root vars > msapplication-TileColor > og:image */ private function extractBrandColors(string $html): array { $colors = []; // 1. theme-color meta tag (most reliable) if (preg_match('/]+name=["\']theme-color["\'][^>]+content=["\']([#\w\d,\s]+)["\']/', $html, $m)) { $colors['theme_color'] = trim($m[1]); } // 2. msapplication-TileColor (Windows tiles) if (preg_match('/]+name=["\']msapplication-TileColor["\'][^>]+content=["\']([#\w\d]+)["\']/', $html, $m)) { $colors['tile_color'] = trim($m[1]); } // 3. CSS :root custom properties (--primary-color, --brand-color, etc.) $css_patterns = [ '/--primary[-_]?color\s*:\s*([#\w\d]+)/i', '/--brand[-_]?color\s*:\s*([#\w\d]+)/i', '/--accent[-_]?color\s*:\s*([#\w\d]+)/i', '/--color[-_]?primary\s*:\s*([#\w\d]+)/i', '/--main[-_]?color\s*:\s*([#\w\d]+)/i', ]; foreach ($css_patterns as $pattern) { if (preg_match($pattern, $html, $m)) { $hex = trim($m[1]); if ($this->isValidHex($hex)) { $colors['css_primary'] = $hex; break; } } } // 4. Inline style background-color on body/header if (preg_match('/<(?:body|header)[^>]+style=["\'][^"\']*background(?:-color)?\s*:\s*([#\w\d]+)/i', $html, $m)) { $hex = trim($m[1]); if ($this->isValidHex($hex)) { $colors['body_bg'] = $hex; } } // 5. Manifest theme_color from linked manifest if (preg_match('/]+rel=["\']manifest["\'][^>]+href=["\']([^"\']+)["\']/', $html, $m)) { $colors['_manifest_url'] = $m[1]; // Store for potential follow-up fetch } return $colors; } /** * Merge social + corporate into unified analysis input */ private function merge(array $sources): array { $social = $sources['social'] ?? []; $corporate = $sources['corporate'] ?? []; $allColors = []; foreach ($corporate as $corp) { $allColors = array_merge($allColors, $corp['colors'] ?? []); } $primarySocial = $social[0] ?? []; return [ 'name' => $primarySocial['title'] ?? ($corporate[0]['author'] ?? ''), 'bio_hint' => $primarySocial['description'] ?? '', 'brand_name' => $corporate[0]['title'] ?? '', 'brand_desc' => $corporate[0]['description'] ?? '', 'brand_colors'=> $allColors, 'platforms' => array_map(fn($s) => $s['platform'], $social), 'sources' => count($sources['social'] ?? []) + count($sources['corporate'] ?? []), ]; } // Helpers private function extractOg(string $html, string $property): string { if (preg_match('/]+property=["\']og:' . $property . '["\'][^>]+content=["\']([^"\']+)["\']/is', $html, $m)) { return trim(html_entity_decode($m[1], ENT_QUOTES, 'UTF-8')); } if (preg_match('/]+content=["\']([^"\']+)["\'][^>]+property=["\']og:' . $property . '["\']/is', $html, $m)) { return trim(html_entity_decode($m[1], ENT_QUOTES, 'UTF-8')); } return ''; } private function extractMeta(string $html, string $name): string { if (preg_match('/]+name=["\']' . $name . '["\'][^>]+content=["\']([^"\']+)["\']/is', $html, $m)) { return trim(html_entity_decode($m[1], ENT_QUOTES, 'UTF-8')); } return ''; } private function extractTag(string $html, string $tag): string { if (preg_match('/<' . $tag . '[^>]*>\s*(.*?)\s*<\/' . $tag . '>/is', $html, $m)) { return trim(strip_tags($m[1])); } return ''; } private function isValidHex(string $color): bool { return (bool) preg_match('/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})$/', $color); } private function detectPlatform(string $url): string { return match (true) { str_contains($url, 'instagram.com') => 'instagram', str_contains($url, 'linkedin.com') => 'linkedin', str_contains($url, 'twitter.com') || str_contains($url, 'x.com') => 'twitter', str_contains($url, 'facebook.com') => 'facebook', str_contains($url, 'tiktok.com') => 'tiktok', str_contains($url, 'youtube.com') => 'youtube', default => 'website', }; } private function emptyResult(string $url, string $platform): array { return ['type' => 'social', 'platform' => $platform, 'url' => $url, 'title' => '', 'description' => '', 'image' => '', 'site_name' => '']; } private function emptyCorporateResult(string $url): array { return ['type' => 'corporate', 'platform' => 'website', 'url' => $url, 'title' => '', 'description' => '', 'image' => '', 'colors' => [], 'keywords' => '', 'author' => '']; } // Legacy single-URL fetch for backward compatibility public function fetch(string $url): array { $platform = $this->detectPlatform($url); return $platform === 'website' ? $this->fetchWebsiteData($url) : $this->fetchSocialData($url, $platform); } } View/Components/AppLayout.php000064400000000450152164577520012247 0ustar00error = $error; } /** * Get the view / contents that represent the component. * * @return \Illuminate\Contracts\View\View|\Closure|string */ public function render() { return view('components.error-box'); } } helpers.php000064400000316171152164577520006746 0ustar00value('value'); Carbon::setLocale(app()->getLocale()); $carbonDate = Carbon::parse($date); if ($formate == 1) { return $carbonDate->translatedFormat('d M Y'); } if ($formate == 2) { return $carbonDate->translatedFormat('M d Y'); } if ($formate == 3) { return date('d/m/Y', strtotime($date)); } if ($formate == 4) { return date('Y/m/d', strtotime($date)); } if ($formate == 5) { return date('m/d/Y', strtotime($date)); } if ($formate == 6) { return date('Y-m-d', strtotime($date)); } return; } } if (!function_exists('getNfcCard')){ function getNfcCard() { return Nfc::all(); } } /** * @return Authenticatable|null */ if (!function_exists('getLogInUser')){ function getLogInUser() { return Auth::user(); } } /** * @return string[] */ if (!function_exists('getLanguages')){ function getLanguages() { return User::LANGUAGES; } } /** * @return mixed */ if (!function_exists('getAppName')){ function getAppName() { $record = getSuperAdminSettingValue('app_name'); return (!empty($record)) ? $record : config('app.name'); } } /** * @return mixed */ if (!function_exists('getLogoUrl')){ function getLogoUrl() { static $settings; if (empty($settings)) { $settings = Setting::all()->keyBy('key'); } $appLogo = $settings['app_logo']; return $appLogo->logo_url; } } if (!function_exists('getDashboardLogoUrl')){ function getDashboardLogoUrl() { static $settings; if (empty($settings)) { $settings = Setting::all()->keyBy('key'); } if (!empty($settings['dashboard_logo'])) { $appLogo = $settings['dashboard_logo']; return $appLogo->logo_url; } return ''; } } /** * @return mixed */ if (!function_exists('getFaviconUrl')){ function getFaviconUrl() { static $settings; if (empty($settings)) { $settings = Setting::all()->keyBy('key'); } $favicon = $settings['favicon']; return $favicon->favicon_url; } } /** * @param array $input * @param string $key * @return string|null */ if (!function_exists('preparePhoneNumber')){ function preparePhoneNumber($input, $key) { return (!empty($input[$key])) ? '+' . $input['prefix_code'] . $input[$key] : null; } } /** * @return mixed */ if (!function_exists('getSuperAdminRoleId')){ function getSuperAdminRoleId() { static $admin; if (empty($admin)) { $admin = Role::whereName(CustomRole::ROLE_SUPER_ADMIN)->first()->id; } return $admin; } } /** * @return int */ if (!function_exists('getLogInUserId')){ function getLogInUserId() { return Auth::user()->id; } } /** * @return mixed */ if (!function_exists('getLogInTenantId')){ function getLogInTenantId() { return Auth::user()->tenant_id; } } /** * @return mixed */ if (!function_exists('getLoggedInUserRoleId')){ function getLoggedInUserRoleId() { static $userRoles; if (!isset($userRoles[Auth::id()]) && Auth::check()) { $roleID = Auth::user()->roles->first()->id; $userRoles[Auth::id()] = $roleID; } return (Auth::check()) ? $userRoles[Auth::id()] : false; } } /** * @return string */ if (!function_exists('getDashboardURL')){ function getDashboardURL() { if (Auth::user()->hasRole(CustomRole::ROLE_SUPER_ADMIN)) { return RouteServiceProvider::DASHBOARD; } elseif (Auth::user()->hasRole(CustomRole::ROLE_ADMIN)) { return RouteServiceProvider::ADMIN_DASHBOARD; } return RouteServiceProvider::HOME; } } /** * @return array */ if (!function_exists('getCurrencies')){ function getCurrencies() { $currencies = Currency::all(); foreach ($currencies as $currency) { $currencyList[$currency->id] = $currency->currency_icon . ' - ' . $currency->currency_name; } return $currencyList; } } if (!function_exists('getUserCurrencyIcon')){ function getUserCurrencyIcon($userId) { $currencyId = getUserSettingValue('currency_id', $userId); $currencyIcon = Currency::whereId($currencyId)->first()->currency_icon; return $currencyIcon; } } if (!function_exists('getCurrenciesCode')){ function getCurrenciesCode() { $currencies = Currency::all(); foreach ($currencies as $currency) { $currencyCodeList[$currency->currency_code] = $currency->currency_icon . ' - ' . $currency->currency_name; } return $currencyCodeList; } } if (!function_exists('currencyFormat')){ function currencyFormat($number, $precision = 0, $currencyCode = null) { try { $currency = new Gerardojbaez\Money\Currency($currencyCode ?? getSuperAdminSettingValue('default_currency')); $currency->setPrecision($precision); $currency->setThousandSeparator(','); $currency->setDecimalSeparator('.'); $currency->setSymbolPlacement(getSuperAdminSettingValue('currency_after_amount') ? 'after' : 'before'); try { $amount = new Gerardojbaez\Money\Money($number, $currency); } catch (Exception $e) { $amount = new Gerardojbaez\Money\Money($number, 'USD'); } $formattedAmount = number_format(settype($amount->format(), 'float'), 2); } catch (Exception $e) { $currencyCode = $currencyCode ?? getSuperAdminSettingValue('default_currency'); $currency = Currency::whereCurrencyCode($currencyCode)->first(); if (getSuperAdminSettingValue('hide_decimal_values') == 1) { $formattedAmount = ($currency->currency_icon === '$') ? $currency->currency_icon . number_format($number, 0) : getCurrencyAmount(number_format($number, 0), $currency->currency_icon); } else { $formattedAmount = ($currency->currency_icon === '$') ? $currency->currency_icon . number_format($number, 2) : getCurrencyAmount(number_format($number, 2), $currency->currency_icon); } } return $formattedAmount; } } /** * @return mixed */ if (!function_exists('getCountry')){ function getCountry() { $country = Country::orderBy('name')->pluck('name', 'id')->toArray(); return $country; } } /** * @return mixed */ if (!function_exists('getState')){ function getState() { $state = State::orderBy('name')->pluck('name', 'id')->toArray(); return $state; } } /** * @return string[] */ if (!function_exists('getPayPalSupportedCurrencies')){ function getPayPalSupportedCurrencies() { return [ 'AUD', 'BRL', 'CAD', 'CNY', 'CZK', 'DKK', 'EUR', 'HKD', 'HUF', 'ILS', 'JPY', 'MYR', 'MXN', 'TWD', 'NZD', 'NOK', 'PHP', 'PLN', 'GBP', 'RUB', 'SGD', 'SEK', 'CHF', 'THB', 'USD', ]; } } if (!function_exists('getPayStackSupportedCurrencies')){ function getPayStackSupportedCurrencies() { return ['NGN', 'GHS', 'ZAR', 'KES']; } } /** * @param null $templates */ if (!function_exists('getTemplateUrls')){ function getTemplateUrls($templates = null): array { if (!$templates) { $templates = Template::orderBy('id', 'desc')->get(); } $templateUrls = []; foreach ($templates as $template) { $templateUrls[$template->id] = asset($template->path); } return $templateUrls; } } if (!function_exists('getPlanFeature')){ function getPlanFeature($plan): array { $features = $plan->planFeature->getFillable(); $planFeatures = []; foreach ($features as $feature) { $planFeatures[$feature] = $plan->planFeature->$feature; } arsort($planFeatures); return Arr::except($planFeatures, 'plan_id'); } } if (!function_exists('getSocialLink')){ function getSocialLink($vcard): array { $socialLink = array_values(array_diff($vcard->socialLink->getFillable(), ['vcard_id'])); $socialLinkAdd = SocialIcon::whereSocialLinkId($vcard->socialLink->id)->get(); $vcardSocials = []; foreach ($socialLinkAdd as $social) { if ($url = parse_url($social->link, PHP_URL_SCHEME) === null ? 'https://' . $social->link : $social->link ) { $vcardSocials[$social->link] = ' '; } } foreach ($socialLink as $social) { if ($vcard->socialLink->$social) { if ($social == 'social_links') { foreach (json_decode($vcard->socialLink->$social) as $links) { if ($url = parse_url($links->name, PHP_URL_SCHEME) === null ? 'https://' . $links->name : $links->name ) { $vcardSocials[$links->name] = ' '; } } } if ($social != 'website') { if ($social != 'social_links') { if ($url = parse_url($vcard->socialLink->$social, PHP_URL_SCHEME) === null ? 'https://' . $vcard->socialLink->$social : $vcard->socialLink->$social ) { if ($social == 'twitter') { $vcardSocials[$social] = ' '; } else { $vcardSocials[$social] = ' '; } } } } else { if ($url = parse_url($vcard->socialLink->$social, PHP_URL_SCHEME) === null ? 'https://' . $vcard->socialLink->$social : $vcard->socialLink->$social ) { $vcardSocials[$social] = ' '; } } } if ($vcard->location_url != null) { $vcardSocials['map'] = ' '; } } return $vcardSocials; } } /** * @return string[] */ if (!function_exists('zeroDecimalCurrencies')){ function zeroDecimalCurrencies(): array { return [ 'BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'UGX', 'VND', 'VUV', 'XAF', 'XOF', 'XPF', ]; } } if (!function_exists('getAppLogo')){ function getAppLogo() { return getSuperAdminSettingValue('app_logo'); } } /** * @return mixed|string|string[] */ if (!function_exists('removeCommaFromNumbers')){ function removeCommaFromNumbers($number) { return (gettype($number) == 'string' && !empty($number)) ? str_replace(',', '', $number) : $number; } } if (!function_exists('setStripeApiKey')){ function setStripeApiKey() { Stripe::setApiKey(getSelectedPaymentGateway('stripe_secret')); } } if (!function_exists('getRandomColor')){ function getRandomColor($index): string { $badgeColors = [ 'bg-primary', 'bg-success', 'bg-info', 'bg-secondary', 'bg-dark', 'bg-danger', 'bg-warning', ]; $number = ceil($index % 7); if (getLogInUser()->theme_mode == 1) { array_splice($badgeColors, 4, 1); array_push($badgeColors, 'bg-dark-white'); } return $badgeColors[$number]; } } /** * @return mixed */ if (!function_exists('getCurrentSubscription')){ function getCurrentSubscription() { $subscription = Subscription::with(['plan']) ->whereTenantId(getLogInTenantId()) ->where('status', Subscription::ACTIVE)->latest()->first(); return $subscription; } } if (!function_exists('getCurrentPlanDetails')){ function getCurrentPlanDetails() { $currentSubscription = getCurrentSubscription(); $isExpired = $currentSubscription->isExpired(); $currentPlan = $currentSubscription->plan; if ($currentPlan->price != $currentSubscription->plan_amount) { $currentPlan->price = $currentSubscription->plan_amount; } $startsAt = Carbon::now(); $totalDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($currentSubscription->ends_at); $usedDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($startsAt); if ($totalDays > $usedDays) { $usedDays = Carbon::parse($currentSubscription->starts_at)->diffInDays($startsAt); } else { $usedDays = $totalDays; } if ($totalDays > $usedDays) { $remainingDays = $totalDays - $usedDays; } else { $remainingDays = 0; } if ($totalDays == 0) { $totalDays = 1; } $frequency = $currentSubscription->plan_frequency == Plan::MONTHLY ? __('messages.plan.monthly') : __('messages.plan.yearly'); // $days = $currentSubscription->plan_frequency == Plan::MONTHLY ? 30 : 365; $perDayPrice = round($currentPlan->price / $totalDays, 2); if (!empty($currentSubscription->trial_ends_at) || $isExpired) { $remainingBalance = 0.00; $usedBalance = 0.00; } else { $isJPYCurrency = !empty($currentPlan->currency) && isJPYCurrency($currentPlan->currency->currency_code); $remainingBalance = $currentPlan->price - ($perDayPrice * $usedDays); $remainingBalance = $isJPYCurrency ? round($remainingBalance) : $remainingBalance; $usedBalance = $currentPlan->price - $remainingBalance; $usedBalance = $isJPYCurrency ? round($usedBalance) : $usedBalance; } return [ 'name' => $currentPlan->name . ' / ' . $frequency, 'trialDays' => $currentPlan->trial_days, 'startAt' => Carbon::parse($currentSubscription->starts_at)->format('jS M, Y'), 'endsAt' => Carbon::parse($currentSubscription->ends_at)->format('jS M, Y'), 'usedDays' => $usedDays, 'remainingDays' => $remainingDays, 'totalDays' => $totalDays, 'usedBalance' => $usedBalance, 'remainingBalance' => $remainingBalance, 'isExpired' => $isExpired, 'currentPlan' => $currentPlan, ]; } } if (!function_exists('checkIfPlanIsInTrial')){ function checkIfPlanIsInTrial($currentSubscription) { $now = Carbon::now(); if (!empty($currentSubscription->trial_ends_at)) { return true; } return false; } } /** * @return array */ if (!function_exists('getProratedPlanData')){ function getProratedPlanData($planIDChosenByUser) { /** @var Plan $subscriptionPlan */ $subscriptionPlan = Plan::findOrFail($planIDChosenByUser); if ($subscriptionPlan->custom_select == 1 && $subscriptionPlan->planCustomFields->isNotEmpty()) { $subscriptionPlan->price = $subscriptionPlan->planCustomFields[0]->custom_vcard_price; } if ($subscriptionPlan->frequency == Plan::MONTHLY) { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 30; $frequency = __('messages.plan.monthly'); } else { if ($subscriptionPlan->frequency == Plan::YEARLY) { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 365; $frequency = __('messages.plan.yearly'); } else { $newPlanDays = $subscriptionPlan['trial_days'] > 0 ? $subscriptionPlan['trial_days'] : 36500; $frequency = __('messages.plan.unlimited'); } } $currentSubscription = getCurrentSubscription(); $startsAt = Carbon::now(); $carbonParseStartAt = Carbon::parse($currentSubscription->starts_at); $currentSubsTotalDays = $carbonParseStartAt->diffInDays($currentSubscription->ends_at); $usedDays = $carbonParseStartAt->copy()->diffInDays($startsAt); $totalExtraDays = 0; $totalDays = $newPlanDays; $endsAt = Carbon::now()->addDays($newPlanDays); $startsAt = $startsAt->copy()->format('jS M, Y'); if ($usedDays <= 0) { $startsAt = $carbonParseStartAt->copy()->format('jS M, Y'); } if (!$currentSubscription->isExpired() && !checkIfPlanIsInTrial($currentSubscription)) { $amountToPay = 0; $currentPlan = $currentSubscription->plan; // TODO: take fields from subscription // checking if the current active subscription plan has the same price and frequency in order to process the calculation for the proration $planPrice = $currentPlan->price; $planFrequency = $currentPlan->frequency; if ($planPrice != $currentSubscription->plan_amount || $planFrequency != $currentSubscription->plan_frequency) { $planPrice = $currentSubscription->plan_amount; $planFrequency = $currentSubscription->plan_frequency; } // $frequencyDays = $planFrequency == Plan::MONTHLY ? 30 : 365; $perDayPrice = round($planPrice / $currentSubsTotalDays, 2); $isJPYCurrency = !empty($subscriptionPlan->currency) && isJPYCurrency($subscriptionPlan->currency->currency_code); $remainingBalance = $isJPYCurrency ? round($planPrice - ($perDayPrice * $usedDays)) : round($planPrice - ($perDayPrice * $usedDays), 2); if ($remainingBalance < $subscriptionPlan->price) { // adjust the amount in plan $amountToPay = $isJPYCurrency ? round($subscriptionPlan->price - $remainingBalance) : round($subscriptionPlan->price - $remainingBalance, 2); } else { $perDayPriceOfNewPlan = round($subscriptionPlan->price / $newPlanDays, 5); $totalExtraDays = round($remainingBalance / $perDayPriceOfNewPlan); $endsAt = Carbon::now()->addDays($totalExtraDays); $totalDays = $totalExtraDays; } $currency = $subscriptionPlan->currency->currency_icon; return [ 'startDate' => $startsAt, 'name' => $subscriptionPlan->name . ' / ' . $frequency, 'trialDays' => $subscriptionPlan->trial_days, 'remainingBalance' => $remainingBalance, 'endDate' => $endsAt->format('jS M, Y'), 'amountToPay' => $amountToPay, 'usedDays' => $usedDays, 'totalExtraDays' => $totalExtraDays, 'totalDays' => $totalDays, 'currency' => $currency, ]; } return [ 'name' => $subscriptionPlan->name . ' / ' . $frequency, 'trialDays' => $subscriptionPlan->trial_days, 'startDate' => $startsAt, 'endDate' => $endsAt->format('jS M, Y'), 'remainingBalance' => 0, 'amountToPay' => $subscriptionPlan->price, 'usedDays' => $usedDays, 'totalExtraDays' => $totalExtraDays, 'totalDays' => $totalDays, ]; } } if (!function_exists('YoutubeID')){ function YoutubeID($url) { if (strlen($url) > 11) { if (preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match )) { return $match[1]; } else { return false; } } return $url; } } if (!function_exists('isSubscriptionExpired')){ function isSubscriptionExpired(): array { $subscription = Subscription::with(['plan']) ->whereTenantId(getLogInTenantId()) ->where('status', Subscription::ACTIVE)->latest()->first(); if ($subscription == null) { return [ 'status' => true, 'message' => 'Please choose a plan to continue the service.', ]; } /** @var Subscription $subscription */ $subscriptionEndDate = Carbon::parse($subscription->trial_ends_at); if ($subscription->trial_ends_at == null) { $subscriptionEndDate = Carbon::parse($subscription->ends_at); } $startsAt = Carbon::now(); $totalDays = Carbon::parse($subscription->starts_at)->diffInDays($subscriptionEndDate); $usedDays = Carbon::parse($subscription->starts_at)->diffInDays($startsAt); $diffInDays = $totalDays - $usedDays; $expirationMessage = null; if ($diffInDays <= getSuperAdminSettingValue('plan_expire_notification') && $diffInDays > 0) { $expirationMessage = __('messages.your') . " '{$subscription->plan->name}' " . __('messages.expire_in') . " {$diffInDays} " . __('messages.plan.days'); } else { $expirationMessage = __('messages.your') . " '{$subscription->plan->name}' " . __('messages.plan_expire'); } return [ 'status' => $diffInDays <= getSuperAdminSettingValue('plan_expire_notification'), 'message' => $expirationMessage, ]; } } if (!function_exists('setExpiryDate')){ function setExpiryDate($plan): ?Carbon { $expiryDate = ''; if ($plan->frequency == Plan::MONTHLY) { $date = Carbon::now()->addMonths($plan->valid_upto); } elseif ($plan->frequency == Plan::YEARLY) { $date = Carbon::now()->addYears($plan->valid_upto); } else { $expiryDate = null; } $currentSubs = getCurrentSubscription(); $remainingDays = ''; if ($currentSubs->ends_at > Carbon::now()) { $remainingDays = Carbon::parse($currentSubs->ends_at)->diffInDays(); } if (isset($date)) { $expiryDate = $date->addDays($remainingDays); } return $expiryDate; } } /** * @return bool */ if (!function_exists('checkFeature')){ function checkFeature($partName) { if (Auth::check() && getLoggedInUserRoleId() != getSuperAdminRoleId()) { $currentPlan = getCurrentSubscription()->plan; } else { $urlAlias = Route::current()->parameters['alias']; $vcard = Vcard::whereUrlAlias($urlAlias)->first(); if ($vcard) { $currentPlan = $vcard->subscriptions()->get()->where('status', 1)->first()->plan; } else { return false; } } if ($partName == 'services' && !$currentPlan->planFeature->products_services) { return false; } if ($partName == 'products' && !$currentPlan->planFeature->products) { return false; } if ($partName == 'appointments' && !$currentPlan->planFeature->appointments) { return false; } if ($partName == 'testimonials' && !$currentPlan->planFeature->testimonials) { return false; } if ($partName == 'social_links' && !$currentPlan->planFeature->social_links) { return false; } if ($partName == 'custom-links' && !$currentPlan->planFeature->custom_links) { return false; } if ($partName == 'custom-fonts' && !$currentPlan->planFeature->custom_fonts) { return false; } if ($partName == 'gallery' && !$currentPlan->planFeature->gallery) { return false; } if ($partName == 'seo' && !$currentPlan->planFeature->seo) { return false; } if ($partName == 'blog' && !$currentPlan->planFeature->blog) { return false; } if ($partName == 'privacy-policy' && !$currentPlan->planFeature->privacy_policy) { return false; } if ($partName == 'term-condition' && !$currentPlan->planFeature->term_condition) { return false; } if ($partName == 'affiliation' && !$currentPlan->planFeature->affiliation) { return false; } if ($partName == 'qrcode-customize' && !$currentPlan->planFeature->custom_qrcode) { return false; } if ($partName == 'order-nfc' && !$currentPlan->planFeature->order_nfc_card) { return false; } if ($partName == 'iframes' && !$currentPlan->planFeature->iframes) { return false; } if ($partName == 'dynamic_vcard' && !$currentPlan->planFeature->dynamic_vcard) { return false; } if ($partName == 'insta_embed' && !$currentPlan->planFeature->insta_embed) { return false; } if ($partName == 'enquiry_form' && !$currentPlan->planFeature->enquiry_form) { return false; } if ($partName == 'password' && !$currentPlan->planFeature->password) { return false; } if ($partName == 'advanced') { $feature = $currentPlan->planFeature; if (!$feature->password && !$feature->hide_branding && !$feature->custom_css && !$feature->custom_js) { return false; } return $feature; } return true; } } if (!function_exists('analyticsFeature')){ function analyticsFeature(): bool { $currentPlan = getCurrentSubscription()->plan; if ($currentPlan->planFeature->analytics) { return true; } return false; } } /** * @return int */ if (!function_exists('planfeaturecount')){ function planfeaturecount() { $cntcount = 0; $planstatus = \App\Models\PlanFeature::wherePlanId(getCurrentSubscription()->plan->id)->first(); foreach (getPlanFeature(getCurrentSubscription()->plan) as $feature => $value) { if ($value) { $cntcount++; } } if ($planstatus->enquiry_form == 1) { $cntcount--; } if ($planstatus->hide_branding == 1) { $cntcount--; } if ($planstatus->password == 1) { $cntcount--; } if ($planstatus->custom_js == 1) { $cntcount--; } if ($planstatus->custom_css == 1) { $cntcount--; } return $cntcount; } } /** * @return array */ if (!function_exists('getSchedulesTimingSlot')){ function getSchedulesTimingSlot() { $user = UserSetting::where('user_id', getLogInUser()->id)->get()->pluck('value', 'key'); $slots = []; $defaultFormat = 'h:i A'; // Default format is 12-hour if (isset($user['time_format'])) { if ($user['time_format'] == UserSetting::HOUR_24) { $defaultFormat = 'H:i'; // Use 24-hour format if specified } } $period1 = new CarbonPeriod('00:00', '15 minutes', '24:00'); foreach ($period1 as $item) { $formattedTime = $item->format($defaultFormat); $slots[$formattedTime] = $formattedTime; } // Second 24-hour period, adding "Next Day" label for clarity $period2 = new CarbonPeriod('00:00', '15 minutes', '24:00'); foreach ($period2 as $item) { $formattedTime = $item->format($defaultFormat) . ' (' . __('messages.next_day') . ')'; $slots[$formattedTime] = $formattedTime; } return $slots; } } if (!function_exists('getBusinessHours')){ function getBusinessHours(): array { $user = UserSetting::where('user_id', getLogInUser()->id)->get()->pluck('value', 'key'); $period = new CarbonPeriod('00:00', '15 minutes', '24:00'); // for create use 24 hours format later change format $times = []; if (isset($user['time_format'])) { if ($user['time_format'] == UserSetting::HOUR_12) { foreach ($period as $item) { $times[$item->format('h:i A')] = $item->format('h:i A'); } } else { if ($user['time_format'] == UserSetting::HOUR_24) { foreach ($period as $item) { $times[$item->format('H:i')] = $item->format('H:i'); } } } } else { foreach ($period as $item) { $times[$item->format('h:i A')] = $item->format('h:i A'); } } return $times; } } /** * @return mixed|string * * @throws Exception */ if (!function_exists('getTime')) { function getTime($time) { if (getUserSettingValue('time_format', getLogInUserId()) == UserSetting::HOUR_12) { $originalString = $time; $time = substr($originalString, 0, 8); $remainingString = substr($originalString, 8); $nextDay = trim($remainingString); if (!empty($nextDay)) { $localizedNextDay = '(' . __('messages.next_day') . ')'; return $time . ' ' . $localizedNextDay; } if (str_contains($time, 'AM') || str_contains($time, 'PM')) { return $time; } $date = new DateTime($time); return $date->format('h:i A'); } else { if (str_contains($time, 'AM') || str_contains($time, 'PM')) { $remainingText = preg_replace('/^\d{1,2}:\d{2}\s*[APM]+/', '', $time); $remainingText = trim($remainingText); $timeOnly = preg_replace('/\s*\(.*\)$/', '', $time); $date = new DateTime($timeOnly); return $date->format('H:i') . ' ' . $remainingText; } $originalString = $time; $time = substr($originalString, 0, 5); $remainingString = substr($originalString, 5); $nextDay = trim($remainingString); if (!empty($nextDay)) { $localizedNextDay = '(' . __('messages.next_day') . ')'; return $time . ' ' . $localizedNextDay; } } return $time; } } /** * @return mixed */ if (!function_exists('getSuperAdminSettingValue')){ function getSuperAdminSettingValue($key) { static $settings; try { DB::connection()->getPdo(); if (empty($settings)) { $settings = Setting::all()->keyBy('key'); } return $settings[$key]->value; } catch (\Exception $e) { } } } /** * @return array|Application|Translator|string|null */ if (!function_exists('getSuccessMessage')){ function getSuccessMessage($part) { if ($part == null) { return __('messages.vcard.basic_details'); } else { if ($part == 'basic') { return __('messages.vcard.basic_details'); } else { return __('messages.vcard.' . $part); } } } } /** * @return \Illuminate\Database\Eloquent\HigherOrderBuilderProxy|mixed|string|null */ if (!function_exists('getCurrentLanguageName')){ function getCurrentLanguageName() { if (Auth::user()) { return Auth::user()->language; } return 'en'; } } /** * @return mixed */ if (!function_exists('getSuperAdminEmail')){ function getSuperAdminEmail() { static $admin; if (empty($admin)) { $admin = User::role(CustomRole::ROLE_SUPER_ADMIN)->value('email'); } return $admin; } } /** * @return mixed|string */ if (!function_exists('checkLanguageSession')){ function checkLanguageSession($alias) { if (Session::has('languageChange_' . $alias)) { return Session::get('languageChange_' . $alias); } return 'en'; } } /** * @return string */ if (!function_exists('getCountryShortCode')){ function getCountryShortCode($countryName) { $country = Country::whereName($countryName)->first(); return isset($country) ? strtolower($country['short_code']) : ''; } } if (!function_exists('getDefaultPhoneCode')){ function getDefaultPhoneCode() { $code = Country::where('short_code', getSuperAdminSettingValue('default_country_code'))->value('phone_code'); return isset($code) ? '+' . $code : null; } } /** * @return string[] */ if (!function_exists('getPaymentGateway')){ function getPaymentGateway() { $paymentGateway = Subscription::PAYMENT_GATEWAY; $selectedPaymentGateways = PaymentGateway::pluck('payment_gateway')->toArray(); return array_intersect($paymentGateway, $selectedPaymentGateways); } } if (!function_exists('getRandColor')){ function getRandColor(): string { $bgColors = [ 'success', 'primary', 'info', 'success', 'dark', 'secondary', 'danger', 'warning', ]; $number = ceil(rand() % 7); return $bgColors[$number]; } } /** * @return mixed|string */ if (!function_exists('checkFrontLanguageSession')){ function checkFrontLanguageSession() { if (Session::has('languageName')) { return Session::get('languageName'); } return getSuperAdminSettingValue('default_language'); } } /** * @return Language[]|Collection */ if (!function_exists('getAllLanguage')){ function getAllLanguage() { return Language::where('status', 1)->pluck('name', 'iso_code')->toArray(); } } if (!function_exists('getAllLanguageWithFullData')){ function getAllLanguageWithFullData() { return Language::where('status', 1)->get(); } } if (!function_exists('getBGColors')){ function getBGColors($index): string { $colors = [ 'rgb(245, 158, 11', 'rgb(77, 124, 15', 'rgb(254, 199, 2', 'rgb(80, 205, 137', 'rgb(16, 158, 247', 'rgb(241, 65, 108', 'rgb(80, 205, 137', 'rgb(245, 152, 28', 'rgb(13, 148, 136', 'rgb(59, 130, 246', 'rgb(162, 28, 175', 'rgb(190, 18, 60', 'rgb(244, 63, 94', 'rgb(30, 30, 45', ]; return $colors[$index % count($colors)]; } } /** * @param $index * @return string */ if (!function_exists('getStatusClassName')){ function getStatusClassName($status) { $classNames = [ 'bg-status-canceled', 'bg-status-booked', 'bg-status-checkIn', 'bg-status-checkOut', ]; $index = $status % 4; return $classNames[$index]; } } /** * @return mixed */ if (!function_exists('getMaximumCurrencyCode')){ function getMaximumCurrencyCode($getIcon = false) { $plan = Plan::all()->groupBy('currency_id'); if ($plan->isEmpty()) { return; } if ($getIcon) { return $plan->first()->first()->currency->currency_icon; } return $plan->first()->first()->currency->currency_code; } } /** * @return bool */ if (!function_exists('isJPYCurrency')){ function isJPYCurrency($code) { return Currency::JPY_CODE == $code; } } /** * @return null */ if (!function_exists('getUserSettingValue')){ function getUserSettingValue($key, $userId) { $value = ''; $keyExist = UserSetting::where('key', '=', $key)->where('user_id', $userId)->exists(); if ($keyExist) { $value = UserSetting::where('key', '=', $key)->where('user_id', $userId)->first()->value; } return $value; } } if (!function_exists('getPaymentMethod')){ function getPaymentMethod($userSetting) { $stripeEnable = $userSetting['stripe_enable'] ?? false; $paypalEnable = $userSetting['paypal_enable'] ?? false; $flutterwaveEnable = $userSetting['flutterwave_enable'] ?? false; $paystackEnable = $userSetting['paytack_enable'] ?? false; $phonepeEnable = $userSetting['phonepe_enable'] ?? false; $manuallyEnable = $userSetting['manually_payment'] ?? false; $paymentTypes = []; if (!empty($stripeEnable) && $stripeEnable) { $paymentTypes[1] = 'Stripe'; } if (!empty($paypalEnable) && $paypalEnable) { $paymentTypes[2] = 'Paypal'; } if (!empty($paystackEnable) && $paystackEnable) { $paymentTypes[3] = 'Paystack'; } if (!empty($phonepeEnable) && $phonepeEnable) { $paymentTypes[4] = 'PhonePe'; } if (!empty($manuallyEnable) && $manuallyEnable) { $paymentTypes[7] = 'Manually'; } if (!empty($flutterwaveEnable) && $flutterwaveEnable) { $paymentTypes[8] = 'Flutterwave'; } return $paymentTypes; } } if (!function_exists('setUserStripeApiKey')){ function setUserStripeApiKey($userId) { $setting = UserSetting::where('user_id', $userId)->where('key', 'stripe_secret')->first(); if (!empty($setting)) { $secretKey = $setting->value; } Stripe::setApiKey($secretKey); } } if (!function_exists('setLocalLang')){ function setLocalLang($localeLanguage): bool { if (!isset($localeLanguage)) { App::setLocale('en'); } else { App::setLocale($localeLanguage); } return true; } } if (!function_exists('getVcardDefaultLanguage')){ function getVcardDefaultLanguage(): string { $language = 'en'; $vcard = Vcard::where('url_alias', request()->alias)->first(); if (!empty($vcard) && !empty($vcard->default_language)) { return $vcard->default_language; } return $language; } } /** * @return mixed */ if (!function_exists('getLanguage')){ function getLanguage($language) { $languageIsoCode = Session::get('languageChange_' . request()->alias); if (!empty($languageIsoCode)) { $language = $languageIsoCode; } $language = Language::whereIsoCode($language)->first(); if (!empty($language)) { return $language->name; } return 'English'; } } /** * @return mixed */ if (!function_exists('getLanguageIsoCode')){ function getLanguageIsoCode($isoCode) { $languageIsoCode = Session::get('languageChange_' . request()->alias); if (!empty($languageIsoCode)) { return $languageIsoCode; } return $isoCode; } } /** * @return mixed */ if (!function_exists('getLocalLanguage')){ function getLocalLanguage() { $languageIsoCode = Session::get('languageChange_' . request()->alias); return $languageIsoCode; } } /** * @return mixed */ if (!function_exists('getCurrentVersion')){ function getCurrentVersion() { $composerFile = file_get_contents(base_path('composer.json')); $composerData = json_decode($composerFile, true); $currentVersion = $composerData['version']; return $currentVersion; } } if (!function_exists('checkPaymentGateway')){ function checkPaymentGateway($paymentGateway): bool { if ($paymentGateway == Plan::STRIPE) { if (config('services.stripe.key') && config('services.stripe.secret_key')) { return true; } return false; } if ($paymentGateway == Plan::PAYPAL) { if (config('paypal.mode') == 'sandbox') { if (config('paypal.sandbox.client_id') && config('paypal.sandbox.client_secret')) { return true; } else { if (config('paypal.live.client_id') && config('paypal.live.client_secret')) { return true; } } } if (config('paypal.mode') == 'live') { if (config('paypal.sandbox.client_id') && config('paypal.sandbox.client_secret')) { return true; } else { if (config('paypal.live.client_id') && config('paypal.live.client_secret')) { return true; } } } return false; } if ($paymentGateway == Plan::RAZORPAY) { if (config('payments.razorpay.key') && config('payments.razorpay.secret')) { return true; } return false; } if ($paymentGateway == Plan::PAYSTACK) { if (config('paystack.publicKey') && config('paystack.secretKey')) { return true; } return false; } return true; } } if (!function_exists('getSelectedPaymentGateway')){ function getSelectedPaymentGateway($keyName) { $key = $keyName; static $settingValues; if (isset($settingValues[$key])) { return $settingValues[$key]; } /** @var Setting $setting */ $setting = Setting::where('key', '=', $keyName)->first(); if ($setting->value !== '') { $settingValues[$key] = $setting->value; } else { $envKey = strtoupper($key); $settingValues[$key] = env($envKey); } return $settingValues[$key]; } } if (!function_exists('getALlPlanName')){ function getALlPlanName() { $allPlanName = Plan::where('status', 1)->pluck('name', 'id')->toArray(); return $allPlanName; } } if (!function_exists('getLanguageByKey')){ function getLanguageByKey($key) { $languageName = Language::where('iso_code', $key)->first(); if (!empty($languageName['name'])) { return $languageName['name']; } return 'English'; } } if (!function_exists('generateUniqueAffiliateCode')){ function generateUniqueAffiliateCode(): string { $code = strtoupper(Str::random(10)); $ifAlreadyExists = User::where('affiliate_code', $code)->first(); if ($ifAlreadyExists) { return generateUniqueAffiliateCode(); } return $code; } } if (!function_exists('isAdmin')){ function isAdmin($user = null) { if (empty($user)) { $user = Auth::user(); } return $user->hasrole('admin'); } } if (!function_exists('currentAffiliateAmount')){ function currentAffiliateAmount($userId = null) { if (empty($userId)) { $userId = getLogInUserId(); } $withdrawAmount = Withdrawal::whereUserId($userId)->whereIsApproved(Withdrawal::APPROVED)->sum('amount'); $totalAmount = AffiliateUser::whereAffiliatedBy($userId)->sum('amount'); return $totalAmount - $withdrawAmount; } } if (!function_exists('getCurrencyAmount')){ function getCurrencyAmount($amount, $currency_icon) { static $currencyPosition; if (empty($currencyPosition)) { $currencyPosition = getSuperAdminSettingValue('currency_after_amount'); } if ($currencyPosition) { return $amount . '' . $currency_icon; } return $currency_icon . '' . $amount; } } if (!function_exists('getUniqueVcardUrlAlias')){ function getUniqueVcardUrlAlias() { $urlAlias = strtolower(Str::random(12)); $vcardWithSameUrl = Vcard::whereUrlAlias($urlAlias)->first(); if ($vcardWithSameUrl) { $urlAlias = getUniqueVcardUrlAlias(); } return $urlAlias; } } if (!function_exists('isUniqueVcardUrlAlias')){ function isUniqueVcardUrlAlias($urlAlias) { $vcardWithSameUrl = Vcard::withoutGlobalScope(TenantScope::class)->whereUrlAlias($urlAlias)->first(); if ($vcardWithSameUrl) { return $vcardWithSameUrl->id; } return true; } } if (!function_exists('retriveH1Card')){ function retriveH1Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(5)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-1/BG/Front.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $img = Image::make($imageH1Front); $img->insert($imageH1AppLogo, 'center'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-1/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $white = imagecolorallocate($im, 255, 255, 255); $blueColor = imagecolorallocate($im, 0, 82, 126); $grayColor = imagecolorallocate($im, 133, 134, 135); insertTextInImg($imageH1Back, $fullName, 1098 / 4, 162, 25, $fonts, $blueColor); insertTextInImg($imageH1Back, $input['occupation'], 1098 / 4, 200, 16, $fontsRegular, $grayColor); imagecopy($imageH1Back, $imageH1QrCode, 800, 90, 0, 0, $width, $height); imagettftext($imageH1Back, 16, 0, 233, 465, $white, $fontsRegular, $input['email']); imagettftext($imageH1Back, 16, 0, 233, 566, $white, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 16, 0, 737, 455, $white, $fontsRegular, wordwrap($input['location'], 30, "\n")); imagettftext($imageH1Back, 16, 0, 737, 556, $white, $fontsRegular, wordwrap($input['website'], 27, "\n", true)); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH2Card')){ function retriveH2Card($input) { $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-2/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $img = Image::make($imageH1Front); $img->insert($imageH1AppLogo, 'center'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-2/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 237, 205, 146); imagecopy($imageH1Back, $imageH1QrCode, 175, 250, 0, 0, $width, $height); imagettftext($imageH1Back, 25, 0, 609, 275, $color, $fonts, $fullName); imagettftext($imageH1Back, 20, 0, 609, 338, $color, $fonts, $input['occupation']); imagettftext($imageH1Back, 20, 0, 609, 400, $color, $fontsRegular, $phoneNumber); header('Content-Type: image/png'); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH3Card')){ function retriveH3Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-3/BG/Front.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $img = Image::make($imageH1Front); $img->insert($imageH1AppLogo, 'center'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-3/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); insertTextInImg($imageH1Back, $fullName, 1098 / 2, 370, 25, $fonts, '#343434'); insertTextInImg($imageH1Back, $phoneNumber, 1098 / 2, 429, 20, $fontsRegular, '#454748'); insertTextInImg($imageH1Back, $input['occupation'], 1098 / 2, 477, 20, $fontsRegular, '#454748'); $backgroundWidth = imagesx($imageH1Back); $qrCodeWidth = imagesx($imageH1QrCode); $qrCodeHeight = imagesy($imageH1QrCode); $x = ($backgroundWidth - $qrCodeWidth) / 2; $y = $height; imagecopy($imageH1Back, $imageH1QrCode, $x, $y, 0, 0, $qrCodeWidth, $qrCodeHeight); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH4Card')){ function retriveH4Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(3)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-4/BG/Front.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 725, 255, 0, 0, $newWidth, $newHeight); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-4/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $white = imagecolorallocate($im, 255, 255, 255); imagecopy($imageH1Back, $imageH1QrCode, 895, 260, 0, 0, $width, $height); imagettftext($imageH1Back, 25, 0, 90, 175, 000, $fonts, $fullName); imagettftext($imageH1Back, 16, 0, 90, 210, 000, $fontsRegular, $input['occupation']); if (strlen($input['location']) > 60) { imagettftext($imageH1Back, 16, 0, 160, 310, 000, $fontsRegular, wordwrap($input['location'], 45, "\n")); } else { imagettftext($imageH1Back, 16, 0, 160, 324, 000, $fontsRegular, wordwrap($input['location'], 45, "\n")); } imagettftext($imageH1Back, 16, 0, 160, 385, 000, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 16, 0, 160, 435, 000, $fontsRegular, $input['email']); imagettftext($imageH1Back, 16, 0, 160, 490, 000, $fontsRegular, wordwrap($input['website'], 45, "\n", true)); header('Content-Type: image/png'); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH5Card')){ function retriveH5Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-5/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 700, 250, 0, 0, $newWidth, $newHeight); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-5/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 134, 42, 137); insertTextInImg($imageH1Back, $fullName, 400, 140, 25, $fonts, $color); insertTextInImg($imageH1Back, $input['occupation'], 400, 175, 16, $fontsRegular, '000'); imagecopy($imageH1Back, $imageH1QrCode, 830, 75, 0, 0, $width, $height); imagettftext($imageH1Back, 16, 0, 308, 316, 000, $fontsRegular, wordwrap($input['location'], 65, "\n")); imagettftext($imageH1Back, 16, 0, 308, 375, 000, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 16, 0, 308, 424, 000, $fontsRegular, $input['email']); imagettftext($imageH1Back, 16, 0, 308, 478, 000, $fontsRegular, wordwrap($input['website'], 45, "\n", true)); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH6Card')){ function retriveH6Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-6/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $maxWidth = 150; $maxHeight = 150; $newWidth = min($maxWidth, $width); $newHeight = min($maxHeight, $height); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); imagecopy($imageH1Front, $imageH1AppLogo, 50, 490, 0, 0, $maxWidth, $maxHeight); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-6/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $white = imagecolorallocate($im, 212, 204, 210); insertTextInImg($imageH1Back, $fullName, 760, 395, 25, $fonts, $white); insertTextInImg($imageH1Back, $input['occupation'], 760, 430, 16, $fontsRegular, $white); imagecopy($imageH1Back, $imageH1QrCode, 690, 220, 0, 0, $width, $height); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH7Card')){ function retriveH7Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(3)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/H-Vcard/H-7/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$logoWidth, $logoHeight] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $img = Image::make($imageH1Front); $img->insert($imageH1AppLogo, 'center'); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/H-Vcard/H-7/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); insertTextInImg($imageH1Back, $fullName, 200, 160, 25, $fonts, '000'); insertTextInImg($imageH1Back, $input['occupation'], 200, 200, 16, $fontsRegular, '000'); $maxWidth = 150; $maxHeight = 150; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Back, $imageH1AppLogo, 792, 91, 0, 0, $newWidth, $newHeight); imagecopy($imageH1Back, $imageH1QrCode, 850, 450, 0, 0, $width, $height); imagettftext($imageH1Back, 16, 0, 160, 320, 000, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 16, 0, 160, 410, 000, $fontsRegular, wordwrap($input['website'], 75, "\n", true)); imagettftext($imageH1Back, 16, 0, 160, 492, 000, $fontsRegular, wordwrap($input['location'], 60, "\n")); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH8Card')){ function retriveH8Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(3)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-8/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$logoWidth, $logoHeight] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 250, 300, 0, 0, $newWidth, $newHeight); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-8/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); $file = public_path('qr/qr.png'); $tempDirectory = public_path('ecard/tempQRCode' . $vcard->id); if (!is_dir($tempDirectory)) { File::makeDirectory($tempDirectory, 0777, true); } $QRCodeName = 'QR.png'; $frontImageFilePath2 = $tempDirectory . '/' . $QRCodeName; file_put_contents($frontImageFilePath2, $imageH1QrCode); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); // $imageH1QrCode = imagecreatefromstring($qrCode); $white = imagecolorallocate($im, 255, 255, 255); header('Content-Type: image/png'); imagecopy($imageH1Back, $imageH1AppLogo, 245, 140, 0, 0, $logoWidth, $logoHeight); imagecopy($imageH1Back, $imageH1QrCode, 450, 870, 0, 0, $width, $height); // imagecopy($imageH1Back, $qrCode, 434, 800, 0, 0, $width, $height); imagettftext($imageH1Back, 16, 0, 94, 670, 000, $fonts, $fullName); imagettftext($imageH1Back, 14, 0, 94, 695, 000, $fontsRegular, $input['occupation']); imagettftext($imageH1Back, 14, 0, 121, 791, 000, $fontsRegular, wordwrap($input['location'], 50, "\n")); imagettftext($imageH1Back, 14, 0, 121, 852, 000, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 14, 0, 121, 907, 000, $fontsRegular, $input['email']); imagettftext($imageH1Back, 14, 0, 121, 971, 000, $fontsRegular, wordwrap($input['website'], 30, "\n", true)); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH9Card')){ function retriveH9Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(3)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-9/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$logoWidth, $logoHeight] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 255, 400, 0, 0, $newWidth, $newHeight); $img = Image::make($imageH1Front); $img->text($input['website'], 261, 1061, function ($font) use ($fontsRegular, $white) { $font->file($fontsRegular); $font->size(14); $font->color($white); $font->align('left'); }); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-9/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 255, 153, 0); imagecopy($imageH1Back, $imageH1AppLogo, 238, 100, 0, 0, $logoWidth, $logoHeight); imagecopy($imageH1Back, $imageH1QrCode, 430, 940, 0, 0, $width, $height); imagettftext($imageH1Back, 16, 0, 125, 440, $color, $fonts, $fullName); imagettftext($imageH1Back, 14, 0, 125, 470, 000, $fontsRegular, $input['occupation']); imagettftext($imageH1Back, 14, 0, 125, 620, 000, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 14, 0, 125, 720, 000, $fontsRegular, wordwrap($input['website'], 40, "\n", true)); imagettftext($imageH1Back, 14, 0, 125, 817, 000, $fontsRegular, wordwrap($input['location'], 45, "\n")); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH10Card')){ function retriveH10Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(5)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-10/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $img = Image::make($imageH1Front); $img->insert($imageH1AppLogo, 'center'); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-10/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $white = imagecolorallocate($im, 255, 255, 255); $color = imagecolorallocate($im, 7, 151, 144); insertTextInImg($imageH1Back, $fullName, 648 / 2, 130, 25, $fonts, $color); insertTextInImg($imageH1Back, $input['occupation'], 648 / 2, 170, 16, $fontsRegular, '000'); $backgroundWidth = imagesx($imageH1Back); $qrCodeWidth = imagesx($imageH1QrCode); $qrCodeHeight = imagesy($imageH1QrCode); $x = ($backgroundWidth - $qrCodeWidth) / 2; $y = $height; imagecopy($imageH1Back, $imageH1QrCode, $x, $y, 0, 0, $qrCodeWidth, $qrCodeHeight); // imagecopy($imageH1Back, $imageH1QrCode, 250, 260, 0, 0, $width, $height); imagettftext($imageH1Back, 14, 0, 170, 743, $white, $fontsRegular, wordwrap($input['location'], 45, "\n")); imagettftext($imageH1Back, 14, 0, 170, 823, $white, $fontsRegular, $phoneNumber); imagettftext($imageH1Back, 14, 0, 170, 880, $white, $fontsRegular, $input['email']); imagettftext($imageH1Back, 14, 0, 170, 945, $white, $fontsRegular, wordwrap($input['website'], 40, "\n", true)); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH11Card')){ function retriveH11Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-11/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 255, 230, 0, 0, $newWidth, $newHeight); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-11/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 0, 174, 169); imagecopy($imageH1Back, $imageH1QrCode, 460, 900, 0, 0, $width, $height); imagettftext($imageH1Back, 20, 0, 200, 190, $color, $fonts, $fullName); imagettftext($imageH1Back, 14, 0, 200, 235, 000, $fontsRegular, $input['occupation']); imagettftext($imageH1Back, 14, 0, 200, 425, 000, $fontsRegular, $input['email']); if (strlen($input['location']) > 60) { imagettftext($imageH1Back, 14, 0, 200, 500, 000, $fontsRegular, wordwrap($input['location'], 45, "\n")); } else { imagettftext($imageH1Back, 14, 0, 200, 515, 000, $fontsRegular, wordwrap($input['location'], 45, "\n")); } imagettftext($imageH1Back, 14, 0, 200, 605, 000, $fontsRegular, wordwrap($input['website'], 40, "\n", true)); imagettftext($imageH1Back, 14, 0, 200, 710, 000, $fontsRegular, $phoneNumber); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH12Card')){ function retriveH12Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-12/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 255, 250, 0, 0, $newWidth, $newHeight); header('Content-Type: image/png'); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-12/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 1, 140, 213); insertTextInImg($imageH1Back, $fullName, 648 / 2, 770, 30, $fonts, $color); insertTextInImg($imageH1Back, $input['occupation'], 648 / 2, 800, 20, $fontsRegular, '000'); imagecopy($imageH1Back, $imageH1QrCode, 255, 860, 0, 0, $width, $height); $backPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $backPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('retriveH13Card')){ function retriveH13Card($input) { $vcard = Vcard::whereId($input['vcard_id'])->first(); $fullName = $input['first_name'] . ' ' . $input['last_name']; $phoneNumber = '+' . $input['region_code'] . ' ' . $input['phone']; $vcardUrl = route('vcard.show', ['alias' => $vcard->url_alias]); $QRCodePath = public_path('ecard/' . $vcard->id . '-qr.png'); QRCode::url($vcardUrl)->setSize(4)->setOutfile($QRCodePath)->png(); $fonts = public_path('fonts/Roboto-Medium.ttf'); $fontsRegular = public_path('fonts/Roboto-Regular.ttf'); $imageH1Front = asset('assets/img/ecards/V-Vcard/V-13/BG/Front.png'); $imageH1QrCode = asset('assets/img/ecards/qr_code.png'); $imageH1AppLogo = asset('web/media/avatars/user.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1AppLogo); $imageH1Front = imagecreatefromstring(file_get_contents($imageH1Front)); $imageH1AppLogo = imagecreatefromstring(file_get_contents($input['ecard-logo'])); $white = imagecolorallocate($im, 255, 255, 255); $logoWidth = imagesx($imageH1AppLogo); $logoHeight = imagesy($imageH1AppLogo); $maxWidth = 200; $maxHeight = 200; $newWidth = min($maxWidth, $logoWidth); $newHeight = min($maxHeight, $logoHeight); imagecopy($imageH1Front, $imageH1AppLogo, 255, 620, 0, 0, $newWidth, $newHeight); $FrontImgPath = asset('uploads/ecard/' . $vcard->id); if (!Storage::exists($FrontImgPath)) { Storage::disk('public')->makeDirectory('ecard/' . $vcard->id); } $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); imagepng($imageH1Front, $frontPAth); $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Front.png'); $imageH1Back = asset('assets/img/ecards/V-Vcard/V-13/BG/Back.png'); $imageH1QrCode = public_path('ecard/' . $vcard->id . '-qr.png'); $im = imagecreatetruecolor(400, 30); [$width, $height] = getimagesize($imageH1QrCode); $imageH1Back = imagecreatefromstring(file_get_contents($imageH1Back)); $imageH1QrCode = imagecreatefromstring(file_get_contents($imageH1QrCode)); $color = imagecolorallocate($im, 253, 194, 67); insertTextInImg($imageH1Back, $fullName, 648 / 2, 180, 30, $fonts, $color); insertTextInImg($imageH1Back, $input['occupation'], 648 / 2, 220, 20, $fontsRegular, $white); imagecopy($imageH1Back, $imageH1QrCode, 235, 320, 0, 0, $width, $height); header('Content-Type: image/png'); $frontPAth = public_path('uploads/ecard/' . $vcard->id . '/Back.png'); imagepng($imageH1Back, $frontPAth); $fineName = storeImage($vcard); return $fineName; } } if (!function_exists('insertTextInImg')){ function insertTextInImg($image, $text, $x, $y, $fontSize, $fontPath, $color) { $img = Image::make($image); $img->text($text, $x, $y, function (Font $font) use ($color, $fontSize, $fontPath) { $font->file($fontPath); $font->size($fontSize); $font->color($color); $font->align('center'); }); } } if (!function_exists('storeImage')){ function storeImage($vcard) { $frontImageContents = Storage::disk('public')->get('ecard/' . $vcard->id . '/Front.png'); $backImageContents = Storage::disk('public')->get('ecard/' . $vcard->id . '/Back.png'); $tempDirectory = public_path('virtual_backgrounds'); if (!is_dir($tempDirectory)) { File::makeDirectory($tempDirectory, 0777, true); } $frontName = 'Front.jpg'; $backName = 'Back.jpg'; $frontImageFilePath = $tempDirectory . '/' . $frontName; $backImageFilePath = $tempDirectory . '/' . $backName; file_put_contents($frontImageFilePath, $frontImageContents); file_put_contents($backImageFilePath, $backImageContents); $zipFilename = 'virtual-backgrounds.zip'; $zipFilePath = $tempDirectory . '/' . $zipFilename; $zip = new \ZipArchive(); if ($zip->open($zipFilePath, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) === true) { $files = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($tempDirectory), \RecursiveIteratorIterator::LEAVES_ONLY ); foreach ($files as $name => $file) { if (!$file->isDir()) { $filePath = $file->getRealPath(); $relativePath = substr($filePath, strlen($tempDirectory) + 1); $zip->addFile($filePath, $relativePath); } } $zip->close(); } $zipFilePath = 'virtual_backgrounds/' . $zipFilename; $fineName = [$zipFilePath, $zipFilename]; return $fineName; } } if (!function_exists('getHEXToRGB')){ function getHEXToRGB($color) { // explode(" ",$str) } } if (!function_exists('homePageLayout')){ function homePageLayout() { return getSuperAdminSettingValue('home_page_theme') == 2 ? 'front.layouts.app1' : 'front.layouts.app'; } } if (!function_exists('checkTotalVcard')){ function checkTotalVcard(): bool { $makeVcard = false; $subscription = Subscription::where('tenant_id', getLogInTenantId())->where( 'status', Subscription::ACTIVE )->first(); if (!empty($subscription)) { $totalCards = Vcard::whereTenantId(getLogInTenantId())->count(); $makeVcard = $subscription->no_of_vcards > $totalCards; } return $makeVcard; } } if (!function_exists('getCurrencyIcon')){ function getCurrencyIcon($currencyCode) { return Currency::whereCurrencyCode($currencyCode)->first()->currency_icon; } } if (!function_exists('formatCurrency')){ function formatCurrency($price, $currencyIcon) { if ($currencyIcon == '$') { return $currencyIcon . number_format($price); } else { return getCurrencyAmount(number_format($price), $currencyIcon); } } } if (!function_exists('sendVcardNotifications')){ function sendVcardNotifications($vcardId) { $vcard = Vcard::whereId($vcardId)->first(); $playerIds = VcardSubscribers::where('vcard_id', $vcard->id)->pluck('player_id')->toArray(); $params = []; if (empty($playerIds)) { return; } $params['include_player_ids'] = $playerIds; $params['url'] = url($vcard->url_alias); $contents = [ 'en' => "Don't Skip - $vcard->name Click to uncover the latest update - Simple Tap", ]; $params['contents'] = $contents; OneSignalFacade::sendNotificationCustom($params); } } if (!function_exists('totalStorage')) { function totalStorage() { $totalStorageData = totalStorageData(); $totalStorageData = collect($totalStorageData)->sum(); $totalStorageInMB = $totalStorageData / (1024 * 1024); return $totalStorageInMB; } } if (!function_exists('totalStorageData')){ function totalStorageData() { $productIds = $blogIds = $serviceIds = $testimonialIds = $socialIds = $galleryIds = $vcardIds = $socialLinkIds = []; $totalStorage = [ 'product_storage' => 0, 'blog_storage' => 0, 'services_storage' => 0, 'testimonial_storage' => 0, 'social_storage' => 0, 'gallery_storage' => 0, 'profile_storage' => 0, 'pwa_storage' => 0, 'avatar_storage' => 0, ]; $vcard = Vcard::with(['services', 'gallery', 'testimonials', 'products', 'blogs']) ->whereTenantId(getLogInTenantId()) ->get(); foreach ($vcard as $card) { // Sum up product storage array_push($vcardIds, $card->id); foreach ($card->products as $product) { array_push($productIds, $product->id); } // Sum up blogId storage foreach ($card->blogs as $blog) { array_push($blogIds, $blog->id); } // Sum up testimonialIds storage foreach ($card->testimonials as $testimonial) { array_push($testimonialIds, $testimonial->id); } // Sum up galleryIds storage foreach ($card->gallery as $gallery) { array_push($galleryIds, $gallery->id); } // Sum up serviceIds storage foreach ($card->services as $service) { array_push($serviceIds, $service->id); } } $totalStorage['product_storage'] = Media::where('model_type', Product::class) ->whereIn('model_id', $productIds) ->sum('size'); // Sum up blog storage $totalStorage['blog_storage'] = Media::where('model_type', VcardBlog::class) ->whereIn('model_id', $blogIds) ->sum('size'); $socialLinkIds = SocialLink::whereIn('vcard_id', $vcardIds)->pluck('id')->toArray(); // Sum up social storage $socialLinks = SocialIcon::whereIn('social_link_id', $socialLinkIds)->get(); foreach ($socialLinks as $socialLink) { array_push($socialIds, $socialLink->id); } // Sum up social storage $totalStorage['social_storage'] = Media::where('model_type', SocialIcon::class) ->whereIn('model_id', $socialIds) ->sum('size'); // Sum up services storage $totalStorage['services_storage'] = Media::where('model_type', VcardService::class) ->whereIn('model_id', $serviceIds) ->sum('size'); // Sum up testimonial storage $totalStorage['testimonial_storage'] = Media::where('model_type', Testimonial::class) ->whereIn('model_id', $testimonialIds) ->sum('size'); // Sum up gallery storage $totalStorage['gallery_storage'] = Media::where('model_type', Gallery::class) ->whereIn('model_id', $galleryIds) ->sum('size'); // Sum up profile storage $totalStorage['profile_storage'] = Media::where('model_type', Vcard::class) ->whereIn('model_id', $vcardIds) ->sum('size'); // Sum up Pwa storage $userPwa = UserSetting::where('user_id', getLogInUserId()) ->where('key', 'pwa_icon') ->first(); if ($userPwa) { $totalStorage['pwa_storage'] = Media::where('model_type', UserSetting::class) ->where('model_id', $userPwa->id) ->sum('size'); } // Sum up avatar storage $totalStorage['avatar_storage'] = Media::where('model_type', User::class) ->where('model_id', getLogInUserId()) ->sum('size'); return $totalStorage; } } if (!function_exists('hasActiveSubscription')){ function hasActiveSubscription() { $subscription = Subscription::with('plan') ->where('status', Subscription::ACTIVE) ->where('tenant_id', getLogInUser()->tenant_id) ->first(); if ($subscription && !$subscription->isExpired()) { return true; } return false; } } if (!function_exists('getTranslatedData')) { function getTranslatedData($data) { $translatedDataArr = collect($data)->map(function ($value) { return __('messages.' . strtolower($value)); }); return $translatedDataArr; } } if (!function_exists('existPlan')){ function existPlan() { $subscription = Subscription::with('plan') ->where('status', Subscription::ACTIVE)->get(); return $subscription; } } if (!function_exists('totalStorageDataForUsersWithPlans')) { function totalStorageDataForUsersWithPlans() { $usersWithPlans = User::whereHas('subscriptions', function ($query) { $query->where('status', Subscription::ACTIVE); })->get(); $allUsersStorage = []; foreach ($usersWithPlans as $user) { $productIds = $blogIds = $serviceIds = $testimonialIds = $socialIds = $galleryIds = $vcardIds = $socialLinkIds = []; $totalStorage = [ 'product_storage' => 0, 'blog_storage' => 0, 'services_storage' => 0, 'testimonial_storage' => 0, 'social_storage' => 0, 'gallery_storage' => 0, 'profile_storage' => 0, 'pwa_storage' => 0, 'avatar_storage' => 0, ]; $vcards = Vcard::with(['services', 'gallery', 'testimonials', 'products', 'blogs']) ->where('tenant_id', $user->tenant_id) ->get(); foreach ($vcards as $card) { // Sum up product storage $vcardIds[] = $card->id; foreach ($card->products as $product) { $productIds[] = $product->id; } // Sum up blog storage foreach ($card->blogs as $blog) { $blogIds[] = $blog->id; } // Sum up testimonial storage foreach ($card->testimonials as $testimonial) { $testimonialIds[] = $testimonial->id; } // Sum up gallery storage foreach ($card->gallery as $gallery) { $galleryIds[] = $gallery->id; } // Sum up service storage foreach ($card->services as $service) { $serviceIds[] = $service->id; } } $totalStorage['product_storage'] = Media::where('model_type', Product::class) ->whereIn('model_id', $productIds) ->sum('size'); $totalStorage['blog_storage'] = Media::where('model_type', VcardBlog::class) ->whereIn('model_id', $blogIds) ->sum('size'); $socialLinkIds = SocialLink::whereIn('vcard_id', $vcardIds)->pluck('id')->toArray(); // Sum up social storage $socialLinks = SocialIcon::whereIn('social_link_id', $socialLinkIds)->get(); foreach ($socialLinks as $socialLink) { $socialIds[] = $socialLink->id; } $totalStorage['social_storage'] = Media::where('model_type', SocialIcon::class) ->whereIn('model_id', $socialIds) ->sum('size'); $totalStorage['services_storage'] = Media::where('model_type', VcardService::class) ->whereIn('model_id', $serviceIds) ->sum('size'); $totalStorage['testimonial_storage'] = Media::where('model_type', Testimonial::class) ->whereIn('model_id', $testimonialIds) ->sum('size'); $totalStorage['gallery_storage'] = Media::where('model_type', Gallery::class) ->whereIn('model_id', $galleryIds) ->sum('size'); $totalStorage['profile_storage'] = Media::where('model_type', Vcard::class) ->whereIn('model_id', $vcardIds) ->sum('size'); // Sum up Pwa storage $userPwa = UserSetting::where('user_id', $user->id) ->where('key', 'pwa_icon') ->first(); if ($userPwa) { $totalStorage['pwa_storage'] = Media::where('model_type', UserSetting::class) ->where('model_id', $userPwa->id) ->sum('size'); } // Sum up avatar storage $totalStorage['avatar_storage'] = Media::where('model_type', User::class) ->where('model_id', $user->id) ->sum('size'); $allUsersStorage[$user->id] = $totalStorage; } return $allUsersStorage; } } if (!function_exists('totalStorageDataForUsers')) { function totalStorageDataForUsers() { $totalStorageUserData = totalStorageDataForUsersWithPlans(); $totalStorageUserData = collect($totalStorageUserData)->reduce(function ($carry, $item) { foreach ($item as $key => $value) { if (!isset($carry[$key])) { $carry[$key] = 0; } $carry[$key] += $value; } return $carry; }, []); $totalStorageUserDataSum = array_sum($totalStorageUserData); $totalStorageUserInMB = $totalStorageUserDataSum / (1024 * 1024); return $totalStorageUserInMB; } } if (!function_exists('getMaxStorageUsedByPlan')) { function getMaxStorageUsedByPlan($planId) { $usersWithPlan = User::whereHas('subscriptions', function ($query) use ($planId) { $query->where('plan_id', $planId)->where('status', Subscription::ACTIVE); })->get(); $userStorageData = totalStorageDataForUsersWithPlans(); $maxStorageUsed = 0; foreach ($usersWithPlan as $user) { $userStorage = $userStorageData[$user->id]; $userTotalStorage = array_sum($userStorage); if ($userTotalStorage > $maxStorageUsed) { $maxStorageUsed = $userTotalStorage; } } return $maxStorageUsed / (1024 * 1024); // Convert bytes to MB } } if (!function_exists('manageVcards')) { function manageVcards($user = null) { if (!$user) { $user = getLogInUser(); } $vCards = Vcard::where('tenant_id', $user->tenant_id)->get(); $limitOfVcards = Subscription::whereTenantId($user->tenant_id)->where('status', Subscription::ACTIVE)->latest()->first()->no_of_vcards; if ($vCards->count() > $limitOfVcards) { $excessVcards = $vCards->sortByDesc('created_at')->skip($limitOfVcards); foreach ($excessVcards as $vCard) { $vCard->update(['status' => '0']); } } } } if (!function_exists('localized_date')) { function localized_date($date, $format = 'jS M, Y') { Carbon::setLocale(app()->getLocale()); if ($date instanceof Carbon) { return $date->translatedFormat($format); } $cleanDate = preg_replace('/(\d+)(st|nd|rd|th)/', '$1', $date); $carbonDate = Carbon::createFromFormat('j M, Y', $cleanDate); return $carbonDate->translatedFormat($format); } } if (!function_exists('getTimezonesList')) { function getTimezonesList() { $timezones = \DateTimeZone::listIdentifiers(); $timezoneList = array_combine($timezones, $timezones); $defaultTimezone = config('app.timezone'); return [ 'list' => $timezoneList, 'default' => $defaultTimezone, ]; } } if (!function_exists('custom_link')) { function custom_link($vcardId) { Carbon::setLocale(app()->getLocale()); return CustomLink::where('vcard_id', $vcardId)->get(); } } if (!function_exists('moduleExists')) { function moduleExists($moduleName) { $addOn = AddOn::where('name', $moduleName)->where('status', 1)->first(); if (File::exists(base_path('Modules/' . $moduleName . '/composer.json')) && $addOn) { return true; } return false; } } if (!function_exists('isModuleInstalled')) { function isModuleInstalled($moduleName) { if (File::exists(base_path('Modules/' . $moduleName . '/composer.json'))) { return true; } return false; } } Providers/AppServiceProvider.php000064400000003336152164577520013031 0ustar00app->singleton('localization.js', function ($app) { $app = $this->app; $laravelMajorVersion = (int) $app::VERSION; $files = $app['files']; if ($laravelMajorVersion === 4) { $langs = $app['path.base'].'/app/lang'; } elseif ($laravelMajorVersion >= 5 && $laravelMajorVersion < 9) { $langs = $app['path.base'].'/resources/lang'; } elseif ($laravelMajorVersion >= 9) { $langs = app()->langPath(); } $messages = $app['config']->get('localization-js.messages'); $generator = new LangJsGenerator($files, $langs, $messages); return new LangJsCommand($generator); }); } /** * Bootstrap any application services. */ public function boot(): void { // CARD AO SEGUNDO CONTROL - Force URL dinamica por dominio if (isset($_SERVER['HTTP_HOST'])) { $schema = app('request')->isSecure() ? 'https' : 'http'; \URL::forceRootUrl($schema . '://' . $_SERVER['HTTP_HOST']); \URL::forceScheme('https'); } app()->useLangPath(base_path('lang')); View::share('mixID', time()); } } Providers/RouteServiceProvider.php000064400000002576152164577520013414 0ustar00by($request->user()?->id ?: $request->ip()); }); $this->routes(function () { Route::prefix('api') ->middleware('api') ->group(base_path('routes/api.php')); Route::middleware('web') ->group(base_path('routes/web.php')); }); } } Providers/BroadcastServiceProvider.php000064400000000547152164577520014214 0ustar00 [], Events\TenantCreated::class => [ JobPipeline::make([ Jobs\CreateDatabase::class, Jobs\MigrateDatabase::class, // Your own jobs to prepare the tenant. // Provision API keys, create S3 buckets, anything you want! ])->send(function (Events\TenantCreated $event) { return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. ], Events\SavingTenant::class => [], Events\TenantSaved::class => [], Events\UpdatingTenant::class => [], Events\TenantUpdated::class => [], Events\DeletingTenant::class => [], Events\TenantDeleted::class => [ JobPipeline::make([ Jobs\DeleteDatabase::class, ])->send(function (Events\TenantDeleted $event) { return $event->tenant; })->shouldBeQueued(false), // `false` by default, but you probably want to make this `true` for production. ], // Domain events Events\CreatingDomain::class => [], Events\DomainCreated::class => [], Events\SavingDomain::class => [], Events\DomainSaved::class => [], Events\UpdatingDomain::class => [], Events\DomainUpdated::class => [], Events\DeletingDomain::class => [], Events\DomainDeleted::class => [], // Database events Events\DatabaseCreated::class => [], Events\DatabaseMigrated::class => [], Events\DatabaseSeeded::class => [], Events\DatabaseRolledBack::class => [], Events\DatabaseDeleted::class => [], // Tenancy events Events\InitializingTenancy::class => [], Events\TenancyInitialized::class => [ ], Events\EndingTenancy::class => [], Events\TenancyEnded::class => [ Listeners\RevertToCentralContext::class, ], Events\BootstrappingTenancy::class => [], Events\TenancyBootstrapped::class => [], Events\RevertingToCentralContext::class => [], Events\RevertedToCentralContext::class => [], // Resource syncing Events\SyncedResourceSaved::class => [ Listeners\UpdateSyncedResource::class, ], // Fired only when a synced resource is changed in a different DB than the origin DB (to avoid infinite loops) Events\SyncedResourceChangedInForeignDatabase::class => [], ]; } public function register(): void { // } public function boot(): void { $this->bootEvents(); $this->makeTenancyMiddlewareHighestPriority(); } protected function bootEvents() { foreach ($this->events() as $event => $listeners) { foreach (array_unique($listeners) as $listener) { if ($listener instanceof JobPipeline) { $listener = $listener->toListener(); } Event::listen($event, $listener); } } } protected function mapRoutes() { if (file_exists(base_path('routes/tenant.php'))) { } } protected function makeTenancyMiddlewareHighestPriority() { $tenancyMiddleware = [ // Even higher priority than the initialization middleware Middleware\PreventAccessFromCentralDomains::class, Middleware\InitializeTenancyByDomain::class, Middleware\InitializeTenancyBySubdomain::class, Middleware\InitializeTenancyByDomainOrSubdomain::class, Middleware\InitializeTenancyByPath::class, Middleware\InitializeTenancyByRequestData::class, ]; foreach (array_reverse($tenancyMiddleware) as $middleware) { $this->app[\Illuminate\Contracts\Http\Kernel::class]->prependToMiddlewarePriority($middleware); } } } Providers/AuthServiceProvider.php000064400000000671152164577520013211 0ustar00 [ SendEmailVerificationNotification::class, ], ]; /** * Register any events for your application. */ public function boot(): void { // } /** * Determine if events and listeners should be automatically discovered. */ public function shouldDiscoverEvents(): bool { return false; } } Mail/ContactUsMail.php000064400000001311152164577520010657 0ustar00input = $input; $this->email = $email; } /** * Build the message. */ public function build(): static { $subject = __('messages.contact_us.enquiry'); return $this->subject($subject) ->markdown('emails.contactUs') ->with($this->input); } } Mail/ManualPaymentGuideMail.php000064400000001345152164577520012514 0ustar00input = $input; $this->email = $email; } /** * Build the message. */ public function build(): static { $subject = __('messages.vcard.manual_payment_guide'); return $this->subject($subject) ->markdown('emails.manual_payment_guide') ->with($this->input); } } Mail/ProductOrderSendUser.php000064400000001021152164577520012234 0ustar00data = $data; } public function build() { return $this->subject(__('messages.mail.product_purchase')) ->markdown('emails.product_order_send_user') ->with(['data' => $this->data]); } } Mail/NewUserRegisteredMail.php000064400000001677152164577520012401 0ustar00user = $user; } /** * Get the message envelope. */ public function envelope(): Envelope { return new Envelope( subject: __('messages.user.registered'), ); } /** * Get the attachments for the message. * * @return array */ public function build() { return $this->subject('New User Registered')->markdown('emails.new_user_registered_mail'); } } Mail/SubscriptionPaymentSuccessMail.php000064400000001534152164577520014336 0ustar00emailData = $emailData; } /** * Get the attachments for the message. * * @return array */ public function build() { return $this->subject('Subscription Purchase Success') ->markdown('emails.subscription_payment_success') ->with(['data' => $this->emailData]); } } Mail/ProductOrderSendCustomer.php000064400000001017152164577520013124 0ustar00data = $data; } public function build() { return $this->subject('Product Purchase Success') ->markdown('emails.product_order_send_customer') ->with(['data' => $this->data]); } } Mail/PaymentWarningMail.php000066400000003212152164577520011723 0ustar00type = $type; $this->country = config('app.country', 'BR'); $this->userName = $vcard->user->name ?? 'Cliente'; $this->cardName = $vcard->name ?? 'Cartao Digital'; $this->payUrl = url('/payment/' . $vcard->id); } public function envelope(): Envelope { $subjects = [ 'warning' => [ 'BR' => 'Seu cartao digital sera excluido em 24 horas Regularize agora', 'PT' => 'O seu cartao digital sera eliminado em 24 horas Regularize agora', ], 'deleted' => [ 'BR' => 'Seu cartao digital foi removido por falta de pagamento', 'PT' => 'O seu cartao digital foi eliminado por falta de pagamento', ], ]; return new Envelope( subject: $subjects[$this->type][$this->country] ?? 'Aviso sobre o seu cartao digital CARD AO SEGUNDO CONTROL' ); } public function content(): Content { return new Content(view: 'emails.payment-warning'); } } Mail/UserAppointmentMail.php000064400000001421152164577520012113 0ustar00view = $view; $this->subject = $subject; $this->data = $data; } /** * Build the message. */ public function build(): static { return $this->subject($this->subject) ->from(config('app.mail_admin')) ->markdown($this->view) ->with($this->data); } } Mail/PlanExpirationReminder.php000064400000001713152164577520012602 0ustar00data = $data; } public function envelope(): Envelope { return new Envelope( subject: 'Plan Expiration Reminder', ); } /** * Get the message content definition. */ public function content(): Content { return new Content( markdown: 'emails.plan_expiration_reminder', ); } /** * Get the attachments for the message. * * @return array */ public function attachments(): array { return []; } } Mail/VerifyMail.php000064400000001230152164577520010220 0ustar00data = $data; } /** * Build the message. * * @return $this */ public function build() { return $this->subject(__('messages.mail.verify_email')) ->markdown('emails.verify_email'); } } Mail/NfcOrderStatusMail.php000064400000002205152164577520011665 0ustar00order = $order; $this->status = $status; } /** * Get the message envelope. */ public function envelope(): Envelope { return new Envelope( subject: __('messages.nfc.nfc_order_status'), ); } /** * Get the message content definition. */ public function content(): Content { return new Content( markdown: 'emails.nfc_order_status', ); } /** * Get the attachments for the message. * * @return array */ public function attachments(): array { return []; } } Mail/SuperAdminManualPaymentMail.php000064400000001572152164577520013530 0ustar00input = $input; $this->email = $email; } /** * Build the message. */ public function build(): static { $subject = __('messages.mail.new_manual_payment_request'); $mail = $this->subject($subject) ->markdown('emails.manual_payment_request_mail') ->with($this->input); if ($this->input['attachment']) { $mail->attach($this->input['attachment']); } return $mail; } } Mail/SendWithdrawalRequestChangedMail.php000064400000001473152164577520014530 0ustar00data = $data; $this->mailSubject = $subject; $this->mailView = $mailView; } /** * Build the message. */ public function build(): static { return $this->subject($this->mailSubject) ->from(config('mail.from.address')) ->markdown($this->mailView) ->with($this->data); } } Mail/SendinviteMail.php000064400000001325152164577520011071 0ustar00input = $input; $this->email = $email; } /** * Build the message. */ public function build(): static { $subject = __('messages.affiliation.invite_mail'); return $this->subject($subject) ->markdown('emails.sendinvite_mail') ->with($this->input); } } Mail/AppointmentMail.php000064400000001340152164577520011254 0ustar00view = $view; $this->subject = $subject; $this->data = $data; } /** * Build the message. */ public function build(): static { return $this->subject($this->subject) ->markdown($this->view) ->with($this->data); } } Mail/AppointmentApproveMail.php000064400000001247152164577520012617 0ustar00input = $input; } /** * Build the message. */ public function build(): static { $subject = __('messages.mail.appointment_approve'); return $this->subject($subject) ->markdown('emails.appointment_approve') ->with($this->input); } } Mail/LandingContactUsMail.php000064400000001336152164577520012163 0ustar00input = $input; $this->email = $email; } /** * Build the message. */ public function build(): static { $subject = __('messages.contact_us.enquiry'); return $this->subject($subject) ->markdown('emails.landing_contact_us_mail') ->with($this->input); } } Mail/SendEmail.php000064400000001413152164577520010015 0ustar00data = $data; } public static $rules = [ 'subject' => 'required', 'description' => 'required|string', 'custom_email.*' => 'required|email', ]; public function build() { return $this->subject($this->data['subject']) ->markdown('emails.send_email'); } } Mail/AdminNfcOrderMail.php000064400000002341152164577520011433 0ustar00nfcOrder = $nfcOrder; $this->vcardName = $vcardName; $this->cardType = $cardType; } /** * Get the message envelope. */ public function envelope(): Envelope { return new Envelope( subject: __('messages.nfc.nfc_order_recived'), ); } /** * Get the message content definition. */ public function content(): Content { return new Content( markdown: 'emails.admin_nfc_order', ); } /** * Get the attachments for the message. * * @return array */ public function attachments(): array { return []; } } Mail/ChangePasswordMail.php000064400000001326152164577520011672 0ustar00view = $view; $this->subject = $subject; $this->data = $data; } /** * Build the message. */ public function build(): static { return $this->subject($this->subject)->markdown($this->view) ->with($this->data); } } Mail/ForgetPasswordMail.php000064400000001343152164577520011732 0ustar00view = $view; $this->subject = $subject; $this->data = $data; } /** * Build the message. */ public function build(): static { return $this->subject($this->subject) ->markdown($this->view) ->with($this->data); } } Exceptions/Handler.php000064400000004771152164577520011002 0ustar00reportable(function (Throwable $e) { // }); } public function render($request, Throwable $exception) { $code = $exception->getCode(); $message = $exception->getMessage(); if ($code < 100 || $code >= 600) { $code = \Illuminate\Http\Response::HTTP_INTERNAL_SERVER_ERROR; } if ($exception instanceof ModelNotFoundException) { $message = $exception->getMessage(); $code = \Illuminate\Http\Response::HTTP_NOT_FOUND; if (preg_match('@\\\\(\w+)\]@', $message, $matches)) { $model = $matches[1]; $model = preg_replace('/Table/i', '', $model); $message = "{$model} not found."; } } if ($exception instanceof ValidationException) { $validator = $exception->validator; $message = $validator->errors()->first(); $code = \Illuminate\Http\Response::HTTP_UNPROCESSABLE_ENTITY; if (! $request->expectsJson() and ! $request->isXmlHttpRequest()) { return Redirect::back()->withInput()->withErrors($message); } } if ($exception instanceof StorageLimitExceededException) { $message = $exception->getMessage(); $code = \Illuminate\Http\Response::HTTP_UNPROCESSABLE_ENTITY; if (! $request->expectsJson() and ! $request->isXmlHttpRequest()) { return Redirect::back()->withInput()->withErrors($message); } } if ($request->expectsJson() or $request->isXmlHttpRequest()) { return Response::json([ 'success' => false, 'message' => $message, ], $code); } return parent::render($request, $exception); } } Exceptions/StorageLimitExceededException.php000064400000001705152164577520015330 0ustar00message = $message; } if (!is_null($code)) { $this->code = $code; } parent::__construct($this->message, $this->code, $previous); } } purifier/HTML/4.13.0,92dc1812ec0887b3a609dfb0640a32f1345ce4c5,1.ser000077700000054706152267615370016132 0ustar00O:27:"HTMLPurifier_HTMLDefinition":14:{s:5:"setup";b:1;s:9:"optimized";b:1;s:4:"type";s:4:"HTML";s:4:"info";a:14:{s:2:"em";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}s:6:"strong";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}s:4:"span";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:1:{s:5:"style";O:24:"HTMLPurifier_AttrDef_CSS":2:{s:9:"minimized";b:0;s:8:"required";b:0;}}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:2:"br";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:27:"HTMLPurifier_ChildDef_Empty":3:{s:4:"type";s:5:"empty";s:11:"allow_empty";b:1;s:8:"elements";a:0:{}}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:1:"p";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:1:{s:5:"style";r:127;}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:10:{s:7:"address";i:0;s:10:"blockquote";i:1;s:6:"center";i:2;s:3:"dir";i:3;s:3:"div";i:4;s:2:"dl";i:5;s:8:"fieldset";i:6;s:2:"ol";i:7;s:1:"p";i:8;s:2:"ul";i:9;}s:4:"wrap";N;s:10:"formatting";N;}s:3:"div";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:74:{s:2:"h1";b:1;s:2:"h2";b:1;s:2:"h3";b:1;s:2:"h4";b:1;s:2:"h5";b:1;s:2:"h6";b:1;s:7:"address";b:1;s:10:"blockquote";b:1;s:3:"pre";b:1;s:1:"p";b:1;s:3:"div";b:1;s:2:"hr";b:1;s:5:"table";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"center";b:1;s:3:"dir";b:1;s:4:"menu";b:1;s:7:"section";b:1;s:3:"nav";b:1;s:7:"article";b:1;s:5:"aside";b:1;s:6:"header";b:1;s:6:"footer";b:1;s:6:"hgroup";b:1;s:6:"figure";b:1;s:5:"video";b:1;s:6:"source";b:1;s:3:"ins";b:1;s:3:"del";b:1;s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:2:"ol";b:1;s:2:"ul";b:1;s:2:"dl";b:1;s:4:"form";b:1;s:8:"fieldset";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:1:"a";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:2:{s:4:"href";O:24:"HTMLPurifier_AttrDef_URI":4:{s:9:"minimized";b:0;s:8:"required";b:0;s:9:"*parser";O:22:"HTMLPurifier_URIParser":1:{s:17:"*percentEncoder";O:27:"HTMLPurifier_PercentEncoder":1:{s:11:"*preserve";a:66:{i:48;b:1;i:49;b:1;i:50;b:1;i:51;b:1;i:52;b:1;i:53;b:1;i:54;b:1;i:55;b:1;i:56;b:1;i:57;b:1;i:65;b:1;i:66;b:1;i:67;b:1;i:68;b:1;i:69;b:1;i:70;b:1;i:71;b:1;i:72;b:1;i:73;b:1;i:74;b:1;i:75;b:1;i:76;b:1;i:77;b:1;i:78;b:1;i:79;b:1;i:80;b:1;i:81;b:1;i:82;b:1;i:83;b:1;i:84;b:1;i:85;b:1;i:86;b:1;i:87;b:1;i:88;b:1;i:89;b:1;i:90;b:1;i:97;b:1;i:98;b:1;i:99;b:1;i:100;b:1;i:101;b:1;i:102;b:1;i:103;b:1;i:104;b:1;i:105;b:1;i:106;b:1;i:107;b:1;i:108;b:1;i:109;b:1;i:110;b:1;i:111;b:1;i:112;b:1;i:113;b:1;i:114;b:1;i:115;b:1;i:116;b:1;i:117;b:1;i:118;b:1;i:119;b:1;i:120;b:1;i:121;b:1;i:122;b:1;i:45;b:1;i:46;b:1;i:95;b:1;i:126;b:1;}}}s:17:"*embedsResource";b:0;}s:5:"title";O:25:"HTMLPurifier_AttrDef_Text":2:{s:9:"minimized";b:0;s:8:"required";b:0;}}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:3:{i:0;O:35:"HTMLPurifier_AttrTransform_NameSync":1:{s:5:"idDef";O:28:"HTMLPurifier_AttrDef_HTML_ID":3:{s:9:"minimized";b:0;s:8:"required";b:0;s:11:"*selector";b:0;}}i:1;O:43:"HTMLPurifier_AttrTransform_TargetNoreferrer":0:{}i:2;O:41:"HTMLPurifier_AttrTransform_TargetNoopener":0:{}}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:1:{s:1:"a";b:1;}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}s:2:"ol";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:26:"HTMLPurifier_ChildDef_List":3:{s:4:"type";s:4:"list";s:11:"allow_empty";N;s:8:"elements";a:3:{s:2:"li";b:1;s:2:"ul";b:1;s:2:"ol";b:1;}}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";s:2:"li";s:10:"formatting";N;}s:2:"ul";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:26:"HTMLPurifier_ChildDef_List":3:{s:4:"type";s:4:"list";s:11:"allow_empty";N;s:8:"elements";a:3:{s:2:"li";b:1;s:2:"ul";b:1;s:2:"ol";b:1;}}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";s:2:"li";s:10:"formatting";N;}s:2:"li";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:74:{s:2:"h1";b:1;s:2:"h2";b:1;s:2:"h3";b:1;s:2:"h4";b:1;s:2:"h5";b:1;s:2:"h6";b:1;s:7:"address";b:1;s:10:"blockquote";b:1;s:3:"pre";b:1;s:1:"p";b:1;s:3:"div";b:1;s:2:"hr";b:1;s:5:"table";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"center";b:1;s:3:"dir";b:1;s:4:"menu";b:1;s:7:"section";b:1;s:3:"nav";b:1;s:7:"article";b:1;s:5:"aside";b:1;s:6:"header";b:1;s:6:"footer";b:1;s:6:"hgroup";b:1;s:6:"figure";b:1;s:5:"video";b:1;s:6:"source";b:1;s:3:"ins";b:1;s:3:"del";b:1;s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:2:"ol";b:1;s:2:"ul";b:1;s:2:"dl";b:1;s:4:"form";b:1;s:8:"fieldset";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:1:"b";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}s:1:"i";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}s:3:"img";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:4:{s:6:"height";O:32:"HTMLPurifier_AttrDef_HTML_Pixels":3:{s:9:"minimized";b:0;s:8:"required";b:0;s:6:"*max";i:1200;}s:5:"width";O:32:"HTMLPurifier_AttrDef_HTML_Pixels":3:{s:9:"minimized";b:0;s:8:"required";b:0;s:6:"*max";i:1200;}s:3:"alt";O:25:"HTMLPurifier_AttrDef_Text":2:{s:9:"minimized";b:0;s:8:"required";b:0;}s:3:"src";O:24:"HTMLPurifier_AttrDef_URI":4:{s:9:"minimized";b:0;s:8:"required";b:1;s:9:"*parser";O:22:"HTMLPurifier_URIParser":1:{s:17:"*percentEncoder";O:27:"HTMLPurifier_PercentEncoder":1:{s:11:"*preserve";a:66:{i:48;b:1;i:49;b:1;i:50;b:1;i:51;b:1;i:52;b:1;i:53;b:1;i:54;b:1;i:55;b:1;i:56;b:1;i:57;b:1;i:65;b:1;i:66;b:1;i:67;b:1;i:68;b:1;i:69;b:1;i:70;b:1;i:71;b:1;i:72;b:1;i:73;b:1;i:74;b:1;i:75;b:1;i:76;b:1;i:77;b:1;i:78;b:1;i:79;b:1;i:80;b:1;i:81;b:1;i:82;b:1;i:83;b:1;i:84;b:1;i:85;b:1;i:86;b:1;i:87;b:1;i:88;b:1;i:89;b:1;i:90;b:1;i:97;b:1;i:98;b:1;i:99;b:1;i:100;b:1;i:101;b:1;i:102;b:1;i:103;b:1;i:104;b:1;i:105;b:1;i:106;b:1;i:107;b:1;i:108;b:1;i:109;b:1;i:110;b:1;i:111;b:1;i:112;b:1;i:113;b:1;i:114;b:1;i:115;b:1;i:116;b:1;i:117;b:1;i:118;b:1;i:119;b:1;i:120;b:1;i:121;b:1;i:122;b:1;i:45;b:1;i:46;b:1;i:95;b:1;i:126;b:1;}}}s:17:"*embedsResource";b:1;}}s:18:"attr_transform_pre";a:1:{i:0;O:38:"HTMLPurifier_AttrTransform_ImgRequired":0:{}}s:19:"attr_transform_post";a:2:{i:0;r:836;i:1;O:35:"HTMLPurifier_AttrTransform_NameSync":1:{s:5:"idDef";O:28:"HTMLPurifier_AttrDef_HTML_ID":3:{s:9:"minimized";b:0;s:8:"required";b:0;s:11:"*selector";b:0;}}}s:5:"child";O:27:"HTMLPurifier_ChildDef_Empty":3:{s:4:"type";s:5:"empty";s:11:"allow_empty";b:1;s:8:"elements";a:0:{}}s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:2:{i:0;s:3:"alt";i:1;s:3:"src";}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:1:"u";O:23:"HTMLPurifier_ElementDef":11:{s:10:"standalone";b:1;s:4:"attr";a:0:{}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:43:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:22:"descendants_are_inline";b:1;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";b:1;}}s:16:"info_global_attr";a:0:{}s:11:"info_parent";s:3:"div";s:15:"info_parent_def";O:23:"HTMLPurifier_ElementDef":13:{s:10:"standalone";b:1;s:4:"attr";a:7:{s:5:"class";O:31:"HTMLPurifier_AttrDef_HTML_Class":2:{s:9:"minimized";b:0;s:8:"required";b:0;}s:2:"id";O:28:"HTMLPurifier_AttrDef_HTML_ID":3:{s:9:"minimized";b:0;s:8:"required";b:0;s:11:"*selector";b:0;}s:5:"title";r:437;s:5:"style";r:127;s:3:"dir";O:25:"HTMLPurifier_AttrDef_Enum":4:{s:9:"minimized";b:0;s:8:"required";b:0;s:12:"valid_values";a:2:{s:3:"ltr";i:0;s:3:"rtl";i:1;}s:17:"*case_sensitive";b:0;}s:4:"lang";O:25:"HTMLPurifier_AttrDef_Lang":2:{s:9:"minimized";b:0;s:8:"required";b:0;}s:5:"align";O:25:"HTMLPurifier_AttrDef_Enum":4:{s:9:"minimized";b:0;s:8:"required";b:0;s:12:"valid_values";a:4:{s:4:"left";i:0;s:5:"right";i:1;s:6:"center";i:2;s:7:"justify";i:3;}s:17:"*case_sensitive";b:0;}}s:18:"attr_transform_pre";a:0:{}s:19:"attr_transform_post";a:0:{}s:5:"child";O:30:"HTMLPurifier_ChildDef_Optional":4:{s:4:"type";s:8:"optional";s:11:"allow_empty";b:1;s:8:"elements";a:74:{s:2:"h1";b:1;s:2:"h2";b:1;s:2:"h3";b:1;s:2:"h4";b:1;s:2:"h5";b:1;s:2:"h6";b:1;s:7:"address";b:1;s:10:"blockquote";b:1;s:3:"pre";b:1;s:1:"p";b:1;s:3:"div";b:1;s:2:"hr";b:1;s:5:"table";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"center";b:1;s:3:"dir";b:1;s:4:"menu";b:1;s:7:"section";b:1;s:3:"nav";b:1;s:7:"article";b:1;s:5:"aside";b:1;s:6:"header";b:1;s:6:"footer";b:1;s:6:"hgroup";b:1;s:6:"figure";b:1;s:5:"video";b:1;s:6:"source";b:1;s:3:"ins";b:1;s:3:"del";b:1;s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:2:"ol";b:1;s:2:"ul";b:1;s:2:"dl";b:1;s:4:"form";b:1;s:8:"fieldset";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;s:7:"#PCDATA";b:1;}s:13:"*whitespace";b:0;}s:13:"content_model";s:528:"h1 | h2 | h3 | h4 | h5 | h6 | address | blockquote | pre | p | div | hr | table | script | noscript | center | dir | menu | section | nav | article | aside | header | footer | hgroup | figure | video | source | ins | del | abbr | acronym | cite | dfn | kbd | q | samp | var | em | strong | code | span | br | a | sub | sup | b | big | i | small | tt | bdo | img | object | basefont | font | s | strike | u | iframe | figcaption | mark | wbr | ol | ul | dl | form | fieldset | input | select | textarea | button | label | #PCDATA";s:18:"content_model_type";s:8:"optional";s:22:"descendants_are_inline";b:0;s:13:"required_attr";a:0:{}s:8:"excludes";a:0:{}s:9:"autoclose";a:0:{}s:4:"wrap";N;s:10:"formatting";N;}s:18:"info_block_wrapper";s:1:"p";s:18:"info_tag_transform";a:0:{}s:23:"info_attr_transform_pre";a:0:{}s:24:"info_attr_transform_post";a:0:{}s:17:"info_content_sets";a:7:{s:4:"Flow";a:73:{s:2:"h1";b:1;s:2:"h2";b:1;s:2:"h3";b:1;s:2:"h4";b:1;s:2:"h5";b:1;s:2:"h6";b:1;s:7:"address";b:1;s:10:"blockquote";b:1;s:3:"pre";b:1;s:1:"p";b:1;s:3:"div";b:1;s:2:"hr";b:1;s:5:"table";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"center";b:1;s:3:"dir";b:1;s:4:"menu";b:1;s:7:"section";b:1;s:3:"nav";b:1;s:7:"article";b:1;s:5:"aside";b:1;s:6:"header";b:1;s:6:"footer";b:1;s:6:"hgroup";b:1;s:6:"figure";b:1;s:5:"video";b:1;s:6:"source";b:1;s:3:"ins";b:1;s:3:"del";b:1;s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:2:"ol";b:1;s:2:"ul";b:1;s:2:"dl";b:1;s:4:"form";b:1;s:8:"fieldset";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;}s:6:"Inline";a:42:{s:4:"abbr";b:1;s:7:"acronym";b:1;s:4:"cite";b:1;s:3:"dfn";b:1;s:3:"kbd";b:1;s:1:"q";b:1;s:4:"samp";b:1;s:3:"var";b:1;s:2:"em";b:1;s:6:"strong";b:1;s:4:"code";b:1;s:4:"span";b:1;s:2:"br";b:1;s:1:"a";b:1;s:3:"sub";b:1;s:3:"sup";b:1;s:1:"b";b:1;s:3:"big";b:1;s:1:"i";b:1;s:5:"small";b:1;s:2:"tt";b:1;s:3:"del";b:1;s:3:"ins";b:1;s:3:"bdo";b:1;s:3:"img";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"object";b:1;s:8:"basefont";b:1;s:4:"font";b:1;s:1:"s";b:1;s:6:"strike";b:1;s:1:"u";b:1;s:6:"iframe";b:1;s:10:"figcaption";b:1;s:4:"mark";b:1;s:3:"wbr";b:1;s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;}s:5:"Block";a:26:{s:7:"address";b:1;s:10:"blockquote";b:1;s:3:"pre";b:1;s:1:"p";b:1;s:3:"div";b:1;s:2:"hr";b:1;s:5:"table";b:1;s:6:"script";b:1;s:8:"noscript";b:1;s:6:"center";b:1;s:3:"dir";b:1;s:4:"menu";b:1;s:7:"section";b:1;s:3:"nav";b:1;s:7:"article";b:1;s:5:"aside";b:1;s:6:"header";b:1;s:6:"footer";b:1;s:6:"hgroup";b:1;s:6:"figure";b:1;s:5:"video";b:1;s:6:"source";b:1;s:3:"ins";b:1;s:3:"del";b:1;s:4:"form";b:1;s:8:"fieldset";b:1;}s:7:"Heading";a:6:{s:2:"h1";b:1;s:2:"h2";b:1;s:2:"h3";b:1;s:2:"h4";b:1;s:2:"h5";b:1;s:2:"h6";b:1;}s:4:"List";a:3:{s:2:"ol";b:1;s:2:"ul";b:1;s:2:"dl";b:1;}s:4:"Form";a:2:{s:4:"form";b:1;s:8:"fieldset";b:1;}s:8:"Formctrl";a:5:{s:5:"input";b:1;s:6:"select";b:1;s:8:"textarea";b:1;s:6:"button";b:1;s:5:"label";b:1;}}s:13:"info_injector";a:0:{}s:7:"doctype";O:20:"HTMLPurifier_Doctype":7:{s:4:"name";s:22:"HTML 4.01 Transitional";s:7:"modules";a:18:{i:0;s:16:"CommonAttributes";i:1;s:4:"Text";i:2;s:9:"Hypertext";i:3;s:4:"List";i:4;s:12:"Presentation";i:5;s:4:"Edit";i:6;s:3:"Bdo";i:7;s:6:"Tables";i:8;s:5:"Image";i:9;s:14:"StyleAttribute";i:10;s:9:"Scripting";i:11;s:6:"Object";i:12;s:5:"Forms";i:13;s:4:"Name";i:14;s:6:"Legacy";i:15;s:6:"Target";i:16;s:6:"Iframe";i:17;s:22:"NonXMLCommonAttributes";}s:11:"tidyModules";a:2:{i:0;s:17:"Tidy_Transitional";i:1;s:16:"Tidy_Proprietary";}s:3:"xml";b:0;s:7:"aliases";a:0:{}s:9:"dtdPublic";s:38:"-//W3C//DTD HTML 4.01 Transitional//EN";s:9:"dtdSystem";s:36:"http://www.w3.org/TR/html4/loose.dtd";}}Repositories/error_log000064400000064144152270060650011164 0ustar00[14-Jul-2026 23:47:26 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php on line 10 [14-Jul-2026 23:47:27 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php on line 9 [14-Jul-2026 23:47:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php on line 13 [14-Jul-2026 23:47:31 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php on line 13 [14-Jul-2026 23:47:32 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php on line 13 [14-Jul-2026 23:47:34 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php on line 14 [14-Jul-2026 23:47:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php on line 14 [14-Jul-2026 23:47:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php on line 12 [14-Jul-2026 23:47:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php on line 16 [14-Jul-2026 23:47:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php on line 13 [14-Jul-2026 23:47:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php on line 16 [14-Jul-2026 23:47:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/StateRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/StateRepository.php on line 7 [14-Jul-2026 23:47:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php:26 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php on line 26 [14-Jul-2026 23:47:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php on line 13 [14-Jul-2026 23:47:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserRepository.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserRepository.php on line 43 [14-Jul-2026 23:47:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php on line 13 [14-Jul-2026 23:47:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php on line 13 [14-Jul-2026 23:47:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php on line 12 [14-Jul-2026 23:47:54 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php:36 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php on line 36 [14-Jul-2026 23:47:55 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php on line 13 [14-Jul-2026 23:47:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php on line 12 [14-Jul-2026 23:47:58 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/featureRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/featureRepository.php on line 12 [15-Jul-2026 01:27:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php on line 13 [15-Jul-2026 01:27:24 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php on line 16 [15-Jul-2026 01:27:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php on line 15 [15-Jul-2026 01:27:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php on line 10 [15-Jul-2026 01:27:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CityRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CityRepository.php on line 7 [15-Jul-2026 01:27:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php on line 7 [15-Jul-2026 01:27:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php on line 12 [15-Jul-2026 01:27:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php on line 11 [15-Jul-2026 18:04:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php on line 13 [15-Jul-2026 18:05:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php on line 11 [15-Jul-2026 18:06:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php on line 12 [15-Jul-2026 18:07:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php on line 13 [15-Jul-2026 18:08:24 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php on line 12 [15-Jul-2026 18:09:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php on line 13 [15-Jul-2026 18:10:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php on line 13 [15-Jul-2026 18:11:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserRepository.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserRepository.php on line 43 [15-Jul-2026 18:13:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CityRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CityRepository.php on line 7 [15-Jul-2026 18:14:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php on line 15 [15-Jul-2026 18:15:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/StateRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/StateRepository.php on line 7 [15-Jul-2026 18:16:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php on line 16 [15-Jul-2026 18:19:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php on line 10 [15-Jul-2026 18:20:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php on line 13 [15-Jul-2026 18:21:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php:36 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php on line 36 [15-Jul-2026 18:22:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php on line 16 [15-Jul-2026 18:23:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php on line 14 [15-Jul-2026 18:24:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php on line 14 [15-Jul-2026 18:25:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php on line 12 [15-Jul-2026 19:14:25 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php on line 13 [15-Jul-2026 19:14:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php on line 13 [15-Jul-2026 19:14:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php on line 12 [15-Jul-2026 19:15:10 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php:26 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php on line 26 [15-Jul-2026 21:59:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php on line 9 [15-Jul-2026 22:14:24 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php on line 10 [16-Jul-2026 01:27:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/featureRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/featureRepository.php on line 12 [16-Jul-2026 02:33:34 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php on line 7 [16-Jul-2026 02:34:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php on line 13 [16-Jul-2026 03:51:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php on line 13 [16-Jul-2026 03:52:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php on line 16 [16-Jul-2026 17:05:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/InstagramEmbedRepository.php on line 13 [16-Jul-2026 17:05:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardServiceRepository.php on line 13 [16-Jul-2026 17:07:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/WithdrawalRepository.php on line 12 [16-Jul-2026 17:08:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CustomLinkRepository.php on line 11 [16-Jul-2026 17:09:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardProductRepository.php on line 12 [16-Jul-2026 17:10:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardBlogRepository.php on line 13 [16-Jul-2026 17:11:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserRepository.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserRepository.php on line 43 [16-Jul-2026 17:12:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CityRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CityRepository.php on line 7 [16-Jul-2026 17:13:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/RoleRepository.php on line 13 [16-Jul-2026 17:15:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BannerRepository.php on line 15 [16-Jul-2026 17:16:26 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/StateRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/StateRepository.php on line 7 [16-Jul-2026 17:17:30 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/PlanRepository.php on line 16 [16-Jul-2026 17:18:31 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/BlogRepository.php on line 10 [16-Jul-2026 17:19:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/IframeRepository.php on line 13 [16-Jul-2026 17:20:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php:36 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/VcardRepository.php on line 36 [16-Jul-2026 17:21:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AppointmentRepository.php on line 16 [16-Jul-2026 17:22:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/LanguageRepository.php on line 14 [16-Jul-2026 17:23:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcOrderRepository.php on line 14 [16-Jul-2026 17:24:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/NfcRepository.php on line 12 [16-Jul-2026 17:28:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/UserSettingRepository.php on line 13 [16-Jul-2026 17:29:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/TestimonialRepository.php on line 13 [16-Jul-2026 17:30:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CouponCodeRepository.php on line 12 [16-Jul-2026 17:31:09 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php:26 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SubscriptionRepository.php on line 26 [16-Jul-2026 17:34:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontTestimonialRepository.php on line 9 [16-Jul-2026 17:35:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/FrontFaqsRepository.php on line 10 [16-Jul-2026 17:44:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/featureRepository.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/featureRepository.php on line 12 [16-Jul-2026 17:47:50 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/CountryRepository.php on line 7 [16-Jul-2026 17:48:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/AboutUsRepository.php on line 13 [16-Jul-2026 17:53:13 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/GalleryRepository.php on line 13 [16-Jul-2026 17:54:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Repositories\BaseRepository" not found in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php:16 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Repositories/SettingRepository.php on line 16 Livewire/error_log000064400000077751152270060650010273 0ustar00[14-Jul-2026 23:46:00 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/AddOnTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AddOnTable.php on line 11 [14-Jul-2026 23:46:02 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/AdminDashboard.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AdminDashboard.php on line 7 [14-Jul-2026 23:46:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/AffiliateUserTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AffiliateUserTable.php on line 11 [14-Jul-2026 23:46:05 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/BlogList.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/BlogList.php on line 9 [14-Jul-2026 23:46:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/BlogTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/BlogTable.php on line 10 [14-Jul-2026 23:46:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CashPaymentTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CashPaymentTable.php on line 11 [14-Jul-2026 23:46:10 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CityTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CityTable.php on line 13 [14-Jul-2026 23:46:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ContactUsTable.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ContactUsTable.php on line 9 [14-Jul-2026 23:46:13 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CountryTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CountryTable.php on line 11 [14-Jul-2026 23:46:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php on line 10 [14-Jul-2026 23:46:16 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CurrencyTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CurrencyTable.php on line 10 [14-Jul-2026 23:46:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/DefaultLanguageTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/DefaultLanguageTable.php on line 11 [14-Jul-2026 23:46:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php on line 8 [14-Jul-2026 23:46:21 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FeatureTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FeatureTable.php on line 10 [14-Jul-2026 23:46:22 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/FrontBlogList.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontBlogList.php on line 9 [14-Jul-2026 23:46:24 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FrontFaqsTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontFaqsTable.php on line 11 [14-Jul-2026 23:46:25 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php on line 11 [14-Jul-2026 23:46:27 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/IframesTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/IframesTable.php on line 11 [14-Jul-2026 23:46:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/LanguageTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/LanguageTable.php on line 10 [14-Jul-2026 23:46:30 UTC] PHP Fatal error: Uncaught Error: Class "Rappasoft\LaravelLivewireTables\DataTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php on line 11 [14-Jul-2026 23:46:32 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php on line 12 [14-Jul-2026 23:46:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcOrdersTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcOrdersTable.php on line 11 [14-Jul-2026 23:46:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/PlanTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/PlanTable.php on line 10 [14-Jul-2026 23:46:36 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/SadminDashboard.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SadminDashboard.php on line 7 [14-Jul-2026 23:46:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php on line 14 [14-Jul-2026 23:46:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/StateTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/StateTable.php on line 12 [14-Jul-2026 23:46:41 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/SubscriptionTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SubscriptionTable.php on line 12 [14-Jul-2026 23:46:43 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/SuperAdminTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SuperAdminTable.php on line 10 [14-Jul-2026 23:46:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php on line 11 [14-Jul-2026 23:46:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserVcardTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserVcardTable.php on line 10 [14-Jul-2026 23:46:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php on line 12 [14-Jul-2026 23:46:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardBlogTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardBlogTable.php on line 10 [14-Jul-2026 23:46:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardContact.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardContact.php on line 9 [14-Jul-2026 23:46:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php on line 9 [14-Jul-2026 23:46:54 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardGalleryTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardGalleryTable.php on line 10 [14-Jul-2026 23:46:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php on line 11 [14-Jul-2026 23:46:57 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/VcardLists.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardLists.php on line 9 [14-Jul-2026 23:46:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardProductTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardProductTable.php on line 10 [14-Jul-2026 23:47:00 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardServiceTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardServiceTable.php on line 11 [14-Jul-2026 23:47:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardSubscriber.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardSubscriber.php on line 11 [14-Jul-2026 23:47:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardTable.php on line 13 [14-Jul-2026 23:47:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php on line 11 [14-Jul-2026 23:47:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/WithdrawalTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/WithdrawalTable.php on line 10 [14-Jul-2026 23:47:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php on line 11 [15-Jul-2026 01:23:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/EnquiriesTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/EnquiriesTable.php on line 11 [15-Jul-2026 01:24:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcTable.php on line 11 [15-Jul-2026 01:24:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php on line 13 [15-Jul-2026 01:24:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/TemplateTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/TemplateTable.php on line 11 [15-Jul-2026 01:24:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php on line 10 [15-Jul-2026 01:24:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserTable.php on line 10 [15-Jul-2026 17:03:15 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php on line 13 [15-Jul-2026 17:04:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php on line 11 [15-Jul-2026 17:05:13 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php on line 11 [15-Jul-2026 17:09:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php on line 14 [15-Jul-2026 17:10:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php on line 8 [15-Jul-2026 17:11:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php on line 11 [15-Jul-2026 17:27:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php on line 11 [15-Jul-2026 17:33:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php on line 11 [15-Jul-2026 17:33:34 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php on line 12 [15-Jul-2026 17:40:41 UTC] PHP Fatal error: Uncaught Error: Class "Rappasoft\LaravelLivewireTables\DataTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php on line 11 [15-Jul-2026 17:57:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php on line 10 [15-Jul-2026 18:27:58 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php on line 12 [15-Jul-2026 18:38:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php on line 9 [15-Jul-2026 19:24:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/DefaultLanguageTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/DefaultLanguageTable.php on line 11 [15-Jul-2026 21:49:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/SubscriptionTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SubscriptionTable.php on line 12 [15-Jul-2026 21:50:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardProductTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardProductTable.php on line 10 [15-Jul-2026 22:02:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CashPaymentTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CashPaymentTable.php on line 11 [15-Jul-2026 22:33:41 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/AdminDashboard.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AdminDashboard.php on line 7 [15-Jul-2026 22:33:50 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FrontFaqsTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontFaqsTable.php on line 11 [15-Jul-2026 22:34:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardBlogTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardBlogTable.php on line 10 [15-Jul-2026 22:35:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcOrdersTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcOrdersTable.php on line 11 [15-Jul-2026 22:36:21 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ContactUsTable.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ContactUsTable.php on line 9 [15-Jul-2026 23:03:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/AffiliateUserTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AffiliateUserTable.php on line 11 [15-Jul-2026 23:15:05 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/SadminDashboard.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SadminDashboard.php on line 7 [15-Jul-2026 23:15:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/SuperAdminTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/SuperAdminTable.php on line 10 [16-Jul-2026 00:16:29 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/FrontBlogList.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontBlogList.php on line 9 [16-Jul-2026 00:26:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardGalleryTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardGalleryTable.php on line 10 [16-Jul-2026 01:05:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ProductTransactionsTable.php on line 13 [16-Jul-2026 01:05:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardInstagramembedTable.php on line 11 [16-Jul-2026 01:05:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/ScheduleAppointmentTable.php on line 14 [16-Jul-2026 01:06:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/WithdrawalTransactionTable.php on line 11 [16-Jul-2026 01:08:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/EmailSubscriptionTable.php on line 8 [16-Jul-2026 01:09:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FrontTestimonialTable.php on line 11 [16-Jul-2026 01:10:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserShowVCardTable.php on line 11 [16-Jul-2026 01:11:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardTestimonialTable.php on line 11 [16-Jul-2026 01:12:13 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UsersubscriptionTable.php on line 12 [16-Jul-2026 01:13:14 UTC] PHP Fatal error: Uncaught Error: Class "Rappasoft\LaravelLivewireTables\DataTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/LivewireTableComponent.php on line 11 [16-Jul-2026 01:14:16 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserEnquiriesTable.php on line 10 [16-Jul-2026 01:15:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcCardOrderTable.php on line 12 [16-Jul-2026 01:16:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardCustomLinkTable.php on line 9 [16-Jul-2026 01:33:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CountryTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CountryTable.php on line 11 [16-Jul-2026 02:02:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardServiceTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardServiceTable.php on line 11 [16-Jul-2026 04:16:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/EnquiriesTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/EnquiriesTable.php on line 11 [16-Jul-2026 04:17:30 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserVcardTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserVcardTable.php on line 10 [16-Jul-2026 05:02:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/TemplateTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/TemplateTable.php on line 11 [16-Jul-2026 05:25:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php on line 10 [16-Jul-2026 05:25:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardSubscriber.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardSubscriber.php on line 11 [16-Jul-2026 05:25:09 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/WithdrawalTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/WithdrawalTable.php on line 10 [16-Jul-2026 07:02:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/NfcTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/NfcTable.php on line 11 [16-Jul-2026 07:05:06 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/BlogList.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/BlogList.php on line 9 [16-Jul-2026 08:13:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/LanguageTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/LanguageTable.php on line 10 [16-Jul-2026 08:13:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CurrencyTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CurrencyTable.php on line 10 [16-Jul-2026 08:56:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardTable.php on line 13 [16-Jul-2026 08:58:27 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/StateTable.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/StateTable.php on line 12 [16-Jul-2026 08:59:29 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/AddOnTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/AddOnTable.php on line 11 [16-Jul-2026 09:02:43 UTC] PHP Fatal error: Uncaught Error: Class "Livewire\Component" not found in /home/cardxfeb/public_html/app/Livewire/VcardLists.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardLists.php on line 9 [16-Jul-2026 09:33:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/VcardContact.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/VcardContact.php on line 9 [16-Jul-2026 09:36:32 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/IframesTable.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/IframesTable.php on line 11 [16-Jul-2026 09:38:37 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/FeatureTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/FeatureTable.php on line 10 [16-Jul-2026 10:17:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/PlanTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/PlanTable.php on line 10 [16-Jul-2026 10:19:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/UserTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/UserTable.php on line 10 [16-Jul-2026 10:24:35 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CityTable.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CityTable.php on line 13 [16-Jul-2026 10:25:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/BlogTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/BlogTable.php on line 10 [18-Jul-2026 06:40:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Livewire\LivewireTableComponent" not found in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Livewire/CouponCodeTable.php on line 10 Jobs/error_log000064400000002034152270060650007360 0ustar00[14-Jul-2026 22:38:53 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/GenerateAiCardJob.php on line 15 [14-Jul-2026 22:38:56 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/SendEmailJob.php on line 13 [14-Jul-2026 22:38:58 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/SendWithdrawRequestMailJob.php on line 13 [15-Jul-2026 17:28:11 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/SendWithdrawRequestMailJob.php on line 13 [16-Jul-2026 10:46:12 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/SendEmailJob.php on line 13 [16-Jul-2026 11:50:15 UTC] PHP Fatal error: Trait "Illuminate\Foundation\Bus\Dispatchable" not found in /home/cardxfeb/public_html/app/Jobs/GenerateAiCardJob.php on line 15 Http/Requests/error_log000064400000220726152270060650011227 0ustar00[15-Jul-2026 02:20:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php on line 7 [15-Jul-2026 02:20:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php on line 8 [15-Jul-2026 02:20:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php on line 8 [15-Jul-2026 02:20:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php on line 8 [15-Jul-2026 02:20:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php on line 8 [15-Jul-2026 02:20:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php on line 10 [15-Jul-2026 02:20:29 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php on line 8 [15-Jul-2026 02:20:32 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php on line 8 [15-Jul-2026 04:41:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php on line 8 [15-Jul-2026 04:41:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php on line 8 [15-Jul-2026 04:41:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php on line 7 [15-Jul-2026 04:41:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php on line 7 [15-Jul-2026 04:42:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php on line 7 [15-Jul-2026 04:42:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php on line 8 [15-Jul-2026 04:42:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php on line 7 [15-Jul-2026 04:42:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php on line 7 [15-Jul-2026 04:42:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php on line 8 [15-Jul-2026 04:42:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php on line 8 [15-Jul-2026 04:42:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php on line 7 [15-Jul-2026 04:42:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php on line 8 [15-Jul-2026 04:42:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php on line 8 [15-Jul-2026 04:42:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php on line 8 [15-Jul-2026 04:42:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php on line 8 [15-Jul-2026 04:42:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php on line 8 [15-Jul-2026 04:42:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php on line 8 [15-Jul-2026 04:42:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php on line 8 [15-Jul-2026 04:42:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php on line 8 [15-Jul-2026 04:42:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php on line 8 [15-Jul-2026 04:42:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php on line 8 [15-Jul-2026 04:42:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php on line 8 [15-Jul-2026 04:42:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php on line 8 [15-Jul-2026 04:42:10 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php on line 8 [15-Jul-2026 04:42:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php on line 8 [15-Jul-2026 04:42:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php on line 8 [15-Jul-2026 04:42:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php on line 8 [15-Jul-2026 04:42:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php on line 8 [15-Jul-2026 04:42:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php on line 8 [15-Jul-2026 04:42:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php on line 8 [15-Jul-2026 04:42:14 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php on line 8 [15-Jul-2026 04:42:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php on line 8 [15-Jul-2026 04:42:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php on line 9 [15-Jul-2026 04:42:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php on line 8 [15-Jul-2026 04:42:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php on line 9 [15-Jul-2026 04:42:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php on line 8 [15-Jul-2026 04:42:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php on line 9 [15-Jul-2026 04:42:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php on line 9 [15-Jul-2026 04:42:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php on line 8 [15-Jul-2026 04:42:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php on line 8 [15-Jul-2026 04:42:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php on line 8 [15-Jul-2026 04:42:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php on line 9 [15-Jul-2026 04:42:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php on line 9 [15-Jul-2026 04:42:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php on line 8 [15-Jul-2026 04:42:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php on line 8 [15-Jul-2026 04:42:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php on line 8 [15-Jul-2026 04:42:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php on line 8 [15-Jul-2026 04:42:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php on line 8 [15-Jul-2026 04:42:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php on line 8 [15-Jul-2026 04:42:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php on line 8 [15-Jul-2026 04:42:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php on line 8 [15-Jul-2026 04:42:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php on line 8 [15-Jul-2026 04:42:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php on line 8 [15-Jul-2026 04:42:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php on line 8 [15-Jul-2026 04:42:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php on line 8 [15-Jul-2026 04:42:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php on line 8 [15-Jul-2026 04:42:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php on line 8 [15-Jul-2026 05:56:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php on line 8 [15-Jul-2026 05:56:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php on line 8 [15-Jul-2026 05:56:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php on line 7 [15-Jul-2026 05:56:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php on line 8 [15-Jul-2026 05:56:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php on line 8 [15-Jul-2026 05:56:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php on line 7 [15-Jul-2026 05:57:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php on line 8 [15-Jul-2026 05:57:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php on line 8 [15-Jul-2026 05:57:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php on line 7 [15-Jul-2026 05:57:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php on line 8 [15-Jul-2026 05:57:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php on line 8 [15-Jul-2026 05:57:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php on line 8 [15-Jul-2026 05:57:10 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php on line 7 [15-Jul-2026 05:57:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php on line 8 [15-Jul-2026 05:57:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php on line 8 [15-Jul-2026 05:57:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php on line 8 [15-Jul-2026 05:57:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php on line 8 [15-Jul-2026 05:57:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php on line 8 [15-Jul-2026 05:57:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php on line 8 [15-Jul-2026 05:57:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php on line 9 [15-Jul-2026 05:57:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php on line 8 [15-Jul-2026 05:57:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php on line 8 [15-Jul-2026 05:57:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php on line 7 [15-Jul-2026 23:54:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php on line 7 [15-Jul-2026 23:55:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php on line 8 [15-Jul-2026 23:56:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php on line 8 [15-Jul-2026 23:57:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php on line 8 [15-Jul-2026 23:58:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php on line 8 [16-Jul-2026 00:09:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php on line 8 [16-Jul-2026 00:11:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php on line 8 [16-Jul-2026 00:50:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php on line 8 [16-Jul-2026 00:51:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php on line 7 [16-Jul-2026 00:52:34 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php on line 7 [16-Jul-2026 03:15:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php on line 8 [16-Jul-2026 03:16:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php on line 8 [16-Jul-2026 03:21:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php on line 9 [16-Jul-2026 03:49:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php on line 7 [16-Jul-2026 03:49:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php on line 7 [16-Jul-2026 04:04:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php on line 8 [16-Jul-2026 04:40:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php on line 8 [16-Jul-2026 04:59:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php on line 8 [16-Jul-2026 04:59:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php on line 8 [16-Jul-2026 04:59:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php on line 8 [16-Jul-2026 04:59:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php on line 8 [16-Jul-2026 04:59:48 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php on line 9 [16-Jul-2026 05:00:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php on line 8 [16-Jul-2026 05:24:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php on line 7 [16-Jul-2026 05:31:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php on line 7 [16-Jul-2026 05:56:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php on line 8 [16-Jul-2026 05:57:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php on line 7 [16-Jul-2026 05:58:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php on line 8 [16-Jul-2026 06:02:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php on line 8 [16-Jul-2026 06:02:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php on line 8 [16-Jul-2026 07:08:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php on line 8 [16-Jul-2026 07:08:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php on line 8 [16-Jul-2026 07:08:45 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php on line 8 [16-Jul-2026 07:08:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php on line 7 [16-Jul-2026 07:08:48 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php on line 7 [16-Jul-2026 07:08:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php on line 7 [16-Jul-2026 07:08:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php on line 7 [16-Jul-2026 07:08:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php on line 8 [16-Jul-2026 07:08:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php on line 8 [16-Jul-2026 07:08:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php on line 9 [16-Jul-2026 07:08:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php on line 8 [16-Jul-2026 07:08:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php on line 7 [16-Jul-2026 07:09:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php on line 8 [16-Jul-2026 07:09:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php on line 8 [16-Jul-2026 07:09:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php on line 8 [16-Jul-2026 07:09:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php on line 9 [16-Jul-2026 07:09:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php on line 7 [16-Jul-2026 07:34:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php on line 8 [16-Jul-2026 07:35:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php on line 8 [16-Jul-2026 07:36:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php on line 8 [16-Jul-2026 07:37:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php on line 8 [16-Jul-2026 07:38:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php on line 8 [16-Jul-2026 07:39:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php on line 8 [16-Jul-2026 07:40:29 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php on line 8 [16-Jul-2026 07:41:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php on line 8 [16-Jul-2026 07:42:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php on line 7 [16-Jul-2026 07:44:37 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php on line 9 [16-Jul-2026 07:53:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php on line 7 [16-Jul-2026 08:45:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php on line 8 [16-Jul-2026 08:45:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php on line 8 [16-Jul-2026 08:46:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php on line 8 [16-Jul-2026 09:08:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php on line 10 [16-Jul-2026 10:00:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php on line 9 [16-Jul-2026 10:01:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php on line 7 [16-Jul-2026 10:33:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php on line 8 [16-Jul-2026 10:34:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php on line 7 [16-Jul-2026 10:35:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php on line 8 [16-Jul-2026 11:45:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php on line 8 [16-Jul-2026 13:18:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php on line 8 [16-Jul-2026 13:25:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php on line 8 [16-Jul-2026 13:26:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php on line 8 [16-Jul-2026 13:27:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php on line 8 [16-Jul-2026 13:28:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php on line 8 [16-Jul-2026 13:29:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php on line 8 [16-Jul-2026 14:44:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php on line 8 [16-Jul-2026 15:42:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php on line 7 [16-Jul-2026 15:42:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php on line 8 [16-Jul-2026 15:43:55 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php on line 8 [16-Jul-2026 15:45:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php on line 8 [16-Jul-2026 15:46:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php on line 8 [16-Jul-2026 15:47:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php on line 9 [16-Jul-2026 16:05:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php on line 7 [16-Jul-2026 16:06:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php on line 8 [16-Jul-2026 16:31:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php on line 8 [17-Jul-2026 00:55:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscribersRequest.php on line 7 [17-Jul-2026 00:55:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateScheduleAppointmentRequest.php on line 8 [17-Jul-2026 00:56:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEmailSubscriptionRequest.php on line 8 [17-Jul-2026 00:57:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontTestimonialRequest.php on line 8 [17-Jul-2026 00:58:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontTestimonialRequest.php on line 8 [17-Jul-2026 00:59:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardBlogRequest.php on line 8 [17-Jul-2026 01:00:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardBlogRequest.php on line 8 [17-Jul-2026 01:01:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/createWithdrawAmountRequest.php on line 7 [17-Jul-2026 01:02:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateChangePasswordRequest.php on line 7 [17-Jul-2026 01:03:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateInstagramEmbedRequest.php on line 8 [17-Jul-2026 01:04:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/SendMailRequest.php on line 8 [17-Jul-2026 01:05:36 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/NfcOrderRequest.php on line 8 [17-Jul-2026 01:06:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRegisterRequest.php on line 9 [17-Jul-2026 01:07:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserSettingRequest.php on line 7 [17-Jul-2026 01:08:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCouponCodeRequest.php on line 7 [17-Jul-2026 01:09:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateInstagramEmbedRequest.php on line 8 [17-Jul-2026 01:10:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFeatureRequest.php on line 8 [17-Jul-2026 01:11:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateTestimonialRequest.php on line 8 [17-Jul-2026 01:12:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateMailSettingRequest.php on line 8 [17-Jul-2026 01:14:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCustomLinkRequest.php on line 8 [17-Jul-2026 01:15:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCustomLinkRequest.php on line 8 [17-Jul-2026 01:16:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateTestimonialRequest.php on line 8 [17-Jul-2026 01:17:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserProfileRequest.php on line 9 [17-Jul-2026 01:18:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomePageSettingRrequest.php on line 7 [17-Jul-2026 01:19:10 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/MobileRequest.php on line 7 [17-Jul-2026 01:20:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateLanguageRequest.php on line 7 [17-Jul-2026 01:21:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateLanguageRequest.php on line 8 [17-Jul-2026 01:22:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateFrontFaqRequest.php on line 8 [17-Jul-2026 01:23:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateStateRequest.php on line 8 [17-Jul-2026 01:24:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateStateRequest.php on line 8 [17-Jul-2026 01:25:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateProductRequest.php on line 8 [17-Jul-2026 01:26:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateAboutUsRequest.php on line 8 [17-Jul-2026 01:27:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateGalleryRequest.php on line 8 [17-Jul-2026 01:28:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/AddCouponCodeRequest.php on line 7 [17-Jul-2026 01:29:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateGalleryRequest.php on line 8 [17-Jul-2026 01:30:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePaymentRequest.php on line 8 [17-Jul-2026 01:31:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateSettingRequest.php on line 9 [17-Jul-2026 01:32:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateProductRequest.php on line 8 [17-Jul-2026 01:33:45 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactRequest.php on line 8 [17-Jul-2026 01:34:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCountryRequest.php on line 8 [17-Jul-2026 01:35:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateFrontCmsRequest.php on line 7 [17-Jul-2026 01:36:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCountryRequest.php on line 8 [17-Jul-2026 01:37:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEnquiryRequest.php on line 8 [17-Jul-2026 01:39:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateNfcCardRequest.php on line 8 [17-Jul-2026 01:40:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateContactEnquiryRequest.php on line 10 [17-Jul-2026 01:41:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateiframeRequest.php on line 7 [17-Jul-2026 01:42:14 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateiframeRequest.php on line 9 [17-Jul-2026 01:43:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardRequest.php on line 8 [17-Jul-2026 01:44:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardRequest.php on line 8 [17-Jul-2026 01:45:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateEcardRequest.php on line 7 [17-Jul-2026 01:46:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBannerRequest.php on line 8 [17-Jul-2026 01:47:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateVcardServiceRequest.php on line 8 [17-Jul-2026 01:48:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateRoleRequest.php on line 8 [17-Jul-2026 01:49:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateRoleRequest.php on line 8 [17-Jul-2026 01:50:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateUserRequest.php on line 8 [17-Jul-2026 01:51:44 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserRequest.php on line 8 [17-Jul-2026 01:52:48 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateCityRequest.php on line 8 [17-Jul-2026 01:53:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateNfcRequest.php on line 8 [17-Jul-2026 01:54:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateCityRequest.php on line 8 [17-Jul-2026 01:56:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateBlogRequest.php on line 8 [17-Jul-2026 01:57:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreatePlanRequest.php on line 9 [17-Jul-2026 01:58:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateBlogRequest.php on line 8 [17-Jul-2026 01:59:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdatePlanRequest.php on line 8 [17-Jul-2026 02:00:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/HomeBannerRequest.php on line 7 [17-Jul-2026 02:01:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/CreateVcardServiceRequest.php on line 8 [17-Jul-2026 02:02:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/UpdateUserPasswordRequest.php on line 7 [17-Jul-2026 02:03:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\FormRequest" not found in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Requests/ProductBuyRequest.php on line 8 Http/Controllers/error_log000064400000123452152270060650011720 0ustar00[15-Jul-2026 02:19:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserPhonepeController.php:27 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserPhonepeController.php on line 27 [15-Jul-2026 04:41:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php on line 19 [15-Jul-2026 04:41:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php on line 19 [15-Jul-2026 04:41:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php on line 13 [15-Jul-2026 04:41:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php on line 13 [15-Jul-2026 04:41:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php:49 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php on line 49 [15-Jul-2026 04:41:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php on line 19 [15-Jul-2026 04:41:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php:49 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php on line 49 [15-Jul-2026 04:41:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php on line 11 [15-Jul-2026 04:41:47 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php on line 13 [15-Jul-2026 04:41:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php on line 11 [15-Jul-2026 04:41:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php on line 9 [15-Jul-2026 04:41:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php:49 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php on line 49 [15-Jul-2026 04:41:49 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php on line 9 [15-Jul-2026 04:41:50 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php on line 12 [15-Jul-2026 04:41:50 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php on line 11 [15-Jul-2026 04:41:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php on line 12 [15-Jul-2026 04:41:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php on line 9 [15-Jul-2026 04:41:54 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php on line 12 [15-Jul-2026 08:55:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ProductTransactionController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ProductTransactionController.php on line 11 [15-Jul-2026 08:55:55 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/RazorpayController.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/RazorpayController.php on line 35 [15-Jul-2026 08:55:56 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/RoleController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/RoleController.php on line 20 [15-Jul-2026 08:55:58 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ScheduleAppointmentController.php:27 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ScheduleAppointmentController.php on line 27 [15-Jul-2026 08:56:00 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/SendMailController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SendMailController.php on line 12 [15-Jul-2026 08:56:01 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/SettingController.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SettingController.php on line 32 [15-Jul-2026 08:56:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/SocialAuthController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SocialAuthController.php on line 20 [15-Jul-2026 08:56:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StateController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StateController.php on line 13 [15-Jul-2026 08:56:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StorageLimitController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StorageLimitController.php on line 14 [15-Jul-2026 08:56:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StripeController.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StripeController.php on line 40 [15-Jul-2026 08:56:10 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/SubscriptionController.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SubscriptionController.php on line 32 [15-Jul-2026 08:56:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/TestimonialController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/TestimonialController.php on line 11 [15-Jul-2026 08:56:16 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserController.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserController.php on line 44 [15-Jul-2026 08:56:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserDashboardController.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserDashboardController.php on line 7 [15-Jul-2026 08:56:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserFlutterwaveController.php:24 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserFlutterwaveController.php on line 24 [15-Jul-2026 08:56:21 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserPaystackController.php:24 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserPaystackController.php on line 24 [16-Jul-2026 03:02:54 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AffiliationWithdrawController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AffiliationWithdrawController.php on line 17 [16-Jul-2026 03:04:00 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardSubscribersController.php on line 9 [16-Jul-2026 03:06:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserFlutterwaveController.php:24 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserFlutterwaveController.php on line 24 [16-Jul-2026 03:07:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ProductTransactionController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ProductTransactionController.php on line 11 [16-Jul-2026 03:08:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/EmailSubscriptionController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/EmailSubscriptionController.php on line 13 [16-Jul-2026 03:09:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FrontTestimonialController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FrontTestimonialController.php on line 13 [16-Jul-2026 03:10:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/InstagramEmbedController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/InstagramEmbedController.php on line 11 [16-Jul-2026 03:11:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ScheduleAppointmentController.php:27 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ScheduleAppointmentController.php on line 27 [16-Jul-2026 03:12:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CouponCodeController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CouponCodeController.php on line 14 [16-Jul-2026 03:13:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Routing\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Controller.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Controller.php on line 9 [16-Jul-2026 03:14:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ContactRequestController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ContactRequestController.php on line 13 [16-Jul-2026 03:33:31 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/MailSettingController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/MailSettingController.php on line 10 [16-Jul-2026 03:34:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserSettingController.php on line 19 [16-Jul-2026 03:35:10 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/TestimonialController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/TestimonialController.php on line 11 [16-Jul-2026 03:36:15 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/OnboardingController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/OnboardingController.php on line 13 [16-Jul-2026 03:37:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CustomLinkController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CustomLinkController.php on line 9 [16-Jul-2026 03:39:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/SocialAuthController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SocialAuthController.php on line 20 [16-Jul-2026 04:09:22 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CountryController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CountryController.php on line 13 [16-Jul-2026 04:10:15 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PhonepeController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PhonepeController.php on line 22 [16-Jul-2026 04:26:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserDashboardController.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserDashboardController.php on line 7 [16-Jul-2026 04:33:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserPhonepeController.php:27 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserPhonepeController.php on line 27 [16-Jul-2026 04:34:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/FlutterwaveController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FlutterwaveController.php on line 23 [16-Jul-2026 05:32:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaystackController.php:29 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaystackController.php on line 29 [16-Jul-2026 05:33:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/DashboardController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/DashboardController.php on line 19 [16-Jul-2026 05:34:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/SendMailController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SendMailController.php on line 12 [16-Jul-2026 05:35:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/LanguageController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/LanguageController.php on line 22 [16-Jul-2026 05:36:52 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/EnquiryController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/EnquiryController.php on line 22 [16-Jul-2026 05:37:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AboutUsController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AboutUsController.php on line 15 [16-Jul-2026 05:38:57 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AdminUserController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AdminUserController.php on line 20 [16-Jul-2026 05:39:58 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcOrdersController.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcOrdersController.php on line 28 [16-Jul-2026 05:41:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardBlogController.php on line 13 [16-Jul-2026 05:57:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FrontTestimonialController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FrontTestimonialController.php on line 13 [16-Jul-2026 05:57:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/GalleryController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/GalleryController.php on line 11 [16-Jul-2026 05:57:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/HomeController.php:26 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/HomeController.php on line 26 [16-Jul-2026 05:57:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/InstagramEmbedController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/InstagramEmbedController.php on line 11 [16-Jul-2026 05:57:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/LanguageController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/LanguageController.php on line 22 [16-Jul-2026 05:57:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/MailSettingController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/MailSettingController.php on line 10 [16-Jul-2026 05:57:16 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcCardOrderController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcCardOrderController.php on line 10 [16-Jul-2026 05:57:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcController.php on line 15 [16-Jul-2026 05:57:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcOrdersController.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcOrdersController.php on line 28 [16-Jul-2026 05:57:21 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/OnboardingController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/OnboardingController.php on line 13 [16-Jul-2026 05:57:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaypalController.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaypalController.php on line 42 [16-Jul-2026 06:25:59 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StripeController.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StripeController.php on line 40 [16-Jul-2026 06:26:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/BannerController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/BannerController.php on line 15 [16-Jul-2026 06:40:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AppBaseController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AppBaseController.php on line 12 [16-Jul-2026 06:40:39 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ProductController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ProductController.php on line 23 [16-Jul-2026 06:41:38 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CurrencyController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CurrencyController.php on line 9 [16-Jul-2026 06:42:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FrontFAQsController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FrontFAQsController.php on line 12 [16-Jul-2026 06:43:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/RazorpayController.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/RazorpayController.php on line 35 [16-Jul-2026 06:46:48 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/SettingController.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SettingController.php on line 32 [16-Jul-2026 07:01:33 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StateController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StateController.php on line 13 [16-Jul-2026 07:08:04 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AboutUsController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AboutUsController.php on line 15 [16-Jul-2026 07:08:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AddOnController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AddOnController.php on line 11 [16-Jul-2026 07:08:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AdminUserController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AdminUserController.php on line 20 [16-Jul-2026 07:08:09 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CouponCodeController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CouponCodeController.php on line 14 [16-Jul-2026 07:08:10 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CurrencyController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CurrencyController.php on line 9 [16-Jul-2026 07:08:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CustomLinkController.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CustomLinkController.php on line 9 [16-Jul-2026 07:08:14 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/DashboardController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/DashboardController.php on line 19 [16-Jul-2026 07:08:15 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/ECardsController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ECardsController.php on line 18 [16-Jul-2026 07:08:17 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/EmailSubscriptionController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/EmailSubscriptionController.php on line 13 [16-Jul-2026 07:08:19 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/EnquiryController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/EnquiryController.php on line 22 [16-Jul-2026 07:08:20 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FeatureController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FeatureController.php on line 19 [16-Jul-2026 07:08:22 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/FlutterwaveController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FlutterwaveController.php on line 23 [16-Jul-2026 07:08:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FrontFAQsController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FrontFAQsController.php on line 12 [16-Jul-2026 07:08:25 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaypalPayoutController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaypalPayoutController.php on line 12 [16-Jul-2026 07:08:27 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaystackController.php:29 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaystackController.php on line 29 [16-Jul-2026 07:08:28 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PhonepeController.php:22 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PhonepeController.php on line 22 [16-Jul-2026 07:08:30 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PlanController.php:21 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PlanController.php on line 21 [16-Jul-2026 07:08:32 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ProductController.php:23 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ProductController.php on line 23 [16-Jul-2026 08:13:23 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AffiliateUserController.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AffiliateUserController.php on line 7 [16-Jul-2026 08:23:07 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AsaasController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AsaasController.php on line 10 [16-Jul-2026 08:23:09 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/BannerController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/BannerController.php on line 15 [16-Jul-2026 08:23:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/BlogController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/BlogController.php on line 12 [16-Jul-2026 08:23:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Routing\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/Controller.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/Controller.php on line 9 [16-Jul-2026 08:31:06 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/FeatureController.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/FeatureController.php on line 19 [16-Jul-2026 08:31:29 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/GalleryController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/GalleryController.php on line 11 [16-Jul-2026 09:21:58 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/ECardsController.php:18 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ECardsController.php on line 18 [16-Jul-2026 09:22:02 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php on line 12 [16-Jul-2026 09:40:40 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardServiceController.php on line 11 [16-Jul-2026 09:50:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AddOnController.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AddOnController.php on line 11 [16-Jul-2026 09:50:53 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php:49 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/VcardController.php on line 49 [16-Jul-2026 10:50:22 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CityController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CityController.php on line 14 [16-Jul-2026 10:50:24 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/ContactRequestController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/ContactRequestController.php on line 13 [16-Jul-2026 10:50:26 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CountryController.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CountryController.php on line 13 [16-Jul-2026 10:56:01 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaypalController.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaypalController.php on line 42 [16-Jul-2026 11:17:11 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/HomeController.php:26 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/HomeController.php on line 26 [16-Jul-2026 11:18:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/RoleController.php:20 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/RoleController.php on line 20 [16-Jul-2026 11:19:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PlanController.php:21 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PlanController.php on line 21 [16-Jul-2026 11:20:08 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserController.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserController.php on line 44 [16-Jul-2026 11:21:12 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/BlogController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/BlogController.php on line 12 [16-Jul-2026 11:22:18 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AsaasController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AsaasController.php on line 10 [16-Jul-2026 11:45:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcCardOrderController.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcCardOrderController.php on line 10 [16-Jul-2026 11:45:51 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/SubscriptionController.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/SubscriptionController.php on line 32 [16-Jul-2026 13:25:05 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/NfcController.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/NfcController.php on line 15 [16-Jul-2026 15:02:36 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/StorageLimitController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/StorageLimitController.php on line 14 [16-Jul-2026 15:03:21 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/UserPaystackController.php:24 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/UserPaystackController.php on line 24 [16-Jul-2026 15:23:01 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/CityController.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/CityController.php on line 14 [16-Jul-2026 15:33:46 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/PaypalPayoutController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/PaypalPayoutController.php on line 12 [17-Jul-2026 00:07:42 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AffiliateUserController.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AffiliateUserController.php on line 7 [17-Jul-2026 00:07:44 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/AffiliationWithdrawController.php:17 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AffiliationWithdrawController.php on line 17 [17-Jul-2026 00:07:45 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\Controller" not found in /home/cardxfeb/public_html/app/Http/Controllers/AppBaseController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/AppBaseController.php on line 12 [18-Jul-2026 20:15:03 UTC] PHP Fatal error: Uncaught Error: Class "App\Http\Controllers\AppBaseController" not found in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Controllers/iframeController.php on line 12 Http/Middleware/error_log000064400000017315152270060650011467 0ustar00[15-Jul-2026 02:19:45 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance" not found in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php on line 7 [15-Jul-2026 02:19:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\TrimStrings" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php on line 7 [15-Jul-2026 02:19:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Http\Middleware\TrustHosts" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrustHosts.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrustHosts.php on line 7 [15-Jul-2026 02:19:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Http\Middleware\TrustProxies" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php on line 8 [15-Jul-2026 02:19:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Routing\Middleware\ValidateSignature" not found in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php on line 7 [15-Jul-2026 02:20:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\VerifyCsrfToken" not found in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php on line 7 [15-Jul-2026 05:56:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Auth\Middleware\Authenticate" not found in /home/cardxfeb/public_html/app/Http/Middleware/Authenticate.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/Authenticate.php on line 13 [15-Jul-2026 23:21:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance" not found in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php on line 7 [16-Jul-2026 01:26:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Routing\Middleware\ValidateSignature" not found in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php on line 7 [16-Jul-2026 02:26:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Cookie\Middleware\EncryptCookies" not found in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php on line 7 [16-Jul-2026 02:46:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\VerifyCsrfToken" not found in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php on line 7 [16-Jul-2026 03:38:24 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Middleware\IdentificationMiddleware" not found in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php on line 13 [16-Jul-2026 04:39:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Http\Middleware\TrustProxies" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php on line 8 [16-Jul-2026 07:08:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Cookie\Middleware\EncryptCookies" not found in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php on line 7 [16-Jul-2026 07:08:40 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Middleware\IdentificationMiddleware" not found in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php on line 13 [16-Jul-2026 08:13:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\TrimStrings" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php on line 7 [16-Jul-2026 14:23:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Auth\Middleware\Authenticate" not found in /home/cardxfeb/public_html/app/Http/Middleware/Authenticate.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/Authenticate.php on line 13 [16-Jul-2026 18:54:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance" not found in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/PreventRequestsDuringMaintenance.php on line 7 [16-Jul-2026 18:54:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Routing\Middleware\ValidateSignature" not found in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/ValidateSignature.php on line 7 [16-Jul-2026 18:55:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Cookie\Middleware\EncryptCookies" not found in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/EncryptCookies.php on line 7 [16-Jul-2026 18:56:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\VerifyCsrfToken" not found in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/VerifyCsrfToken.php on line 7 [16-Jul-2026 18:57:08 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Middleware\IdentificationMiddleware" not found in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php:13 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/MultiTenantMiddleware.php on line 13 [16-Jul-2026 18:58:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Http\Middleware\TrustProxies" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrustProxies.php on line 8 [16-Jul-2026 18:59:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Middleware\TrimStrings" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrimStrings.php on line 7 [16-Jul-2026 19:11:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Http\Middleware\TrustHosts" not found in /home/cardxfeb/public_html/app/Http/Middleware/TrustHosts.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Middleware/TrustHosts.php on line 7 Http/error_log000064400000001006152270060650007400 0ustar00[14-Jul-2026 22:38:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Kernel" not found in /home/cardxfeb/public_html/app/Http/Kernel.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Kernel.php on line 12 [16-Jul-2026 01:49:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Http\Kernel" not found in /home/cardxfeb/public_html/app/Http/Kernel.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Http/Kernel.php on line 12 Models/error_log000064400000116345152270060650007721 0ustar00[14-Jul-2026 03:16:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AboutUs.php:41 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AboutUs.php on line 41 [14-Jul-2026 03:16:44 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AddOn.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AddOn.php on line 8 [14-Jul-2026 03:16:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AffiliateUser.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AffiliateUser.php on line 40 [14-Jul-2026 03:16:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Analytic.php:51 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Analytic.php on line 51 [14-Jul-2026 03:16:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Appointment.php:37 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Appointment.php on line 37 [14-Jul-2026 03:16:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AppointmentDetail.php:38 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AppointmentDetail.php on line 38 [14-Jul-2026 03:16:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AppointmentTransaction.php:47 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AppointmentTransaction.php on line 47 [14-Jul-2026 03:16:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Banner.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Banner.php on line 10 [14-Jul-2026 03:16:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Blog.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Blog.php on line 11 [14-Jul-2026 03:16:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/BusinessCards.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/BusinessCards.php on line 10 [14-Jul-2026 03:16:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/BusinessHour.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/BusinessHour.php on line 35 [14-Jul-2026 03:17:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/City.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/City.php on line 35 [14-Jul-2026 03:17:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ContactRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ContactRequest.php on line 8 [14-Jul-2026 03:17:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ContactUs.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ContactUs.php on line 35 [14-Jul-2026 03:17:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Country.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Country.php on line 35 [14-Jul-2026 03:17:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/CouponCode.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/CouponCode.php on line 35 [14-Jul-2026 03:17:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Currency.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Currency.php on line 33 [14-Jul-2026 03:17:10 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/CustomLink.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/CustomLink.php on line 9 [14-Jul-2026 03:17:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/DynamicVcard.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/DynamicVcard.php on line 9 [14-Jul-2026 04:39:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/EmailSubscription.php:29 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/EmailSubscription.php on line 29 [14-Jul-2026 04:39:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/EmailVerification.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/EmailVerification.php on line 32 [14-Jul-2026 04:39:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Enquiry.php:41 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Enquiry.php on line 41 [14-Jul-2026 04:39:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Feature.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Feature.php on line 42 [14-Jul-2026 04:39:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/FrontFAQs.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/FrontFAQs.php on line 8 [14-Jul-2026 04:39:32 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/FrontTestimonial.php:38 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/FrontTestimonial.php on line 38 [14-Jul-2026 04:39:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Gallery.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Gallery.php on line 44 [14-Jul-2026 04:39:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Group.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Group.php on line 9 [14-Jul-2026 04:39:37 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Iframe.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Iframe.php on line 10 [14-Jul-2026 04:39:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/InstagramEmbed.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/InstagramEmbed.php on line 9 [14-Jul-2026 04:39:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Language.php:36 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Language.php on line 36 [14-Jul-2026 04:39:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/MailSetting.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MailSetting.php on line 8 [14-Jul-2026 04:39:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Meta.php:37 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Meta.php on line 37 [14-Jul-2026 04:39:45 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Database\Models\Tenant" not found in /home/cardxfeb/public_html/app/Models/MultiTenant.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MultiTenant.php on line 42 [14-Jul-2026 04:39:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/MultibancoReference.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MultibancoReference.php on line 8 [14-Jul-2026 04:39:48 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Nfc.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Nfc.php on line 11 [14-Jul-2026 04:39:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcCardOrder.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcCardOrder.php on line 33 [14-Jul-2026 04:39:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcOrderTransaction.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcOrderTransaction.php on line 8 [14-Jul-2026 04:39:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcOrders.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcOrders.php on line 11 [14-Jul-2026 04:39:55 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PaymentGateway.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PaymentGateway.php on line 31 [15-Jul-2026 01:25:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Permission.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Permission.php on line 33 [15-Jul-2026 01:25:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Plan.php:58 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Plan.php on line 58 [15-Jul-2026 01:25:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanCustomField.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanCustomField.php on line 8 [15-Jul-2026 01:25:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanFeature.php:61 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanFeature.php on line 61 [15-Jul-2026 01:25:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanTemplate.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanTemplate.php on line 31 [15-Jul-2026 01:25:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PrivacyPolicy.php:34 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PrivacyPolicy.php on line 34 [15-Jul-2026 01:25:36 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Product.php:50 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Product.php on line 50 [15-Jul-2026 01:25:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ProductTransaction.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ProductTransaction.php on line 44 [15-Jul-2026 01:25:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/QrcodeEdit.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/QrcodeEdit.php on line 31 [15-Jul-2026 01:25:46 UTC] PHP Fatal error: Uncaught Error: Class "Spatie\Permission\Models\Role" not found in /home/cardxfeb/public_html/app/Models/Role.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Role.php on line 43 [15-Jul-2026 01:25:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ScheduleAppointment.php:50 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ScheduleAppointment.php on line 50 [15-Jul-2026 01:25:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SendEmail.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SendEmail.php on line 8 [15-Jul-2026 01:25:55 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Setting.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Setting.php on line 42 [15-Jul-2026 01:25:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialAccount.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialAccount.php on line 35 [15-Jul-2026 01:26:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialIcon.php:39 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialIcon.php on line 39 [15-Jul-2026 01:26:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialLink.php:56 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialLink.php on line 56 [15-Jul-2026 01:26:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/State.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/State.php on line 33 [15-Jul-2026 01:26:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Subscription.php:64 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Subscription.php on line 64 [15-Jul-2026 01:26:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Template.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Template.php on line 42 [15-Jul-2026 01:26:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/TermCondition.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/TermCondition.php on line 33 [15-Jul-2026 01:26:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Testimonial.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Testimonial.php on line 43 [15-Jul-2026 01:26:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Transaction.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Transaction.php on line 42 [15-Jul-2026 01:26:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Auth\User" not found in /home/cardxfeb/public_html/app/Models/User.php:90 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/User.php on line 90 [15-Jul-2026 01:26:36 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/UserSetting.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/UserSetting.php on line 40 [15-Jul-2026 01:26:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Vcard.php:142 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Vcard.php on line 142 [15-Jul-2026 01:26:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardBlog.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardBlog.php on line 44 [15-Jul-2026 01:26:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardEmailSubscription.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardEmailSubscription.php on line 28 [15-Jul-2026 01:26:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardSections.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardSections.php on line 8 [15-Jul-2026 01:26:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardService.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardService.php on line 43 [15-Jul-2026 01:26:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardSubscribers.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardSubscribers.php on line 8 [15-Jul-2026 01:27:00 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardTemplate.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardTemplate.php on line 19 [15-Jul-2026 01:27:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Withdrawal.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Withdrawal.php on line 33 [15-Jul-2026 01:27:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/WithdrawalTransaction.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/WithdrawalTransaction.php on line 8 [15-Jul-2026 16:27:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/WithdrawalTransaction.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/WithdrawalTransaction.php on line 8 [15-Jul-2026 18:28:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/MultibancoReference.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MultibancoReference.php on line 8 [15-Jul-2026 18:29:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcOrderTransaction.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcOrderTransaction.php on line 8 [15-Jul-2026 19:35:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardEmailSubscription.php:28 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardEmailSubscription.php on line 28 [15-Jul-2026 22:01:48 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ProductTransaction.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ProductTransaction.php on line 44 [15-Jul-2026 22:24:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AddOn.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AddOn.php on line 8 [15-Jul-2026 22:24:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/State.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/State.php on line 33 [15-Jul-2026 22:24:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Vcard.php:142 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Vcard.php on line 142 [15-Jul-2026 22:24:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Group.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Group.php on line 9 [15-Jul-2026 23:16:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/EmailVerification.php:32 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/EmailVerification.php on line 32 [15-Jul-2026 23:20:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/EmailSubscription.php:29 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/EmailSubscription.php on line 29 [15-Jul-2026 23:51:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/CustomLink.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/CustomLink.php on line 9 [16-Jul-2026 00:08:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AppointmentTransaction.php:47 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AppointmentTransaction.php on line 47 [16-Jul-2026 00:17:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanCustomField.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanCustomField.php on line 8 [16-Jul-2026 00:27:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ScheduleAppointment.php:50 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ScheduleAppointment.php on line 50 [16-Jul-2026 00:47:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/DynamicVcard.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/DynamicVcard.php on line 9 [16-Jul-2026 01:34:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/InstagramEmbed.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/InstagramEmbed.php on line 9 [16-Jul-2026 01:46:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/City.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/City.php on line 35 [16-Jul-2026 01:46:44 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Blog.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Blog.php on line 11 [16-Jul-2026 01:46:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Meta.php:37 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Meta.php on line 37 [16-Jul-2026 01:46:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Plan.php:58 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Plan.php on line 58 [16-Jul-2026 01:47:23 UTC] PHP Fatal error: Uncaught Error: Class "Spatie\Permission\Models\Role" not found in /home/cardxfeb/public_html/app/Models/Role.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Role.php on line 43 [16-Jul-2026 01:48:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Auth\User" not found in /home/cardxfeb/public_html/app/Models/User.php:90 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/User.php on line 90 [16-Jul-2026 01:51:34 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Nfc.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Nfc.php on line 11 [16-Jul-2026 02:03:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Iframe.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Iframe.php on line 10 [16-Jul-2026 02:03:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Banner.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Banner.php on line 10 [16-Jul-2026 02:58:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Feature.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Feature.php on line 42 [16-Jul-2026 02:59:44 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Template.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Template.php on line 42 [16-Jul-2026 03:00:46 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Language.php:36 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Language.php on line 36 [16-Jul-2026 03:01:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Gallery.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Gallery.php on line 44 [16-Jul-2026 04:15:29 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardSubscribers.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardSubscribers.php on line 8 [16-Jul-2026 04:18:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/FrontTestimonial.php:38 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/FrontTestimonial.php on line 38 [16-Jul-2026 05:25:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AppointmentDetail.php:38 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AppointmentDetail.php on line 38 [16-Jul-2026 05:47:31 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Product.php:50 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Product.php on line 50 [16-Jul-2026 05:48:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Country.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Country.php on line 35 [16-Jul-2026 05:49:07 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Currency.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Currency.php on line 33 [16-Jul-2026 05:50:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Setting.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Setting.php on line 42 [16-Jul-2026 05:51:14 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Enquiry.php:41 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Enquiry.php on line 41 [16-Jul-2026 05:52:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AboutUs.php:41 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AboutUs.php on line 41 [16-Jul-2026 05:53:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Analytic.php:51 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Analytic.php on line 51 [16-Jul-2026 07:01:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialLink.php:56 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialLink.php on line 56 [16-Jul-2026 07:01:42 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Permission.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Permission.php on line 33 [16-Jul-2026 07:05:58 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialIcon.php:39 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialIcon.php on line 39 [16-Jul-2026 07:07:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Withdrawal.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Withdrawal.php on line 33 [16-Jul-2026 07:25:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Appointment.php:37 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Appointment.php on line 37 [16-Jul-2026 08:13:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/CouponCode.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/CouponCode.php on line 35 [16-Jul-2026 08:47:32 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialAccount.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialAccount.php on line 35 [16-Jul-2026 08:47:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardSections.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardSections.php on line 8 [16-Jul-2026 08:49:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/TermCondition.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/TermCondition.php on line 33 [16-Jul-2026 08:50:08 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcCardOrder.php:33 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcCardOrder.php on line 33 [16-Jul-2026 08:51:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Subscription.php:64 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Subscription.php on line 64 [16-Jul-2026 08:52:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/BusinessHour.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/BusinessHour.php on line 35 [16-Jul-2026 08:54:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardTemplate.php:19 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardTemplate.php on line 19 [16-Jul-2026 08:55:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardService.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardService.php on line 43 [16-Jul-2026 08:57:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/AffiliateUser.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/AffiliateUser.php on line 40 [16-Jul-2026 09:00:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PrivacyPolicy.php:34 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PrivacyPolicy.php on line 34 [16-Jul-2026 09:01:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/BusinessCards.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/BusinessCards.php on line 10 [16-Jul-2026 09:26:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/VcardBlog.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/VcardBlog.php on line 44 [16-Jul-2026 09:26:56 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/NfcOrders.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/NfcOrders.php on line 11 [16-Jul-2026 09:28:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SendEmail.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SendEmail.php on line 8 [16-Jul-2026 09:29:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/FrontFAQs.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/FrontFAQs.php on line 8 [16-Jul-2026 09:30:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ContactUs.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ContactUs.php on line 35 [16-Jul-2026 09:35:32 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PaymentGateway.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PaymentGateway.php on line 31 [16-Jul-2026 09:37:35 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ContactRequest.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ContactRequest.php on line 8 [16-Jul-2026 10:05:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanTemplate.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanTemplate.php on line 31 [16-Jul-2026 10:17:12 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Database\Models\Tenant" not found in /home/cardxfeb/public_html/app/Models/MultiTenant.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MultiTenant.php on line 42 [16-Jul-2026 10:18:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/UserSetting.php:40 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/UserSetting.php on line 40 [16-Jul-2026 10:20:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/PlanFeature.php:61 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/PlanFeature.php on line 61 [16-Jul-2026 10:21:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Transaction.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Transaction.php on line 42 [16-Jul-2026 10:23:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/Testimonial.php:43 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/Testimonial.php on line 43 [16-Jul-2026 10:26:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/MailSetting.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MailSetting.php on line 8 [16-Jul-2026 10:45:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/QrcodeEdit.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/QrcodeEdit.php on line 31 [18-Jul-2026 08:34:20 UTC] PHP Fatal error: Uncaught Error: Class "Stancl\Tenancy\Database\Models\Tenant" not found in /home/cardxfeb/public_html/app/Models/MultiTenant.php:42 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/MultiTenant.php on line 42 [18-Jul-2026 08:42:26 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/ProductTransaction.php:44 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/ProductTransaction.php on line 44 [18-Jul-2026 19:23:50 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Database\Eloquent\Model" not found in /home/cardxfeb/public_html/app/Models/SocialAccount.php:35 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Models/SocialAccount.php on line 35 MediaLibrary/error_log000064400000001725152270060650011035 0ustar00[14-Jul-2026 22:39:28 UTC] PHP Fatal error: Uncaught Error: Interface "Spatie\MediaLibrary\Support\PathGenerator\PathGenerator" not found in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php on line 31 [15-Jul-2026 18:03:25 UTC] PHP Fatal error: Uncaught Error: Interface "Spatie\MediaLibrary\Support\PathGenerator\PathGenerator" not found in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php on line 31 [16-Jul-2026 17:04:46 UTC] PHP Fatal error: Uncaught Error: Interface "Spatie\MediaLibrary\Support\PathGenerator\PathGenerator" not found in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php:31 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/MediaLibrary/CustomPathGenerator.php on line 31 Console/error_log000064400000001030152270060650010060 0ustar00[14-Jul-2026 22:38:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Console\Kernel" not found in /home/cardxfeb/public_html/app/Console/Kernel.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Kernel.php on line 10 [16-Jul-2026 02:59:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Console\Kernel" not found in /home/cardxfeb/public_html/app/Console/Kernel.php:10 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Kernel.php on line 10 Console/Commands/error_log000064400000003434152270060650011633 0ustar00[16-Jul-2026 04:12:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/CheckPendingPayments.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/CheckPendingPayments.php on line 11 [16-Jul-2026 04:13:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/PlanExpirationMailCommand.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/PlanExpirationMailCommand.php on line 14 [16-Jul-2026 04:44:53 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/CheckPendingPayments.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/CheckPendingPayments.php on line 11 [16-Jul-2026 04:44:55 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/GenerateSiteMap.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/GenerateSiteMap.php on line 9 [16-Jul-2026 04:44:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/PlanExpirationMailCommand.php:14 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/PlanExpirationMailCommand.php on line 14 [16-Jul-2026 08:20:05 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Console\Command" not found in /home/cardxfeb/public_html/app/Console/Commands/GenerateSiteMap.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Console/Commands/GenerateSiteMap.php on line 9 View/Components/error_log000064400000005751152270060650011533 0ustar00[15-Jul-2026 10:08:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/AppLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/AppLayout.php on line 8 [15-Jul-2026 10:08:03 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php on line 7 [15-Jul-2026 10:08:04 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php on line 8 [16-Jul-2026 16:40:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php on line 7 [16-Jul-2026 16:46:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/AppLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/AppLayout.php on line 8 [16-Jul-2026 16:47:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php on line 7 [16-Jul-2026 16:53:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php on line 8 [17-Jul-2026 02:24:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/AppLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/AppLayout.php on line 8 [17-Jul-2026 02:25:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php on line 7 [17-Jul-2026 02:26:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/GuestLayout.php on line 8 [17-Jul-2026 10:05:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\View\Component" not found in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/View/Components/ErrorBox.php on line 7 Providers/error_log000064400000007721152270060650010450 0ustar00[14-Jul-2026 22:39:37 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/AppServiceProvider.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/AppServiceProvider.php on line 11 [14-Jul-2026 22:39:39 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\AuthServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php on line 7 [14-Jul-2026 22:39:41 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/BroadcastServiceProvider.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/BroadcastServiceProvider.php on line 8 [14-Jul-2026 22:39:43 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\EventServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/EventServiceProvider.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/EventServiceProvider.php on line 9 [14-Jul-2026 22:39:45 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\RouteServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/RouteServiceProvider.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/RouteServiceProvider.php on line 11 [14-Jul-2026 22:39:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/TenancyServiceProvider.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/TenancyServiceProvider.php on line 15 [15-Jul-2026 17:06:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\AuthServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php on line 7 [15-Jul-2026 17:07:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/BroadcastServiceProvider.php:8 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/BroadcastServiceProvider.php on line 8 [15-Jul-2026 17:08:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/TenancyServiceProvider.php:15 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/TenancyServiceProvider.php on line 15 [15-Jul-2026 22:23:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\EventServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/EventServiceProvider.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/EventServiceProvider.php on line 9 [15-Jul-2026 22:23:02 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\RouteServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/RouteServiceProvider.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/RouteServiceProvider.php on line 11 [16-Jul-2026 00:55:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Support\ServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/AppServiceProvider.php:11 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/AppServiceProvider.php on line 11 [17-Jul-2026 08:36:38 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Support\Providers\AuthServiceProvider" not found in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php:7 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Providers/AuthServiceProvider.php on line 7 Mail/error_log000064400000027566152270060650007366 0ustar00[14-Jul-2026 04:39:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ManualPaymentGuideMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ManualPaymentGuideMail.php on line 9 [14-Jul-2026 04:39:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/NewUserRegisteredMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/NewUserRegisteredMail.php on line 12 [14-Jul-2026 04:39:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/NfcOrderStatusMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/NfcOrderStatusMail.php on line 12 [14-Jul-2026 04:39:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/PaymentWarningMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/PaymentWarningMail.php on line 12 [14-Jul-2026 22:39:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AdminNfcOrderMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AdminNfcOrderMail.php on line 12 [14-Jul-2026 22:39:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AppointmentApproveMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AppointmentApproveMail.php on line 9 [14-Jul-2026 22:39:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AppointmentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AppointmentMail.php on line 9 [14-Jul-2026 22:39:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ChangePasswordMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ChangePasswordMail.php on line 9 [14-Jul-2026 22:39:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ContactUsMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ContactUsMail.php on line 9 [14-Jul-2026 22:39:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SuperAdminManualPaymentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SuperAdminManualPaymentMail.php on line 9 [14-Jul-2026 22:39:20 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/UserAppointmentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/UserAppointmentMail.php on line 9 [14-Jul-2026 23:47:10 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ForgetPasswordMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ForgetPasswordMail.php on line 9 [14-Jul-2026 23:47:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/LandingContactUsMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/LandingContactUsMail.php on line 9 [14-Jul-2026 23:47:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/PlanExpirationReminder.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/PlanExpirationReminder.php on line 12 [14-Jul-2026 23:47:15 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ProductOrderSendCustomer.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ProductOrderSendCustomer.php on line 9 [14-Jul-2026 23:47:16 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php on line 9 [14-Jul-2026 23:47:18 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendEmail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendEmail.php on line 12 [14-Jul-2026 23:47:19 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendWithdrawalRequestChangedMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendWithdrawalRequestChangedMail.php on line 9 [14-Jul-2026 23:47:21 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendinviteMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendinviteMail.php on line 9 [14-Jul-2026 23:47:23 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php on line 12 [14-Jul-2026 23:47:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/VerifyMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/VerifyMail.php on line 9 [15-Jul-2026 15:35:17 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendWithdrawalRequestChangedMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendWithdrawalRequestChangedMail.php on line 9 [15-Jul-2026 16:48:24 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php on line 12 [15-Jul-2026 17:29:13 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ManualPaymentGuideMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ManualPaymentGuideMail.php on line 9 [15-Jul-2026 17:47:01 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ProductOrderSendCustomer.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ProductOrderSendCustomer.php on line 9 [15-Jul-2026 17:55:22 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AppointmentApproveMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AppointmentApproveMail.php on line 9 [15-Jul-2026 22:00:52 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php on line 9 [15-Jul-2026 23:03:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/PlanExpirationReminder.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/PlanExpirationReminder.php on line 12 [15-Jul-2026 23:07:47 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SuperAdminManualPaymentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SuperAdminManualPaymentMail.php on line 9 [16-Jul-2026 02:03:49 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/NfcOrderStatusMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/NfcOrderStatusMail.php on line 12 [16-Jul-2026 02:14:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/NewUserRegisteredMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/NewUserRegisteredMail.php on line 12 [16-Jul-2026 04:47:09 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/LandingContactUsMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/LandingContactUsMail.php on line 9 [16-Jul-2026 06:17:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AppointmentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AppointmentMail.php on line 9 [16-Jul-2026 06:30:51 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/VerifyMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/VerifyMail.php on line 9 [16-Jul-2026 07:10:59 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendEmail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendEmail.php on line 12 [16-Jul-2026 07:48:25 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SendinviteMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SendinviteMail.php on line 9 [16-Jul-2026 08:46:54 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ContactUsMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ContactUsMail.php on line 9 [16-Jul-2026 09:21:33 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/UserAppointmentMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/UserAppointmentMail.php on line 9 [16-Jul-2026 10:17:06 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/AdminNfcOrderMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/AdminNfcOrderMail.php on line 12 [16-Jul-2026 12:33:40 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ForgetPasswordMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ForgetPasswordMail.php on line 9 [16-Jul-2026 12:34:11 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/PaymentWarningMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/PaymentWarningMail.php on line 12 [16-Jul-2026 12:35:12 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ChangePasswordMail.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ChangePasswordMail.php on line 9 [17-Jul-2026 08:17:36 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/SubscriptionPaymentSuccessMail.php on line 12 [17-Jul-2026 08:28:57 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Mail\Mailable" not found in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php:9 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Mail/ProductOrderSendUser.php on line 9 Exceptions/error_log000064400000001510152270060650010602 0ustar00[14-Jul-2026 22:38:28 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Exceptions\Handler" not found in /home/cardxfeb/public_html/app/Exceptions/Handler.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Exceptions/Handler.php on line 12 [16-Jul-2026 10:22:30 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Exceptions\Handler" not found in /home/cardxfeb/public_html/app/Exceptions/Handler.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Exceptions/Handler.php on line 12 [18-Jul-2026 10:50:27 UTC] PHP Fatal error: Uncaught Error: Class "Illuminate\Foundation\Exceptions\Handler" not found in /home/cardxfeb/public_html/app/Exceptions/Handler.php:12 Stack trace: #0 {main} thrown in /home/cardxfeb/public_html/app/Exceptions/Handler.php on line 12 Http/Requests/ProfileUpdateRequest.php000064400000001070152272006120014116 0ustar00 */ public function rules(): array { return [ 'name' => ['string', 'max:255'], 'email' => ['email', 'max:255', Rule::unique(User::class)->ignore($this->user()->id)], ]; } } Http/Controllers/ProfileController.php000064400000002610152272006120014142 0ustar00 $request->user(), ]); } /** * Update the user's profile information. */ public function update(ProfileUpdateRequest $request): RedirectResponse { $request->user()->fill($request->validated()); if ($request->user()->isDirty('email')) { $request->user()->email_verified_at = null; } $request->user()->save(); return Redirect::route('profile.edit')->with('status', 'profile-updated'); } /** * Delete the user's account. */ public function destroy(Request $request): RedirectResponse { $request->validateWithBag('userDeletion', [ 'password' => ['required', 'current_password'], ]); $user = $request->user(); Auth::logout(); $user->delete(); $request->session()->invalidate(); $request->session()->regenerateToken(); return Redirect::to('/'); } } Http/Controllers/Auth/PasswordController.php000064400000001433152272006120015247 0ustar00validateWithBag('updatePassword', [ 'current_password' => ['required', 'current_password'], 'password' => ['required', Password::defaults(), 'confirmed'], ]); $request->user()->update([ 'password' => Hash::make($validated['password']), ]); return back()->with('status', 'password-updated'); } }