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/ai.naniguide.com/app/Http/Controllers/Admin/WebhookController.php
<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Model\Webhook;
use App\Model\HttpRequest;
use App\Model\HttpConfig;

class WebhookController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        return view('admin.webhooks.index');
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function list(Request $request)
    {
        $webhooks = Webhook::search($request->keyword)
            ->backend()
            ->orderBy($request->sort_order, $request->sort_direction ? $request->sort_direction : 'asc')
            ->paginate($request->per_page);

        return view('admin.webhooks.list', [
            'webhooks' => $webhooks,
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        //
        $webhook = Webhook::newDefault();

        return view('admin.webhooks.create', [
            'webhook' => $webhook,
        ]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
        $webhook = Webhook::newDefault();

        // try to save
        list($result, $errors) = $webhook->saveWebhook(
            $name = $request->webhook['name'],
            $event = $request->webhook['event'],
        );

        // redirect if fails
        if (!$result) {
            return response()->view('admin.webhooks.create', [
                'webhook' => $webhook,
                'errors' => $errors,
            ], 400);
        }

        return redirect()->action('Admin\WebhookController@setup', $webhook->uid)
            ->with('alert-success', trans('messages.webhook.added.success', [
                'name' => $webhook->name,
            ]));
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function setup(Request $request, $id)
    {
        //
        $webhook = Webhook::findByUid($id);

        if ($request->isMethod('post')) {
            // save http config
            $webhook->saveHttpConfig($request->webhook);

            return response()->json([
                'status' => 'success',
                'message' => trans('messages.webhook.updated.success', [
                    'name' => $webhook->name,
                ]),
                'redirect' => action('Admin\WebhookController@index'),
            ]);
        }

        return view('admin.webhooks.setup', [
            'webhook' => $webhook,
        ]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int                      $id
     *
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
        $webhook = Webhook::findByUid($id);

        // try to save
        list($result, $errors) = $webhook->saveWebhook(
            $name = $request->webhook['name'],
            $event = $request->webhook['event'],
        );

        // redirect if fails
        if (!$result) {
            return response()->view('admin.webhooks.create', [
                'webhook' => $webhook,
                'errors' => $errors,
            ], 400);
        }

        return redirect()->action('Admin\WebhookController@index')
            ->with('alert-success', trans('messages.webhook.updated.success', [
                'name' => $webhook->name,
            ]));
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function delete(Request $request)
    {
        $webhooks = Webhook::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($webhooks->get() as $webhook) {
            $webhook->delete();
        }

        // Redirect to my lists page
        echo trans('messages.webhooks.deleted');
    }

    /**
     * Disable sending server.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function disable(Request $request)
    {
        $webhooks = Webhook::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($webhooks->get() as $webhook) {
            $webhook->disable();
        }

        // success
        echo trans('messages.webhooks.disabled');
    }

    /**
     * Disable sending server.
     *
     * @param int $id
     *
     * @return \Illuminate\Http\Response
     */
    public function enable(Request $request)
    {
        $webhooks = Webhook::whereIn(
            'uid',
            is_array($request->uids) ? $request->uids : explode(',', $request->uids)
        );

        foreach ($webhooks->get() as $webhook) {
            $webhook->enable();
        }

        // success
        echo trans('messages.webhooks.enabled');
    }

    public function test(Request $request, $id)
    {
        $webhook = Webhook::findByUid($id);

        if ($request->isMethod('post')) {
            $httpRequest = $webhook->test($request->webhook);

            return view('admin.webhooks.testResult', [
                'webhook' => $webhook,
                'httpRequestLog' => $httpRequest->httpRequestLogs()->latest()->first(),
            ]);
        }

        return view('admin.webhooks.test', [
            'webhook' => $webhook,
        ]);
    }
}