CampaignVarsController.php 2.57 KB
<?php

namespace App\Http\Controllers;

use App\Models\Campaigns;
use App\Models\Dictionary;
use App\Models\Tokens;
use App\Service\API\API;
use App\Service\Requests\APIRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Request;
use Inertia\Inertia;

class CampaignVarsController extends Controller
{

    protected $rule_name = 'required|alpha|regex:/[a-zA-z]/';
    protected $rule_default_value = 'required';

    function __invoke(Tokens $token, $campaign_id)
    {
        if ($token->isMain()) {
            return Redirect::back();
        }

        $campaign = Tokens::where('type', Tokens::MAIN)->get()->first()->campaigns()->with('vars')->find($campaign_id);

        if (!$campaign) {
            return Redirect::back();
        };

        switch (request()->method()) {
            case 'GET':
                return Inertia::render('CampaignVars/Edit', [
                    'token' => $token,
                    'campaign' => $campaign,
                ]);
                break;

            case 'POST':
                request()->validate([
                    'name' => $this->rule_name,
                    'default_value' => $this->rule_default_value,
                ]);

                $campaign->vars()->create(request()->only('name', 'default_value'));

                return back()->with('success', 'Campaign var added.');
                break;

            case 'PATCH':

                $campaign_var = $campaign->vars()->find(request('id'));

                if (!$campaign_var) {
                    return back();
                }

                if (
                    request()->has('name')
                    &&
                    request()->validate(['name' => $this->rule_name])
                ) {
                    $campaign_var->update(request()->only('name'));
                } elseif (request()->has('default_value')
                    &&
                    request()->validate(['name' => $this->rule_default_value])
                ) {
                    $campaign_var->update(request()->only('default_value'));
                }

                return back()->with('success', 'Campaign var updated.');
                break;

            case 'DELETE':

                $campaign_var = $campaign->vars()->find(request('id'));

                if (!$campaign_var) {
                    return back();
                }

                $campaign_var->delete();

                return back()->with('success', 'Campaign var deleted.');
                break;
        }

        return back();
    }
}