. */ namespace App\Http\Controllers\Api\Admin\Account; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\AccountAction; use App\Rules\NoUppercase; class ActionController extends Controller { public function index(Request $request, int $accountId) { return $this->resolveAccount($request, $accountId)->actions; } public function get(Request $request, int $accountId, int $actionId) { return $this->resolveAccount($request, $accountId) ->actions() ->where('id', $actionId) ->firstOrFail(); } public function store(Request $request, int $accountId) { $account = $this->resolveAccount($request, $accountId); $request->validate([ 'key' => ['required', 'alpha_dash', new NoUppercase], 'code' => ['required', 'alpha_num', new NoUppercase] ]); $accountAction = new AccountAction; $accountAction->account_id = $account->id; $accountAction->key = $request->get('key'); $accountAction->code = $request->get('code'); $accountAction->save(); return $accountAction; } public function update(Request $request, int $accountId, int $actionId) { $account = $this->resolveAccount($request, $accountId); $request->validate([ 'key' => ['alpha_dash', new NoUppercase], 'code' => ['alpha_num', new NoUppercase] ]); $accountAction = $account ->actions() ->where('id', $actionId) ->firstOrFail(); $accountAction->key = $request->get('key'); $accountAction->code = $request->get('code'); $accountAction->save(); return $accountAction; } public function destroy(Request $request, int $accountId, int $actionId) { return $this->resolveAccount($request, $accountId) ->actions() ->where('id', $actionId) ->delete(); } private function resolveAccount(Request $request, int $accountId) { $account = $request->space->accounts()->findOrFail($accountId); if ($account->dtmf_protocol == null) abort(403, 'DTMF Protocol must be configured'); return $account; } }