Viewing file: APIProviderController.php (4.96 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\Provider; use GuzzleHttp\Client; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log;
class APIProviderController extends Controller { public function index(){ return view('admin.provider.index'); }
public function store(Request $request){ $request->validate([ 'name' => 'required|unique:providers', 'url' => 'required|unique:providers', 'api' => 'required|unique:providers', 'description' => 'max:255', 'status'=>'required|in:active,inactive', ]); auth()->user()->providers()->create($request->all());
return back()->with('success', 'API provider successfully created'); } public function getAll() { $providers = auth()->user()->providers()->select(['id', 'name','api','url','description','status', 'created_at']);
return datatables()->of($providers) ->addColumn('created_at', function ($q) { return formatDate($q->created_at); }) ->addColumn('api', function ($q) { return "<div class='show-more' style='max-width: 500px;white-space: pre-wrap'>$q->api</div>"; }) ->addColumn('url', function ($q) { return "<div class='show-more' style='max-width: 250px;white-space: pre-wrap'>$q->url</div>"; }) ->addColumn('description', function ($q) {
return "<div class='show-more' style='max-width: 250px;white-space: pre-wrap'>$q->description</div>"; }) ->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 providerEditModal" data-action='.route('admin.api.provider.update',[$q]).' data-id="'.$q->id.'" data-name="'.$q->name.'" data-api="'.$q->api.'" data-url="'.$q->url.'" data-status="'.$q->status.'" data-toggle="tooltip" data-placement="right" title="edit" data-description="'.$q->description.'"><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 API provider?" data-action='.route('admin.api.provider.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','api','url','description']) ->toJson(); }
public function update(Request $request){ $provider = auth()->user()->providers()->where('id',$request->id)->firstOrfail();
$request->validate([ 'name' => 'required|unique:providers,name,' . $provider->id, 'url' => 'required|unique:providers,url,' . $provider->id, 'api' => 'required|unique:providers,api,' . $provider->id, 'description' => 'max:255', 'status'=>'required|in:active,inactive', ]); $provider->update($request->all());
return back()->with('success', 'API provider successfully updated'); } public function destroy(Request $request){ $provider = auth()->user()->providers()->where('id',$request->id)->firstOrfail(); $provider->delete(); return back()->with('success', 'API provider successfully deleted'); }
public function getData(Request $request){
$provider = auth()->user()->providers()->where('id',$request->id)->firstOrfail(); $parameters = [ 'key' => $provider->api, 'action' => 'services', ]; try { $sending_url = $provider->url; $client = new \GuzzleHttp\Client(['verify' => false]); $response = $client->post($sending_url, [ 'form_params' => $parameters, ]);
$responseString = $response->getBody()->getContents(); return response()->json(['status'=>'success','data'=>json_decode($responseString)]); } catch (\Exception $ex) { return response()->json(['status'=>'failed','msg'=>$ex->getData()]); } }
}
|