Sh3ll
OdayForums


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/app/Modules/Testimonials/Http/Controllers/Admin/ReviewController.php
<?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'));
    }
}

ZeroDay Forums Mini