RESAZIP-PC\resaz

add common daitoreponse feature

...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
8 } 8 }
9 }, 9 },
10 "require": { 10 "require": {
11 - "php": "^7.3 || ^8.0" 11 + "php": "^7.3 || ^8.0",
12 + "laravel/framework": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0"
12 } 13 }
13 } 14 }
......
This diff could not be displayed because it is too large.
1 +<?php
2 +
3 +namespace Daito\Lib;
4 +
5 +use Daito\Lib\Traits\HasDaitoResponse;
6 +use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
7 +use Illuminate\Foundation\Bus\DispatchesJobs;
8 +use Illuminate\Foundation\Validation\ValidatesRequests;
9 +use Illuminate\Routing\Controller as BaseController;
10 +
11 +/**
12 + * Base controller for Laravel projects.
13 + */
14 +class DaitoController extends BaseController
15 +{
16 + use AuthorizesRequests, DispatchesJobs, HasDaitoResponse, ValidatesRequests;
17 +}
1 +<?php
2 +
3 +namespace Daito\Lib;
4 +
5 +use RuntimeException;
6 +
7 +class DaitoResponse
8 +{
9 + /**
10 + * Build a successful response payload.
11 + */
12 + public static function success($message = 'Success', array $arrData = array(), $statusCode = 200)
13 + {
14 + return self::make(true, $message, $arrData, $statusCode);
15 + }
16 +
17 + /**
18 + * Build a failed response payload.
19 + */
20 + public static function fail($message = 'Failed', array $arrData = array(), $statusCode = 400)
21 + {
22 + return self::make(false, $message, $arrData, $statusCode);
23 + }
24 +
25 + /**
26 + * Build a response payload with a stable structure for all APIs.
27 + */
28 + public static function make($isSuccess, $message, array $arrData = array(), $statusCode = 200)
29 + {
30 + return array(
31 + 'success' => $isSuccess ? 1 : 0,
32 + 'message' => (string) $message,
33 + 'data' => $arrData,
34 + 'status_code' => (int) $statusCode,
35 + );
36 + }
37 +
38 + /**
39 + * Convert payload array to JSON.
40 + */
41 + public static function toJson(array $arrPayload)
42 + {
43 + $json = json_encode($arrPayload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
44 +
45 + if ($json === false) {
46 + throw new RuntimeException('Can not encode response payload to JSON.');
47 + }
48 +
49 + return $json;
50 + }
51 +
52 + /**
53 + * Create success payload and return JSON string.
54 + */
55 + public static function successJson($message = 'Success', array $arrData = array(), $statusCode = 200)
56 + {
57 + return self::toJson(self::success($message, $arrData, $statusCode));
58 + }
59 +
60 + /**
61 + * Create failed payload and return JSON string.
62 + */
63 + public static function failJson($message = 'Failed', array $arrData = array(), $statusCode = 400)
64 + {
65 + return self::toJson(self::fail($message, $arrData, $statusCode));
66 + }
67 +
68 + /**
69 + * Build a validation failed payload with HTTP 422 default.
70 + */
71 + public static function validateFail(array $arrErrors, $message = 'Validation failed', $statusCode = 422)
72 + {
73 + return self::fail(
74 + $message,
75 + array(
76 + 'errors' => $arrErrors,
77 + ),
78 + $statusCode
79 + );
80 + }
81 +
82 + /**
83 + * Build a validation failed payload and return JSON string.
84 + */
85 + public static function validateFailJson(array $arrErrors, $message = 'Validation failed', $statusCode = 422)
86 + {
87 + return self::toJson(self::validateFail($arrErrors, $message, $statusCode));
88 + }
89 +}
1 +<?php
2 +
3 +namespace Daito\Lib\Traits;
4 +
5 +use Daito\Lib\DaitoResponse;
6 +
7 +trait HasDaitoResponse
8 +{
9 + protected function successResponse($message = 'Success', array $arrData = array(), $statusCode = 200)
10 + {
11 + return DaitoResponse::success($message, $arrData, $statusCode);
12 + }
13 +
14 + protected function failResponse($message = 'Failed', array $arrData = array(), $statusCode = 400)
15 + {
16 + return DaitoResponse::fail($message, $arrData, $statusCode);
17 + }
18 +
19 + protected function validateFailResponse(array $arrErrors, $message = 'Validation failed', $statusCode = 422)
20 + {
21 + return DaitoResponse::validateFail($arrErrors, $message, $statusCode);
22 + }
23 +
24 + protected function successResponseJson($message = 'Success', array $arrData = array(), $statusCode = 200)
25 + {
26 + return DaitoResponse::successJson($message, $arrData, $statusCode);
27 + }
28 +
29 + protected function failResponseJson($message = 'Failed', array $arrData = array(), $statusCode = 400)
30 + {
31 + return DaitoResponse::failJson($message, $arrData, $statusCode);
32 + }
33 +
34 + protected function validateFailResponseJson(array $arrErrors, $message = 'Validation failed', $statusCode = 422)
35 + {
36 + return DaitoResponse::validateFailJson($arrErrors, $message, $statusCode);
37 + }
38 +
39 + protected function jsonSuccess($message = 'Success', array $arrData = array(), $statusCode = 200, array $arrHeaders = array())
40 + {
41 + $arrPayload = $this->successResponse($message, $arrData, $statusCode);
42 +
43 + return response()->json($arrPayload, $arrPayload['status_code'], $arrHeaders);
44 + }
45 +
46 + protected function jsonFail($message = 'Failed', array $arrData = array(), $statusCode = 400, array $arrHeaders = array())
47 + {
48 + $arrPayload = $this->failResponse($message, $arrData, $statusCode);
49 +
50 + return response()->json($arrPayload, $arrPayload['status_code'], $arrHeaders);
51 + }
52 +
53 + protected function jsonValidateFail(array $arrErrors, $message = 'Validation failed', $statusCode = 422, array $arrHeaders = array())
54 + {
55 + $arrPayload = $this->validateFailResponse($arrErrors, $message, $statusCode);
56 +
57 + return response()->json($arrPayload, $arrPayload['status_code'], $arrHeaders);
58 + }
59 +}