Files
wticreatorstudio/Modules/PageBuilderPlus/Http/Controllers/PageBuilderPlusController.php
T
2024-02-12 22:54:20 -05:00

305 lines
9.1 KiB
PHP

<?php
namespace Modules\PageBuilderPlus\Http\Controllers;
use App\Models\MediaManager;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\PageBuilderPlus\Entities\GJSPage;
use Modules\PageBuilderPlus\Entities\GJSTemplate;
use Modules\PageBuilderPlus\Services\AugmentationService;
use Modules\PageBuilderPlus\Services\CommonService;
class PageBuilderPlusController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index()
{
new AugmentationService();
return view('pagebuilderplus::index');
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('pagebuilderplus::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('pagebuilderplus::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('pagebuilderplus::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
public function getPermissions() {
return [
'list' => permissionCheck('pagebuilderplus_list_pages'),
'create' => permissionCheck('pagebuilderplus_create_page'),
'edit' => permissionCheck('pagebuilderplus_edit_page'),
'delete' => permissionCheck('pagebuilderplus_delete_page'),
'design' => permissionCheck('pagebuilderplus_design_page'),
'preview' => permissionCheck('pagebuilderplus_preview_page')
];
}
public function getAllPages() {
$pages = GJSPage::orderBy('title')->get();
return response()->json([
'message' => 'success',
'pages' => $pages
]);
}
public function getPage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$data = json_decode($page->data);
return response()->json([
'message' => 'success',
'page' => $page,
'data' => $data
]);
}
}
public function createPage(Request $request) {
$page = new GJSPage();
$page->title = $request->title;
$page->slug = $request->slug;
if ($request->has('data')) {
$page->data = json_encode($request->data);
}
$page->save();
return response()->json([
'status' => 200,
'message' => 'New page has been created.'
]);
}
public function updatePage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$page->title = $request->title;
$page->slug = $request->slug;
$page->update();
return response()->json([
'status' => 200,
'message' => 'Page has been successfully updated.'
]);
}
}
public function copyPage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$npage = new GJSPage();
$npage->fill($page->toArray());
$npage->save();
return response()->json([
'status' => 200,
'message' => 'Page has been duplicated.'
]);
}
}
public function deletePage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$page->delete();
return response()->json([
'status' => 200,
'message' => 'Page has been successfully deleted.'
]);
}
}
public function designPage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$pageId = $page->id;
}
return view('pagebuilderplus::designer', compact('pageId'));
}
public function savePage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$page->data = $request->data;
$page->html = $request->html;
$page->css = $request->css;
$page->js = $request->js;
$page->assets = $request->assets;
$page->pages = $request->pages;
$page->styles = $request->styles;
$page->global_css = $request->global_css;
$page->update();
return response()->json([
'status' => 200,
'message' => 'Page has been saved.'
]);
}
}
public function loadPage(Request $request) {
$page = GJSPage::find($request->id);
if ($page->data) {
$page->data = json_decode($page->data);
}
return $page;
}
public function showPage(Request $request) {
$page = GJSPage::find($request->id);
if ($page) {
$html = $page->html;
$css = $page->css;
$global_css = $page->global_css;
return view('pagebuilderplus::show', compact('html', 'css', 'global_css'));
}
}
public function displayPage(Request $request, $slug) {
$page = GJSPage::where('slug', $slug)->first();
if ($page) {
$html = $page->html;
$css = $page->css;
$global_css = $page->global_css;
return view('pagebuilderplus::show', compact('html', 'css', 'global_css'));
}
}
public function getMediaFiles($data = null){
$query = MediaManager::query();
$seller_id = getParentSellerId();
$query = $query->where('user_id', $seller_id);
if(isset($data['search']) && !empty($data['search'])){
$slugs = explode(' ', $data['search']);
if(isset($data['sort']) && $data['sort'] != 'newest'){
if($data['sort'] == 'oldest'){
$query = $query->orderBy('id','asc')->where(function($q) use($slugs){
foreach($slugs as $slug){
$q = $q->orWhere('orginal_name', 'LIKE', "%{$slug}%");
}
return $q;
});
}elseif($data['sort'] == 'smallest'){
$query = $query->orderBy('size')->where(function($q) use($slugs){
foreach($slugs as $slug){
$q = $q->orWhere('orginal_name', 'LIKE', "%{$slug}%");
}
return $q;
});
}
elseif($data['sort'] == 'bigest'){
$query = $query->orderByDesc('size')->where(function($q) use($slugs){
foreach($slugs as $slug){
$q = $q->orWhere('orginal_name', 'LIKE', "%{$slug}%");
}
return $q;
});
}
}
$query = $query->orderByDesc('id')->where(function($q) use($slugs){
foreach($slugs as $slug){
$q = $q->orWhere('orginal_name', 'LIKE', "%{$slug}%");
}
return $q;
});
}else{
if(isset($data['sort']) && $data['sort'] != 'newest'){
if($data['sort'] == 'oldest'){
$query = $query->orderBy('id');
}elseif($data['sort'] == 'smallest'){
$query = $query->orderBy('size');
}
elseif($data['sort'] == 'bigest'){
$query = $query->orderByDesc('size');
}
}
$query = $query->orderByDesc('id');
}
return $query->get();
}
public function getCreatorStudioVideos(Request $request) {
$videos = app(CommonService::class)->getCreatorStudioVideos($request);
return response()->json($videos);
}
public function getAllCategories(Request $request) {
$categories = \Modules\StudioPlus\Entities\StudioPlusCategory::query()
->orderBy('name')
->get();
return \Modules\StudioPlus\Transformers\StudioPlusCategoryResource::collection($categories);
}
}