|
- <?php
-
- namespace App\Util\Custom\HelloTechno;
-
- use App\Exceptions\AppCommonException;
- use App\Models\ReceiptIssuingHTParkingCustomOrder;
- use App\Models\ReceiptIssuingOrder;
- use Exception;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\Http;
- use Illuminate\Support\Facades\Log;
-
- class API
- {
-
- private const RESULT_CODE = 'result_code';
- private const RESULT_CODE_SUCCESS = 'SUCCESS';
- private const FIELD_DATA = 'data';
-
-
- private const URL_CUSTOMERS = 'customers';
- private const URL_PARKINGS = 'parkings';
- private const URL_ADJUST_DATA = 'adjust-data';
- private const URL_RECEIPT_ISSUING_ORDER = 'receipt-issuing';
-
- private const CONFIG_KEY_API_HOST = "logic.custom.hellotechno.host";
-
- public static function getCustomers(?string $customerCode = null)
- {
-
- $query = [];
- if ($customerCode) {
- $query['customer_code'] = $customerCode;
- }
- return static::get(static::getCustomersUrl(), $query);
- }
-
- public static function getParkings(string $customerCode, ?string $parkingManagementCode = null)
- {
-
- $query['customer_code'] = $customerCode;
- if ($parkingManagementCode) {
- $query['parking_management_code'] = $parkingManagementCode;
- }
- return static::get(static::getParkingsUrl(), $query);
- }
-
- public static function getAdjustData(string $customerCode, string $parkingManagementCode, int $adjustSeqNo)
- {
- $query['customer_code'] = $customerCode;
- $query['parking_management_code'] = $parkingManagementCode;
- $query['adjust_seq_no'] = $adjustSeqNo;
- return static::get(static::getAdjustDataUrl(), $query);
- }
-
- public static function sendReceiptIssuingOrder(ReceiptIssuingOrder $order, ReceiptIssuingHTParkingCustomOrder $customOrder)
- {
- $param = static::makeReceiptIssuingOrderParams($order, $customOrder);
- return static::post(static::getReceiptIssuingOrderUrl(), $param);
- }
-
- private static function getHost(): string
- {
- return config(static::CONFIG_KEY_API_HOST, "http://localhost");
- }
-
- private static function getCustomersUrl()
- {
- $condition = [static::getHost(), static::URL_CUSTOMERS];
- return implode('/', $condition);
- }
-
- private static function getParkingsUrl()
- {
- // $condition = [static::getHost(), static::URL_PARKINGS];
- $condition = [static::getHost(), static::URL_PARKINGS, "9990"];
- return implode('/', $condition);
- }
-
- private static function getAdjustDataUrl()
- {
- $condition = [static::getHost(), static::URL_ADJUST_DATA];
- return implode('/', $condition);
- }
- private static function getReceiptIssuingOrderUrl()
- {
- $condition = [static::getHost(), static::URL_RECEIPT_ISSUING_ORDER];
- return implode('/', $condition);
- }
-
-
- public static function makeReceiptIssuingOrderParams(ReceiptIssuingOrder $order, ReceiptIssuingHTParkingCustomOrder $customOrder): array
- {
- $param = [];
- $param['id'] = $order->id;
- $param['customer_code'] = $customOrder->customer_code;
- $param['parking_management_code'] = $customOrder->parking_management_code;
- $param['adjust_seq_no'] = $customOrder->adjust_seq_no;
- $param['order_datetime'] = static::formatDateTimeStr($order->order_datetime);
- $param['status_done'] = $order->status_done;
- $param['status_sms_send_datetime'] = static::formatDateTimeStr($order->status_sms_send_datetime);
- $param['status_first_access_datetime'] = static::formatDateTimeStr($order->status_first_access_datetime);
- $param['status_receipt_confirm_datetime'] = static::formatDateTimeStr($order->status_receipt_confirm_datetime);
- $param['status_order_mail_datetime'] = static::formatDateTimeStr($order->status_order_mail_datetime);
- $param['status_mail_download_datetime'] = static::formatDateTimeStr($order->status_mail_download_datetime);
- $param['status_mail_post_date'] = static::formatDateStr($order->status_mail_post_date);
- $param['status_receipt_download_datetime'] = static::formatDateTimeStr($order->status_receipt_download_datetime);
- $param['status_receipt_email_send_order_datetime'] = static::formatDateTimeStr($order->status_receipt_email_send_order_datetime);
- $param['status_receipt_email_send_datetime'] = static::formatDateTimeStr($order->status_receipt_email_send_datetime);
- $param['sms_phone_number'] = $order->sms_phone_number;
- $param['sms_send_success'] = $order->sms_send_success;
- $param['receipt_no'] = $order->receipt_no;
- $param['receipt_use_date'] = $order->receipt_use_date;
- $param['receipt_shop_name'] = $order->receipt_shop_name;
- $param['receipt_issuer'] = $order->receipt_issuer;
- $param['receipt_purpose'] = $order->receipt_purpose;
- $param['receipt_name'] = $order->receipt_name;
- $param['receipt_invoice_no'] = $order->receipt_invoice_no;
- $param['receipt_amount'] = $order->receipt_amount;
- $param['email'] = $order->email;
- $param['mail_pref_code'] = $order->mail_pref_code;
- $param['mail_zip_code'] = $order->mail_zip_code;
- $param['mail_address1'] = $order->mail_address1;
- $param['mail_address2'] = $order->mail_address2;
- $param['mail_address3'] = $order->mail_address3;
- $param['mail_name'] = $order->mail_name;
- $param['updated_at'] = $order->updated_at;
- return $param;
- }
-
- private static function formatDateStr(?Carbon $date): ?string
- {
- if ($date === null) return null;
- return $date->format('Y-m-d');
- }
-
- private static function formatDateTimeStr(?Carbon $date): ?string
- {
- if ($date === null) return null;
- return $date->format('Y-m-d H:i:s');
- }
-
- private static function get(string $url, array $query = [])
- {
- try {
- $res = Http::get($url, $query);
- if ($res->failed()) {
- throw $res->throw();
- }
- $data = $res->json();
-
- if (data_get($data, static::RESULT_CODE) !== static::RESULT_CODE_SUCCESS) {
- Log::error("HT RESPONSE ERROR");
- Log::error($data);
- throw new AppCommonException('HT API 失敗');
- }
- return data_get($data, static::FIELD_DATA, []);
- } catch (Exception $e) {
- Log::error("HelloTechno API エラー URL:${url}]");
- throw $e;
- }
- }
-
- private static function post(string $url, array $param = [])
- {
- try {
- $res = Http::post($url, $param);
- if ($res->failed()) {
- throw $res->throw();
- }
- $data = $res->json();
-
- if (data_get($data, static::RESULT_CODE) !== static::RESULT_CODE_SUCCESS) {
- Log::error("HT RESPONSE ERROR");
- Log::error($data);
- throw new AppCommonException('HT API 失敗');
- }
- return data_get($data, static::FIELD_DATA, []);
- } catch (Exception $e) {
- Log::error("HelloTechno API エラー URL:${url}]");
- throw $e;
- }
- }
- }
|