HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/BounceHandlerController.php
<?php

namespace App\Http\Controllers\Refactor\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\BounceHandler;

class BounceHandlerController extends Controller
{
    public function index(Request $request)
    {
        if (\Gate::denies('read', new BounceHandler())) {
            return $this->notAuthorized();
        }

        $stats = [
            'total' => BounceHandler::count(),
            'active' => BounceHandler::where('status', 'active')->count(),
        ];

        return view('refactor.pages.admin.bounce-handlers.index', compact('stats'));
    }

    public function listing(Request $request)
    {
        if (\Gate::denies('read', new BounceHandler())) {
            return $this->notAuthorized();
        }

        if (!$request->user()->admin->can('readAll', new BounceHandler())) {
            $request->merge(['admin_id' => $request->user()->admin->id]);
        }

        $query = BounceHandler::search($request);

        if ($request->status && $request->status !== 'all') {
            $query = $query->where('status', $request->status);
        }

        $items = $query->paginate($request->per_page ?? 25);

        return view('refactor.pages.admin.bounce-handlers._list', compact('items'));
    }

    public function create(Request $request)
    {
        if (\Gate::denies('create', new BounceHandler())) {
            return $this->notAuthorized();
        }

        $handler = new BounceHandler();
        $handler->status = 'active';
        $handler->port = '993';
        $handler->protocol = 'imap';
        $handler->encryption = 'ssl';

        return view('refactor.pages.admin.bounce-handlers.create', compact('handler'));
    }

    public function store(Request $request)
    {
        if (\Gate::denies('create', new BounceHandler())) {
            return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
        }

        $handler = new BounceHandler();
        $rules = $handler->rules();

        $validator = \Validator::make($request->all(), $rules);

        if ($validator->fails()) {
            return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
        }

        $handler->admin_id = $request->user()->admin->id;
        $handler->fill($request->all());
        $handler->status = 'active';
        $handler->save();

        return response()->json([
            'status' => 'success',
            'message' => trans('refactor/admin_bounce_handlers.flash.created'),
        ]);
    }

    public function edit(Request $request, $uid)
    {
        $handler = BounceHandler::findByUid($uid);

        if (!$handler) {
            return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
        }

        if (\Gate::denies('update', $handler)) {
            return $this->notAuthorized();
        }

        return view('refactor.pages.admin.bounce-handlers.edit', compact('handler'));
    }

    public function update(Request $request, $uid)
    {
        $handler = BounceHandler::findByUid($uid);

        if (!$handler) {
            return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
        }

        if (\Gate::denies('update', $handler)) {
            return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
        }

        $rules = $handler->rules();
        $validator = \Validator::make($request->all(), $rules);

        if ($validator->fails()) {
            return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
        }

        $handler->fill($request->all());
        $handler->save();

        return response()->json([
            'status' => 'success',
            'message' => trans('refactor/admin_bounce_handlers.flash.updated'),
        ]);
    }

    public function delete(Request $request)
    {
        $items = BounceHandler::whereIn('uid', is_array($request->uids) ? $request->uids : explode(',', $request->uids));

        foreach ($items->get() as $item) {
            if ($request->user()->admin->can('delete', $item)) {
                $item->delete();
            }
        }

        return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.deleted')]);
    }

    public function test(Request $request, $uid)
    {
        $handler = BounceHandler::findByUid($uid);

        if (!$handler) {
            return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
        }

        if (\Gate::denies('test', $handler)) {
            return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
        }

        try {
            $handler->test();
            return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.test_success')]);
        } catch (\Exception $e) {
            return response()->json(['status' => 'error', 'message' => $e->getMessage()], 400);
        }
    }

    public function run(Request $request, $uid)
    {
        $handler = BounceHandler::findByUid($uid);

        if (!$handler) {
            return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
        }

        if (\Gate::denies('update', $handler)) {
            return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
        }

        try {
            $handler->start();
            return response()->json(['status' => 'success', 'message' => trans('refactor/admin_bounce_handlers.flash.run_success')]);
        } catch (\Exception $e) {
            return response()->json(['status' => 'error', 'message' => $e->getMessage()], 400);
        }
    }
}