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/Services/Http/Controllers/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/app/Modules/Services/Http/Controllers/Admin/ServiceDurationController.php
<?php
namespace App\Modules\Services\Http\Controllers\Admin;

use App\Http\Controllers\AdminController;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Modules\Services\Http\Requests\ServiceDurationRequest;
use App\Modules\Services\Models\ServiceDuration;
use App\Modules\Services\Models\ServiceDurationCategory;
use App\Modules\Users\Models\UserServiceDuration;
use Illuminate\Http\Request;
use Laracasts\Flash\Flash;
use Yajra\Datatables\Datatables;
use App\Modules\Services\Models\ServiceType;
use DB;

class ServiceDurationController extends AdminController
{

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $this->data['page_title'] = trans('services::duration.page_title');
        return view('services::admin.duration_index', $this->data);
    }

    /**
     * Show a list of all companies
     *
     * @return mixed
     */
    public function data(Request $request)
    {
        //create object contact
        $obj = $this->getData($request);
        // dd($obj);
        //create array with contacts permissions access
        $this->data['can'] = [
            'edit'   =>  $this->data['user']->roles->pluck('slug')[0] == 'developer',
            'delete' =>  $this->data['user']->roles->pluck('slug')[0] == 'developer',
        ];
        
        //return datatables data
        return Datatables::of($obj)
             ->editColumn('parent_category', function($o){
                return ($o->subcategory && $o->subcategory->parentcategory)?$o->subcategory->parentcategory->name:'';
            })
            ->editColumn('category', function($o){
                return ($o->subcategory)?$o->subcategory->name:'';
            })
            ->editColumn('name',function($o){
                if ($o->is_extra)
                    return $this->text_extra($o->name);
                elseif ($o->is_default)
                    return $this->text_default($o->name);

                return $o->name;
            })
            ->editColumn('price', function($o){
                return $this->text_right($o->price);
            })
            ->editColumn('commision_co', function($o){
                return $this->text_right($o->commision_co);
            })
            ->editColumn('commision_th', function($o){
                return $this->text_right($o->commision_th);
            })
            ->editColumn('duration', function($o){
//                return $o->duration;
                $minutes = $o->duration.' '.trans_choice('services::duration.minute_text',$o->duration);
                return $minutes;
                
                $hours = floor($duration/60);
                $minutes = $duration%60;
                $format_in_hours = $hours.' '.trans_choice('services::duration.hour_text',$hours).' '.(($minutes)?$minutes.' '.trans_choice('services::duration.minute_text',$minutes):'');
                return $format_in_hours;
            })
            ->addColumn('actions', function ($o) {
                $this->data['o']=$o;
                return view('services::admin.duration_list_actions',$this->data)->render();
            })
            ->rawColumns([
                'price',
                'commision_co',
                'commision_th',
                'actions'
            ])
            ->removeColumn('id')
            ->removeColumn('updated_at')
            ->make(true);
    }

    /**
     * Get object entries
     * @param Request $request
     */
    protected function getData(Request $request)
    {
        $obj = ServiceDuration::with(['subcategory' => function($q) {
            $query = ServiceType::with('parentcategory');
        }])->get();

        //return object
        return $obj;
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {
        // dd("here");
        $this->data['page_title'] = trans('services::duration.page_title');
        $this->data['form']['categories'] = ServiceDurationCategory::orderBy('order','asc')->lists('name','id')->put(0,trans('general.form_select_option'));
        $category = ServiceType::all()->whereIn('is_massage',[NULL, 0])->pluck('name', 'id');
        // dd($category);
        $category[0] = '--- Select Category ---';
        $this->data['parent_category'] = $category;
        //show page
        return view('services::admin.duration_create_edit', $this->data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store(ServiceDurationRequest $request)
    {   
        if($request->is_massage_duration == 1){
            $sub_category_id = 0;
        } else {
            $sub_category_id = $request->sub_category_id;
        }
        
        $data =  [
            "category_id" => 1,
            "sub_category_id" => $sub_category_id,
            "name" => $request->name,
            "duration" => $request->duration,
            "price" => $request->price,
            "commision_co" => $request->commision_co,
            "commision_th" => $request->commision_th,
            "is_massage_duration" => $request->is_massage_duration
        ];

        //save new service type
        // $obj = ServiceDuration::create($request->all());
        $obj = ServiceDuration::create($data);

        //redirect
        if ($request->save) {
            return redirect(route('admin.services.duration.edit', ['id' => $obj->id]));
        } elseif ($request->save_exit) {
            return redirect(route('admin.services.duration.index'));
        }
    }

    /**
     * Edit Service Type
     *
     * @param $label
     * @return \BladeView|bool|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
     */
    public function edit($obj)
    {

        $data = ServiceDuration::find($obj);
        $this->data['page_title'] = trans('services::duration.page_title');
        $this->data['form']['categories'] = ServiceDurationCategory::orderBy('order','asc')->pluck('name','id')->put(0,trans('general.form_select_option'));
        $this->data['obj'] = $data;
        // $category = ServiceType::all()->whereIn('is_massage',[NULL])->pluck('name', 'id');
        $category = ServiceType::all()->pluck('name', 'id');
        $category[0] = '--- Select Category ---';
        $this->data['parent_category'] = $category;

        //show page
        return view('services::admin.duration_create_edit', $this->data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int $id
     * @return Response
     */
    public function update(ServiceDurationRequest $request, $obj)
    {

        $data = ServiceDuration::find($obj);
        //fields to be updated
        $fillable = $data->getFillable();

        $fields = array();
        foreach ($request->all() as $field => $f) {
            if (in_array($field, $fillable)) {
                $fields[$field] = $f;
            }
        } //end foreach
        if($request->is_massage_duration == 1){
            $fields['sub_category_id'] = 0;
        }
        $fields['is_default'] = (int)$request->is_default;
        $fields['is_extra'] = (int)$request->is_extra;
        $fields['is_massage_duration'] = (int)$request->is_massage_duration;
        

        //update label
        ServiceDuration::where('id', $data->id)->update($fields);

        //redirect
        if ($request->save) {
            return redirect(route('admin.services.duration.edit', ['duration' => $data->id]));
        } elseif ($request->save_exit) {
            return redirect(route('admin.services.duration.index'));
        }
    }

    /**
     * Delete page
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function delete($obj)
    {
        $this->data['obj'] = $obj;

        return view('services::admin.duration_delete', $this->data);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($obj)
    {
        //set object name
        $obj_name = $obj->name;

        UserServiceDuration::where('services_duration_id',$obj->id)->delete();

        //delete contact
        $obj->delete();

        //set success message
        Flash::info(trans('services::duration.message_confirm_delete', ['name' => $obj->name]));

        //redirect to contacts list
        return redirect(route('admin.services.duration.index'));
    }

    public function get_treatment_category($id) {
        $sub_category = ServiceType::where('');
    }

    /**
     * Format text right
     * @param $string
     * @param bool $number
     * @return string
     */
    protected function text_right($string,$number=true)
    {
        $value = $string;
        if ($number)
            $value = number_format($string,2,'.',',')." &pound;";


        return "<div class='text-right'>{$value}</div>";
    }

    /**
     * Format text with badge
     * @param $string
     * @return string
     */
    protected function text_extra($string)
    {
        return "{$string} <span class='badge badge-warning badge-roundless'>".trans('services::duration.text_extra_session')."</span>";
    }
    protected function text_default($string)
    {
        return "{$string} <span class='badge badge-primary badge-roundless'>".trans('services::duration.text_default_session')."</span>";
    }



}

ZeroDay Forums Mini