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/app/Modules/Testimonials/Http/Controllers/Admin/ |
<?php
namespace App\Modules\Testimonials\Http\Controllers\Admin;
use App\Http\Controllers\AdminController;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Modules\Testimonials\Http\Requests\TestimonialRequest;
use App\Modules\Testimonials\Models\Testimonial;
use App\Modules\Testimonials\Models\SalonReviews;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Laracasts\Flash\Flash;
use Yajra\Datatables\Datatables;
use App\User;
class ReviewController extends AdminController
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$this->data['page_title'] = 'Reviews';
return view('testimonials::admin.reviews_index', $this->data);
}
/**
* Show a list of all companies
*
* @return mixed
*/
public function data(Request $request)
{
//create object contact
$obj = $this->getData($request);
//create array with permissions access
$this->data['can'] = [
'edit' => $this->data['user']->roles->pluck('slug')[0] == 'developer' || $this->data['user']->roles->pluck('slug')[0] == 'salon',
'delete' => $this->data['user']->roles->pluck('slug')[0] == 'developer' || $this->data['user']->roles->pluck('slug')[0] == 'salon',
];
//return datatables data
return Datatables::of($obj)
->editColumn('review', function ($o) {
return html_entity_decode($o->review); // ✅ Show HTML properly
})
->editColumn('user', function ($o) {
return !empty($o->user) ? Str::limit($o->user->name, 100) : $o->user_name;
})
->editColumn('therapist', function ($o) {
return !empty($o->therapist) ? Str::limit($o->therapist->name, 100) : $o->therapist_name;
})
// ->editColumn('salon', function ($o) {
// return !empty($o->salon) ? Str::limit($o->salon->name, 100) : '';
// })
->editColumn('is_approved', function ($o) {
return trans_choice('testimonials::testimonials.text_is_active', $o->is_approved);
})
->addColumn('actions', function ($o) {
$this->data['o'] = $o;
return view('testimonials::admin.reviews_list_actions', $this->data)->render();
})
->rawColumns([
'actions'
])
->escapeColumns([])
->removeColumn('id')
->removeColumn('updated_at')
->make(true);
}
/**
* Get object entries
* @param Request $request
*/
protected function getData(Request $request)
{
if (Auth::user()->hasRole('salon')) {
$obj = SalonReviews::where('salon_id', Auth::user()->id)->latest()->get();
} else {
$obj = SalonReviews::query()->latest();
}
//return object
return $obj;
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$this->data['page_title'] = 'Reviews';
$this->data['therapists'] = [];
if (Auth::user()->hasRole('salon')) {
$therapists = User::where('salon_id', Auth::user()->id)->pluck('name', 'id')->put(0, 'select service provider');
$this->data['therapists'] = $therapists;
} else {
$therapists = User::whereHas('roles', function ($q) {
$q->where('slug', 'therapist');
})->pluck('name', 'id');
$this->data['therapists'] = $therapists;
}
//show page
return view('testimonials::admin.reviews_create_edit', $this->data);
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store(Request $request)
{
// dd($request->all());
if (Auth::check()) {
if (Auth::user()->hasRole('salon')) {
$data = [
'user_name' => $request->user_name,
'therapist_id' => $request->therapist_id,
'salon_rating' => $request->salon_rating,
'atmosphere' => $request->atmosphere,
'sanitation' => $request->sanitation,
'employees' => $request->employees,
'satisfaction' => $request->satisfaction,
'review' => $request->review,
'is_approved' => (int)$request->is_approved,
'salon_id' => Auth::user()->id
];
} else {
$data = [
'user_name' => $request->user_name,
'therapist_id' => $request->therapist_id,
'salon_rating' => $request->salon_rating,
'atmosphere' => $request->atmosphere,
'sanitation' => $request->sanitation,
'employees' => $request->employees,
'satisfaction' => $request->satisfaction,
'review' => $request->review,
'is_approved' => (int)$request->is_approved,
];
}
}
//save new service type
$obj = SalonReviews::create($data);
//redirect
if ($request->action == 'save_exit') {
return redirect(route('admin.reviews.edit', ['id' => $obj->id]));
} elseif ($request->action == 'save') {
return redirect(route('admin.reviews.index'));
}
}
/**
* Edit Service Type
*
* @param $label
* @return \BladeView|bool|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function edit($id)
{
$this->data['page_title'] = 'Reviews';
$salonreview = SalonReviews::where('id', $id)->first();
$this->data['obj'] = $salonreview;
$this->data['therapists'] = [];
if (Auth::user()->hasRole('salon')) {
$therapists = User::where('salon_id', Auth::user()->id)->pluck('name', 'id')->put(0, 'select therapist');
$this->data['therapists'] = $therapists;
} else {
$therapists = User::whereHas('roles', function ($q) {
$q->where('slug', 'therapist');
})->pluck('name', 'id');
$this->data['therapists'] = $therapists;
}
//show page
return view('testimonials::admin.reviews_create_edit', $this->data);
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update(Request $request, SalonReviews $salonreview, $id)
{
// Get model fillable fields correctly
$fillable = $salonreview->getFillable();
$fields = [];
foreach ($request->all() as $field => $value) {
if (in_array($field, $fillable)) {
$fields[$field] = $value;
}
}
$fields['is_approved'] = (int) $request->is_approved;
// Update record
SalonReviews::where('id', $id)->update($fields);
// Redirect
if ($request->action = 'save') {
return redirect(route('admin.reviews.edit', ['review' => $id]));
} elseif ($request->action = 'save_exit') {
return redirect(route('admin.reviews.index'));
}
}
/**
* Delete page
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
$this->data['obj'] = SalonReviews::where('id', $id)->first();
return view('testimonials::admin.reviews_delete', $this->data);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$salonreview = SalonReviews::where('id', $id)->first();
//delete contact
$salonreview->delete();
//set success message
Flash::info("The user review has been successfully deleted");
//redirect to contacts list
return redirect(route('admin.reviews.index'));
}
}