Viewing file: ServerController.php (8.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Http\Controllers\Customer;
use App\Http\Controllers\Controller; use App\Models\Server; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str;
class ServerController extends Controller { public function serverList(Request $request){ $page_no = $request->page??0; $no_of_data = 20; $offset = ($page_no * $no_of_data) - $no_of_data;
$gateways=getAllSmsGateway();
$allGateways=collect([]);
foreach (getAllSmsGateway() as $gateway){ $allGateways->push(['name'=>$gateway, 'type'=>'sms']); } foreach (getAllWhatsAppGateway() as $gateway){ $allGateways->push(['name'=>$gateway, 'type'=>'whatsapp']); }
if ($request->name){ $allGateways= $allGateways->where('name', 'like', '%' . $request->name . '%')->where('name', $request->name); }
$page=$request->page?$request->page:1; $totalGateway=$allGateways->count(); $pageLimit=7; $data['nextUrl']=route('customer.server.list',['page'=>$page+1]); $data['preUrl']=route('customer.server.list',['page'=>$page-1]); $data['totalPage']=ceil($totalGateway / $pageLimit);
$data['gateways']=$allGateways->forPage($page, $pageLimit);
$data['requestData']=$request->only('name','type');
return view('customer.servers.server_list', $data); }
public function getServerList( ) { $gateways = getAllSmsGateway();
$allGateways = collect([]);
foreach (getAllSmsGateway() as $gateway) { $allGateways->push(['name' => $gateway, 'type' => 'sms']); } foreach (getAllWhatsAppGateway() as $gateway) { $allGateways->push(['name' => $gateway, 'type' => 'whatsapp']); }
$allGateways = $allGateways;
return datatables()->of($allGateways) ->addColumn('name', function ($q) { $name = str_replace('_',' ',ucwords($q['name']));
return $name; }) ->addColumn('contacts', function ($q) { $type = strtoupper($q['type']);
return $type; }) ->addColumn('action', function ($q) { return '<a href="'.route('customer.server.add',[htmlentities($q['name'])]).'" class="btn btn-sm btn-primary">'.trans('customer.choose').'</a>'; }) ->rawColumns([ 'action']) ->toJson(); }
public function serverAdd($server){
$serverFields=servers_fields($server); $server_name=$server;
return view('customer.servers.server_add', compact('serverFields','server_name')); }
public function storeServer(Request $request){ DB::beginTransaction(); try{
$request->validate([ 'title' => 'required|unique:servers', ]);
// if (env("APP_DEMO")){ // return redirect()->back()->withErrors(['error' => trans('admin.app_demo_message')]); // }
$serverFields=servers_fields($request->server_name); $data=[]; foreach ($serverFields as $key=>$field){ $data[$field]=$request[$field]; }
$days=[]; if($request->offday){ foreach ($request->offday as $key=>$day){ $days[]= strtolower($day); } } $request['offdays']= json_encode($days);
$server=new Server(); $server->customer_id=auth('customer')->user()->id; $server->title=$request->title; $server->slug=Str::slug($request->title, '-'); $server->name=$request->server_name; $server->status=$request->status; $server->value=json_encode($data);
$server->start_time=$request->start_time; $server->end_time=$request->end_time; $server->offdays=$request->offdays; $server->message_limit=$request->message_limit; $server->minute_limit=$request->minute_limit; $server->send_limit=$request->send_limit; $server->save();
DB::commit(); return redirect()->route('customer.servers')->with('success', trans('customer.messages.server_added')); }catch(\Exception $ex){ DB::rollBack(); return redirect()->back()->withErrors(['error'=>$ex->getMessage()]); }
}
public function servers(){
return view('customer.servers.server'); }
public function getAllServers(){
$servers=auth('customer')->user()->servers()->orderByDesc('created_at');
return datatables()->of($servers)
->addColumn('title',function($q){ return $q->title; }) ->addColumn('name',function($q){ return str_replace('_',' ', ucwords($q->name)); })
->addColumn('status',function($q){ $status=''; if($q->status=='active') { $status = '<b class="text-success font-weight-bold">Active</b>'; }else{ $status = '<b class="text-danger font-weight-bold">Inactive</b>'; } return $status; })
->addColumn('action',function($q){ return "<a class='btn btn-sm btn-info' href='".route('customer.server.edit',[$q->slug])."'>Edit</a> ". '<button class="btn btn-sm btn-danger" data-message="Are you sure you want to delete this server?" data-action='.route('customer.server.delete',['id'=>$q->id]).' data-input={"_method":"get"} data-toggle="modal" data-target="#modal-confirm">Delete</button>' ; })
->rawColumns(['action','status'])
->toJson();
}
public function serverEdit($slug){ $server= Server::where('slug', $slug)->firstOrFail();
$data['serverFields']=servers_fields($server->name); $data['server_name']=$server->name; $data['fieldValue']=json_decode($server->value, true); $data['offdays']=$server->offdays; $data['server']=$server;
return view('customer.servers.server_edit', $data); }
public function serverUpdate($slug, Request $request){ DB::beginTransaction(); try{
// if (env("APP_DEMO")){ // return redirect()->back()->withErrors(['error' => trans('admin.app_demo_message')]); // }
$server=Server::where('slug', $slug)->firstOrFail(); $request->validate([ 'title' => 'required|unique:servers,title,' . $server->id, ]);
$serverFields=servers_fields($request->server_name); $data=[]; foreach ($serverFields as $key=>$field){ $data[$field]=$request[$field]; }
$days=[]; if($request->offday){ foreach ($request->offday as $key=>$day){ $days[]= strtolower($day); } } $request['offdays']= json_encode($days); $server->title=$request->title; $server->slug=Str::slug($request->title, '-'); $server->name=$request->server_name; $server->value=json_encode($data); $server->status=$request->status; $server->start_time=$request->start_time; $server->end_time=$request->end_time; $server->offdays=$request->offdays; $server->message_limit=$request->message_limit; $server->minute_limit=$request->minute_limit; $server->send_limit=$request->send_limit; $server->save();
DB::commit(); return redirect()->route('customer.servers')->with('success', trans('customer.messages.server_updated')); }catch(\Exception $ex){ DB::rollBack(); return redirect()->back()->withErrors(['msg'=>$ex->getMessage()]); }
}
public function delete(Request $request) { try { $server = auth('customer')->user()->servers()->where('id', $request->id)->firstOrFail();
$server->delete(); return redirect()->back()->with('success', trans('customer.messages.server_delete')); } catch (\Exception $ex) { return redirect()->back()->withErrors(['msg' => $ex->getMessage()]); } } }
|