Server : Apache System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64 User : tradze ( 1001) PHP Version : 8.1.34 Disable Function : NONE Directory : /home/tradze/public_html/test.tradze.com/app_old/Modules/Pages/Repositories/ |
<?php
namespace App\Modules\Pages\Repositories;
use App\Modules\Events\Models\Zenevent;
use App\Modules\Faq\Models\Faq;
use App\Modules\Pages\Models\Page;
use App\Modules\Services\Models\ServiceDuration;
use App\Modules\Services\Models\ServiceType;
use App\Modules\Testimonials\Models\Testimonial;
use App\Modules\Vouchers\Models\VoucherOffer;
use App\Modules\Vouchers\Models\VoucherPackage;
use App\Modules\Zenjobs\Models\Zenjob;
use App\User;
use Bican\Roles\Models\Role;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
class PageRepository
{
/**
* Get page bredcrumps
* @param Page $page
*/
public function page_breadcrumps(Page $page,$results=[])
{
$page->load('children','parent');
if ($page->parent_id){
if (!count($results))
$results[] = $page->title;
$parent = $page->parent;
$results[] = $parent->title;
if ($parent->parent_id)
return $this->page_breadcrumps($parent,$results);
}
if (count($results))
krsort($results);
return $results;
}
/**
* Get posibile parents options for a page
*
* @param Page $page
* @return \Illuminate\Support\Collection
*/
public function formParents(Page $pages)
{
$pageParents = collect();
$pageParents->put('',trans('general.form_select_option'));
$excludeIds[] = $pages->id;
foreach($pages->children()->select('id')->get() as $child)
$excludeIds[] = $child->id;
$list = Page::whereNotIn('id',$excludeIds)
->lists('title','id');
foreach($list as $id=>$p)
$pageParents->put($id,$p);
return $pageParents;
}
/**
* Get page layouts
*
* @return array
*/
public function layouts()
{
$results = [];
//get page payouts
$files = Storage::disk('pages')->allfiles();
//create layouts results
foreach($files as $file):
$name = explode('.',$file);
$results[$file] = str_replace(['-','_'],' ',$name[0]);
endforeach;
//return results
return $results;
}
/**
* Get page partials
*
* @return array
*/
public function partials()
{
$results = [''=>trans('general.form_select_option')];
$results['page_children'] = trans('pages::pages.widget_page_children');
$results['page_faq'] = trans('pages::pages.widget_page_faq');
$results['page_massage_types'] = trans('pages::pages.widget_massage_types');
$results['page_therapists'] = trans('pages::pages.widget_therapists');
$results['page_testimonials'] = trans('pages::pages.widget_testimonials');
$results['page_events'] = trans('pages::pages.widget_events');
$results['page_prices'] = trans('pages::pages.widget_prices');
$results['page_offers'] = trans('pages::pages.widget_offers');
$results['page_gifts'] = trans('pages::pages.widget_gifts');
$results['page_jobs'] = trans('pages::pages.widget_jobs');
return $results;
}
/**
* Get page layout
* @param $obj
*/
public function get_page_layout($obj)
{
$chunks = explode('.',$obj->layout);
// dd($chunks);
//return layout name
return str_replace('.php','',$chunks[0]);
}
/**
* WIDGETS LIST:
*/
/**
* Fetch page children
*
*/
public function page_children(Page $page)
{
$pages = $page->children;
$data['pages'] = $pages;
return view('pages::frontend_new.partial_children',$data)->render();
}
/**
* Fetch FAQ
*
* @return array
*/
public function page_faq(Page $page)
{
$results = Faq::orderBy('order','asc')->get();
$data['results'] = $results;
return view('pages::frontend_new.partial_faq',$data)->render();
}
/**
* Fetch Events
*
* @return array
*/
public function page_events(Page $page)
{
$results = Zenevent::orderBy('order','asc')->get();
$data['results'] = $results;
return view('pages::frontend_new.partial_events',$data)->render();
}
/**
* Fetch Events
*
* @return array
*/
public function page_jobs(Page $page)
{
$results = Zenjob::first();
$data['job'] = $results;
//share data with all views
view()->share('job', $results);
//return partial view
return view('pages::frontend_new.partial_jobs',$data)->render();
}
/**
* Fetch Massage Types
*
* @return array
*/
public function page_massage_types(Page $page)
{
$results = ServiceType::where('name','!=','optional')->get();
$data['results'] = $results;
//compose response
$widgets = [
'partial' => view('pages::frontend_new.partial_treatments',$data)->render(),
];
//return widget response
return $widgets;
}
/**
* Return massage types
*
* @return mixed
*/
public function get_massage_types()
{
$results = ServiceType::where('name','!=','optional')->get();
$data['results'] = $results;
return $data;
}
public function get_promoted_offers()
{
$offers = VoucherOffer::where('is_active',1)
->where('is_promoted',1)
->get();
return $offers;
}
/**
* Fetch Therapists
*
* @return array
*/
public function page_therapists(Page $page)
{
$group = Role::where('name','therapist')->first();
$results = User::with(['servicetypes','profile'])
->whereHas('roles',function($query){
return $query->where('slug','therapist');
})
->orderBy('nr_crt')
->get();
//create data array
$data = [
'results' => $results,
];
//compose response
$widgets = [
'partial' => view('pages::frontend_new.partial_therapists',$data)->render(),
];
//return widget response
return $widgets;
}
/**
* Fetch Testimonials
*
* @return array
*/
public function page_testimonials(Page $page)
{
$results = Testimonial::where('is_active',1)
->orderBy('id','desc')
->get();
$data['results'] = $results;
return view('pages::frontend_new.partial_testimonials',$data)->render();
}
/**
* Fetch Prices
*
* @return array
*/
public function page_prices(Page $page)
{
$prices = ServiceDuration::where('is_extra',0)->orderBy('is_default','asc')->get();
foreach($prices as $price){
$results[$price->name][$price->id] = $price;
}
$data['results'] = collect($results);
$data['page'] = $page;
return view('pages::frontend_new.partial_prices',$data)->render();
}
/**
* Fetch Offers
*
* @return array
*/
public function page_offers(Page $page)
{
$offers = VoucherOffer::where('is_active',1)->get();
$data['results'] = $offers;
return view('pages::frontend_new.partial_offers',$data)->render();
}
/**
* Fetch Gifts Package
*
* @return array
*/
public function page_gifts(Page $page)
{
$obj = VoucherPackage::where('is_active',1)->get();
$data['results'] = $obj;
return view('pages::frontend_new.partial_gifts',$data)->render();
}
/**
* Compose parrtial
* @param Page $page
*/
public function compose_partial(Page $page)
{
$html = '';
$partial = $page->partial;
//return empty if partial is not set
if (!$partial) return $html;
//get html
$widgets = $this->$partial($page);
//return html
return $widgets;
}
}