Files
click-erp/app/Http/Controllers/ClickAppsController.php
2023-02-22 07:48:50 +00:00

167 lines
3.9 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers;
use App\Models;
use Illuminate\Http\Request;
use Session;
use DB;
class ClickAppsController extends Controller
{
public function index(Request $request)
{
$click_apps = DB::table('apps');
$columns = [
'app_name' => 'App Name',
'operator' => 'Operator',
'country' => 'Counry',
'status' => 'Status'
];
if (!empty($request->filter) && !empty($request->keyword)) {
$click_apps = $this->resolveAppQuery($click_apps, $request);
}
$click_apps = $click_apps->orderBy('apps.created_at', 'DESC')->paginate(20);
$data = [
'page_title' => 'Click Apps',
'click_apps' => $click_apps,
'columns' => $columns
];
return view('click_apps.index', $data);
}
public function create()
{
$data = $this->crudData();
return view('click_apps.create', $data);
}
public function store(Request $request)
{
$request->validate($this->valdtePrams());
DB::transaction(function () use ($request) {
Models\ClickApps::create($request->only($this->whiteListCrudParams()));
});
Session::flash('success_message', 'App record created successfully');
return redirect(url('clickapps/create'));
}
public function edit($id)
{
$clickapp = Models\ClickApps::find($id);
if (!$clickapp) {
Session::flash('error_message', "Record with ID: {$id} not found");
return redirect(url('clickapps'));
}
$data = $this->crudData();
return view('click_apps.edit', array_merge($data, [
'clickapp' => $clickapp
]));
}
public function update(Request $request, $id)
{
$clickapp = Models\ClickApps::find($id);
if (!$clickapp) {
Session::flash('error_message', "Record with ID: {$id} not found");
return redirect(url('clickapps'));
}
$request->validate($this->valdtePrams());
DB::transaction(function () use ($request, $clickapp) {
$clickapp->update($request->only($this->whiteListCrudParams()));
});
Session::flash('success_message', 'App record updated successfully');
return redirect(url('clickapps'));
}
public function destroy($id)
{
Models\ClickApps::destroy($id);
if (request()->ajax()) {
$res = ['code' => 1];
return response()->json($res);
}
Session::flash('success_message', 'App successfully deleted!');
return redirect(url('clickapps'));
}
private function crudData()
{
$click_apps = Models\ClickApps::get();
$countries = Models\Country::pluck('en_short_name', 'alpha_2_code');
$net_ops = Models\NetworkOps::pluck('name', 'name');
$toll_types = ['YES' => 'YES', 'NO' => 'NO'];
$status_types = ['ACTIVE' => 'ACTIVE', 'PENDING' => 'PENDING', 'CANCELLED' => 'CANCELLED', 'FINISHED' => 'FINISHED'];
return [
'page_title' => 'Click Apps',
'click_apps' => $click_apps,
'countries' => $countries,
'net_ops' => $net_ops,
'toll_types' => $toll_types,
'status_types' => $status_types
];
}
private function valdtePrams()
{
return [
'app_name' => 'required',
'app_type' => 'required',
'client' => 'required',
'code' => 'required',
'country' => 'required',
'operator' => 'required',
'tollfree' => 'required',
'app_path' => 'required',
'launch_date' => 'required',
'status' => 'required',
'other_info' => 'required',
];
}
private function whiteListCrudParams()
{
return [
'app_name',
'app_type',
'client',
'code',
'country',
'operator',
'tollfree',
'app_path',
'launch_date',
'status',
'other_info',
];
}
function resolveAppQuery($clients, $request)
{
switch ($request->filter) {
case 'app_name':
return $clients
->where('app_name', 'like', "%$request->keyword%");
break;
case 'operator':
return $clients
->where('operator', 'like', "%$request->keyword%");
break;
case 'country':
return $clients
->where('country', 'like', "%$request->keyword%");
break;
case 'status':
return $clients
->where('status', 'like', "%$request->keyword%");
break;
default:
# code...
break;
}
}
}