sunchayn/received

View on GitHub
app/Http/Controllers/Controller.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    /**
     * Redirect to the specified route with the given errors while taking care of ajax requests.
     *
     * @param $route
     * @param $error
     * @param int $status
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
     */
    public function redirectWithError($route, $error, $status = 422)
    {
        if (request()->ajax()) {
            return response()->json(['error' => $error], $status);
        } else {
            return redirect()
                ->route($route)
                ->withErrors(['error' => $error])
                ->withInput();
        }
    }

    /**
     * Return a JSON error.
     *
     * @param $error
     * @param int $status
     * @return \Illuminate\Http\JsonResponse
     */
    public function jsonError($error, $status = 422)
    {
        return response()->json([
            'error' => $error,
        ], $status);
    }

    /**
     * Return JSON success message.
     *
     * @param $message
     * @param int $status
     * @return \Illuminate\Http\JsonResponse
     */
    public function jsonSuccess($message, $status = 200)
    {
        return response()->json([
            'success' => $message,
        ], $status);
    }

    /**
     * return JSON error with HTTP Unprocessable Entity Code.
     *
     * @param $error
     * @return \Illuminate\Http\JsonResponse
     */
    public function jsonUnprocessableEntity($error)
    {
        return response()->json([
            'error' => $error,
        ], 422);
    }

    /**
     * Return a json array of validation errors with HTTP Unprocessable Entity Code.
     *
     * @param $errors
     * @param array $data Extra data tp send alongside the errors
     * @return \Illuminate\Http\JsonResponse
     */
    public function validationErrors($errors, $data = [])
    {
        return response()->json([
            'errors' => $errors,
            'data' => $data,
        ], 422);
    }

    /**
     * Redirect to given route while returning proper response for AJAX requests.
     *
     * @param $route
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
     */
    protected function redirectAndConsiderAjax($route)
    {
        if (request()->ajax()) {
            return response()->json([
                'redirect' => $route,
            ], 200);
        }

        return redirect()->to($route);
    }

    /**
     * Return JSON data.
     *
     * @param $data
     * @param int $status
     * @return \Illuminate\Http\JsonResponse
     */
    public function jsonData($data, $status = 200)
    {
        return response()->json($data, $status);
    }

    /**
     * Return a forbidden HTTP response.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function forbidden()
    {
        return response()->json([
            'message' => 'Forbidden!',
        ], 403);
    }

    /**
     * Return an empty HTTP response.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function empty()
    {
        return response()->json(null, 204);
    }
}