Viewing file: PageController.php (5.04 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Models\Page; use Illuminate\Http\Request; use Illuminate\Support\Str; use App\Models\User; use App\Models\AdminActivity; class PageController extends Controller { public function index() { return view('admin.createPage.index'); } public function create() { return view('admin.createPage.create'); } public function store(Request $request) {
$request->validate([ 'name' => 'required|unique:pages,name', 'title' => 'required|unique:pages,title', 'description' => 'required', 'status'=>'required|in:published,unpublished', 'position'=>'required|in:header,footer', ]); $request['url']=Str::slug($request->title , '-'); $userfirst = User::first();
$userfirst->pages()->create($request->all());
cache()->forget('pages');
$user = auth()->user();
if ($user->type == 'staff') {
$hasPermission = $user->hasPermissionTo('manage_site_settings'); if ($hasPermission) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $user->id; $adminActivity->role_id = $user->role_id; $adminActivity->name = $user->name; $adminActivity->model = 'Page'; $adminActivity->model_id = $new_page->id; $adminActivity->action_type = 'create';
$adminActivity->details = "Created Page #{$new_page->id}";
$adminActivity->save(); } }
return back()->with('success', 'Page successfully created'); } public function show(){ $userfirst = User::first(); $pages = $userfirst->pages()->select(['id','name','title','description','status','position']); return datatables()->of($pages) ->addColumn('action',function($q){ return "<a class='btn btn-sm btn-info' href='".route('admin.page.edit',[$q->id])."'>Edit</a> ". '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this number?" data-action='.route('admin.page.destroy',[$q]).' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm">Delete</button>' ; }) ->rawColumns(['action']) ->toJson(); } public function edit(Page $page){ $data['page']=$page; return view('admin.createPage.edit',$data); }
public function update(Page $page,Request $request){
$request->validate([ 'name' => 'required|unique:pages,name,'. $page->id, 'title' => 'required|unique:pages,title,'. $page->id, 'description' => 'required', 'status'=>'required|in:published,unpublished', 'position'=>'required|in:header,footer', ]); $request['url']=Str::slug($request->title , '-');
$page->update($request->all()); cache()->forget('pages');
$user = auth()->user();
if ($user->type == 'staff') { $updatedFields = $page->getChanges(); unset($updatedFields['updated_at']);
$hasPermission = $user->hasPermissionTo('manage_site_settings');
if ($hasPermission && !empty($updatedFields)) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $user->id; $adminActivity->role_id = $user->role_id; $adminActivity->name = $user->name; $adminActivity->model = 'Page'; $adminActivity->model_id = $page->id; $adminActivity->action_type = 'update';
$fieldsChanged = collect($updatedFields) ->map(fn($value, $field) => "$field: $value") ->implode(', ');
$adminActivity->details = "Updated Page #{$page->id}, changed: $fieldsChanged"; $adminActivity->save(); } } return back()->with('success','Page successfully updated'); } public function destroy(Page $page){
$user = auth()->user();
if ($user->type == 'staff') {
$hasPermission = $user->hasPermissionTo('manage_site_settings'); if ($hasPermission) { $adminActivity = new AdminActivity(); $adminActivity->admin_id = $user->id; $adminActivity->role_id = $user->role_id; $adminActivity->name = $user->name; $adminActivity->model = 'Page'; $adminActivity->model_id = $page->id; $adminActivity->action_type = 'delete';
$adminActivity->details = "Delete Page #{$page->id}";
$adminActivity->save(); } }
$page->delete(); return back()->with('success','Page successfully deleted'); }
}
|