You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
6.0 KiB

2 years ago
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Models\WithdrawalMethod;
use App\Http\Controllers\Controller;
use Brian2694\Toastr\Facades\Toastr;
// use App\CentralLogics\Helpers;
class WithdrawalMethodController extends Controller
{
protected WithdrawalMethod $withdrawal_method;
public function __construct(WithdrawalMethod $withdrawal_method)
{
$this->withdrawal_method = $withdrawal_method;
}
public function list(Request $request)
{
$search = $request->search;
$withdrawal_methods = $this->withdrawal_method
->when($request->has('search'), function ($query) use ($request) {
$keys = explode(' ', $request['search']);
return $query->where(function ($query) use ($keys) {
foreach ($keys as $key) {
$query->where('method_name', 'LIKE', '%' . $key . '%');
}
});
})
->latest()
->paginate(config('default_pagination'));
return view('admin-views.withdraw-method.withdraw-methods-list', compact('withdrawal_methods', 'search'));
}
public function create(Request $request)
{
return view('admin-views.withdraw-method.withdraw-methods-create');
}
public function store(Request $request)
{
$request->validate([
'method_name' => 'required',
'field_type' => 'required|array',
'field_name' => 'required|array',
'placeholder_text' => 'required|array',
// 'is_required' => '',
// 'is_default' => 'nullable|in:0,1 ',
]);
$method_fields = [];
foreach ($request->field_name as $key => $field_name) {
$method_fields[] = [
'input_type' => $request->field_type[$key],
'input_name' => strtolower(str_replace(' ', "_", $request->field_name[$key])),
'placeholder' => $request->placeholder_text[$key],
'is_required' => isset($request['is_required']) && isset($request['is_required'][$key]) ? 1 : 0,
];
}
$data_count = $this->withdrawal_method->get()->count();
$withdrawal_method_object = $this->withdrawal_method->updateOrCreate(
['method_name' => $request->method_name],
[
'method_fields' => $method_fields,
'is_default' => ($request->has('is_default') && $request->is_default || $data_count == 0) == '1' ? 1 : 0,
]
);
if ($request->has('is_default') && $request->is_default == '1') {
$this->withdrawal_method->where('id', '!=', $withdrawal_method_object->id)->update(['is_default' => 0]);
}
Toastr::success('Withdrawal method added successfully');
return redirect()->route('admin.business-settings.withdraw-method.list');
}
public function edit($id)
{
$withdrawal_method = $this->withdrawal_method->find($id);
return View('admin-views.withdraw-method.withdraw-methods-edit', compact('withdrawal_method'));
}
public function update(Request $request)
{
// dd($request->all());
$request->validate([
'method_name' => 'required',
'field_type' => 'required|array',
'field_name' => 'required|array',
'placeholder_text' => 'required|array',
// 'is_required' => '',
// 'is_default' => 'nullable|in:1,0 ',
]);
$withdrawal_method = $this->withdrawal_method->find($request['id']);
if(!isset($withdrawal_method)) {
Toastr::error('Withdrawal method not found!');
return back();
}
$method_fields = [];
foreach ($request->field_name as $key=>$field_name) {
$method_fields[] = [
'input_type' => $request->field_type[$key],
'input_name' => strtolower(str_replace(' ', "_", $request->field_name[$key])),
'placeholder' => $request->placeholder_text[$key],
'is_required' => isset($request['is_required']) && isset($request['is_required'][$key]) ? 1 : 0,
];
}
$withdrawal_method->method_name = $request->method_name;
$withdrawal_method->method_fields = $method_fields;
$withdrawal_method->is_default = $request->has('is_default') && $request->is_default == '1' ? 1 : 0;
$withdrawal_method->save();
if ($request->has('is_default') && $request->is_default == '1') {
$this->withdrawal_method->where('id', '!=', $withdrawal_method->id)->update(['is_default' => 0]);
}
Toastr::success('Withdrawal method update successfully');
return redirect()->route('admin.business-settings.withdraw-method.list');
}
public function status_update(Request $request)
{
$id = $request->id;
$success = 1;
$withdrawal_method = $this->withdrawal_method->where('id', $id)->first();
$withdrawal_method->is_active = ($withdrawal_method['is_active'] == 0 || $withdrawal_method['is_active'] == null) ? 1 : 0;
$withdrawal_method->save();
return response()->json([
'success' => $success,
], 200);
}
public function default_status_update(Request $request)
{
$id = $request->id;
$withdrawal_method = $this->withdrawal_method->where('id', $id)->first();
$success = 1;
if ($withdrawal_method->is_default == 1) {
$success = 0;
}
$this->withdrawal_method->where('id', '!=', $id)->update(['is_default' => $withdrawal_method->is_default]);
$this->withdrawal_method->where('id', $id)->update(['is_default' => !$withdrawal_method->is_default]);
return response()->json([
'success' => $success,
], 200);
}
public function delete($id)
{
$this->withdrawal_method->where('id', $id)->delete();
Toastr::success('Withdraw method removed successfully!');
return back();
}
}