GrafiteInc/Builder

View on GitHub
src/Packages/Forge/app/Http/Controllers/Admin/ForgeController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace {{App\}}Http\Controllers\Admin;

use Exception;
use Illuminate\Http\Request;
use {{App\}}Http\Controllers\Controller;
use {{App\}}Services\ForgeService;

class ForgeController extends Controller
{
    public function __construct(ForgeService $forgeService)
    {
        $this->service = $forgeService;
    }

    public function index(Request $request)
    {
        $settings = $this->service->getSettings();
        $firewalls = $this->service->getFirewalls();
        $sites = $this->service->getSites();
        $jobCount = count($this->service->getJobs());
        $workerCount = count($this->service->getWorkers());

        return view('admin.forge.index')->with(compact('settings', 'firewalls', 'sites', 'jobCount', 'workerCount'));
    }

    public function scheduler()
    {
        $jobs = $this->service->getJobs();
        $site = $this->service->getSite();

        return view('admin.forge.jobs')
            ->with('site', $site)
            ->with('jobs', $jobs);
    }

    public function workers()
    {
        $workers = $this->service->getWorkers();

        return view('admin.forge.workers')
            ->with('workers', $workers);
    }

    public function createJob(Request $request)
    {
        $validatedData = $request->validate([
            'command' => 'required',
            'user' => 'required',
            'minute' => 'required',
            'hour' => 'required',
            'day' => 'required',
            'month' => 'required',
            'weekday' => 'required',
        ]);

        if ($this->service->createJob($validatedData)) {
            return back()->with('message', 'New Job Created');
        }

        return back()->withErrors(['Unable to create Job']);
    }

    public function deleteJob(Request $request)
    {
        try {
            $validatedData = $request->validate([
                'job_id' => 'required',
            ]);

            $this->service->deleteJob($validatedData['job_id']);

            return back()->with('message', 'Job was deleted');
        } catch (Exception $e) {
            return back()->withErrors([$e->getMessage()]);
        }
    }

    public function createWorker(Request $request)
    {
        $validatedData = $request->validate([
            'connection' => 'required',
            'queue' => 'required',
            'timeout' => 'required',
            'sleep' => 'required',
            'tries' => 'required',
            'processes' => 'required',
        ]);

        if ($this->service->createWorker($validatedData)) {
            return back()->with('message', 'New Worker Created');
        }

        return back()->withErrors(['Unable to create Worker']);
    }

    public function deleteWorker(Request $request)
    {
        try {
            $validatedData = $request->validate([
                'worker_id' => 'required',
            ]);

            $this->service->deleteWorker($validatedData['worker_id']);

            return back()->with('message', 'Worker was deleted');
        } catch (Exception $e) {
            return back()->withErrors([$e->getMessage()]);
        }
    }
}