File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/SendingCreditPlanController.php
<?php
namespace App\Http\Controllers\Refactor\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\SendingCreditPlan;
use App\Model\Currency;
class SendingCreditPlanController extends Controller
{
public function index(Request $request)
{
$stats = [
'total' => SendingCreditPlan::count(),
'visible' => SendingCreditPlan::visible()->count(),
];
return view('refactor.pages.admin.sending-credit-plans.index', compact('stats'));
}
public function listing(Request $request)
{
$query = SendingCreditPlan::query();
SendingCreditPlan::scopeSearch($query, $request->keyword);
if ($request->status && $request->status !== 'all') {
if ($request->status === 'visible') {
$query->where('visibility', true);
} elseif ($request->status === 'hidden') {
$query->where('visibility', false);
}
}
$items = $query->paginate($request->per_page ?? 15);
return view('refactor.pages.admin.sending-credit-plans._list', compact('items'));
}
public function create(Request $request)
{
$plan = SendingCreditPlan::newDefault();
$currencies = Currency::all();
return view('refactor.pages.admin.sending-credit-plans.create', compact('plan', 'currencies'));
}
public function store(Request $request)
{
$plan = SendingCreditPlan::newDefault();
$validator = $plan->saveFromParams($request->all());
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_sending_credit_plans.flash.created'),
]);
}
public function edit(Request $request, $uid)
{
$plan = SendingCreditPlan::findByUid($uid);
if (!$plan) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
$currencies = Currency::all();
return view('refactor.pages.admin.sending-credit-plans.edit', compact('plan', 'currencies'));
}
public function update(Request $request, $uid)
{
$plan = SendingCreditPlan::findByUid($uid);
if (!$plan) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
$validator = $plan->saveFromParams($request->all());
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_sending_credit_plans.flash.updated'),
]);
}
public function delete(Request $request)
{
$items = SendingCreditPlan::whereIn('uid', is_array($request->uids) ? $request->uids : explode(',', $request->uids));
foreach ($items->get() as $item) {
$item->delete();
}
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_sending_credit_plans.flash.deleted')]);
}
public function visibilityOn(Request $request, $uid)
{
$plan = SendingCreditPlan::findByUid($uid);
if (!$plan) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
$plan->visibilityOn();
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_sending_credit_plans.flash.visible')]);
}
public function visibilityOff(Request $request, $uid)
{
$plan = SendingCreditPlan::findByUid($uid);
if (!$plan) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
$plan->visibilityOff();
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_sending_credit_plans.flash.hidden')]);
}
}