Viewing file: ServiceController.php (6.66 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\Service; use Illuminate\Http\Request;
class ServiceController extends Controller { public function index(){ $data['categories'] = auth()->user()->categories()->where('status','active')->get(); $data['providers'] = auth()->user()->providers()->get(); $data['serviceTypes'] = auth()->user()->service_types()->get(); return view('admin.service.index',$data); } public function store(Request $request){
$request->validate([ 'name' => 'required', 'category_id' => 'required|numeric', 'mode' => 'required', 'min_order' => 'required|numeric', 'max_order' => 'required|numeric', 'rate_per' => 'required|numeric', 'description' => 'max:255', 'status'=>'required|in:active,inactive', ]);
if($request->select_all && $request->select_all=='yes'){ $provider = auth()->user()->providers()->where('id',$request->provider)->firstOrfail(); $parameters = [ 'key' => $provider->api, 'action' => 'services', ];
$sending_url = $provider->url; $client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->post($sending_url, [ 'form_params' => $parameters, ]);
$responseString = $response->getBody()->getContents(); $responseString=$responseString?json_decode($responseString, true):'';
if($responseString){ foreach($responseString as $data){ if(isset($data['rate']) && isset($data['name']) && $request->rate_percentage){
$percentage_rate=($data['rate'] * $request->rate_percentage) / 100;
$service=new Service(); $service->name=isset($data['name'])?$data['name']:''; $service->category_id=$request->category_id; $service->mode=$request->mode; $service->provider=$request->provider; $service->original_rate_per=$request->original_rate_per; $service->min_order=$request->min_order; $service->max_order=$request->max_order; $service->rate_per=isset($data['rate'])?$data['rate'] + $percentage_rate:''; $service->description=$request->description; $service->status=$request->status; $service->admin_id=auth()->user()->id; $service->save(); }
} }
return back()->with('success', 'Service successfully created');
}
auth()->user()->services()->create($request->all());
return back()->with('success', 'Service successfully created'); } public function getAll() { $service = auth()->user()->services()->with(['category','service_type'])->select(['id', 'name','category_id','mode','service_type_id','min_order','max_order','rate_per','description','status'])->orderByDesc('created_at'); return datatables()->of($service) ->addColumn('category', function (Service $q) { return isset($q->category)?ucfirst($q->category->name):''; }) ->addColumn('rate_per', function (Service $q) { return formatNumberWithCurrSymbol($q->rate_per); }) ->addColumn('service_type', function ($q) { return isset($q->service_type)?ucfirst($q->service_type->name):''; }) ->addColumn('mode', function ($q) {
return isset($q->mode) ? ucfirst($q->mode) : ''; }) ->addColumn('description', function ($q) {
return isset($q->description) ? ucfirst($q->description) : ''; }) ->addColumn('status', function ($q) { if($q->status=='active'){ $status='<span class="badge bg-green">Active</span>'; }else{ $status='<span class="badge bg-danger">Inactive</span>'; } return $status; }) ->addColumn('action',function($q){
return '<button class="btn btn-sm btn-info mr-2 serviceEditModalLong" data-id="'.$q->id.'" data-name="'.$q->name.'" data-mode="'.$q->mode.'" data-category-id="'.$q->category_id.'" data-min_order="'.$q->min_order.'" data-max_order="'.$q->max_order.'" data-rate_per="'.$q->rate_per.'" data-description="'.$q->description.'" data-status="'.$q->status.'" data-toggle="tooltip" data-placement="right" title="edit"><i class="fa fa-pencil-alt"></i></button>'. '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this category?" data-action='.route('admin.service.delete',['id'=>$q]).' data-input={"_method":"delete"} data-toggle="modal" data-target="#modal-confirm" data-toggle="tooltip" data-placement="right" title="Delete"><i class="fa fa-times-circle"></i></button>' ; }) ->rawColumns(['action','status']) ->toJson(); } public function update(Request $request){ $request->validate([ 'id' => 'required|numeric', 'name' => 'required', 'category_id' => 'required|numeric', 'mode' => 'required', 'min_order' => 'required|numeric', 'max_order' => 'required|numeric', 'rate_per' => 'required|numeric', 'description' => 'max:255', 'status'=>'required|in:active,inactive', ]); $service = auth()->user()->services()->where('id',$request->id)->firstOrfail(); $service->update($request->all());
return back()->with('success', 'Service successfully updated'); } public function destroy(Request $request){ $service_type = auth()->user()->services()->where('id',$request->id)->firstOrfail(); $service_type->delete(); return back()->with('success', 'Service successfully deleted'); } }
|