From 77626138140d7ecd05a3ad9b65f737a98a45cbc6 Mon Sep 17 00:00:00 2001 From: Babak Alizadeh Date: Sun, 13 Jul 2025 23:52:24 +0000 Subject: [PATCH] progress in inquery plugin --- .../src/Controller/AdminController.php | 10 ++- .../inquiry/PlugInquiryMainController.php | 3 +- webUI/src/i18n/fa_lang.ts | 8 +++ .../views/user/manager/settings/system.vue | 71 ++++++++++++++++++- 4 files changed, 88 insertions(+), 4 deletions(-) diff --git a/hesabixCore/src/Controller/AdminController.php b/hesabixCore/src/Controller/AdminController.php index 2306469b..d6090104 100644 --- a/hesabixCore/src/Controller/AdminController.php +++ b/hesabixCore/src/Controller/AdminController.php @@ -430,7 +430,7 @@ class AdminController extends AbstractController if (array_key_exists('rejectChequeInput', $params['plugAccpro'])) $registryMGR->update('sms', 'plugAccproRejectChequeInput', $params['plugAccpro']['rejectChequeInput']); } - + return $this->json(JsonResp::success()); } @@ -450,6 +450,10 @@ class AdminController extends AbstractController $resp['parsianGatewayAPI'] = $registryMGR->get('system', key: 'parsianGatewayAPI'); $resp['paypingKey'] = $registryMGR->get('system', key: 'paypingKey'); $resp['bitpayKey'] = $registryMGR->get('system', key: 'bitpayKey'); + $resp['inquiryPanel'] = $registryMGR->get('system', key: 'inquiryPanel'); + $resp['inquiryZohalAPIKey'] = $registryMGR->get('system', key: 'inquiryZohalAPIKey'); + $resp['enablePostalCodeToAddress'] = $registryMGR->get('system', key: 'enablePostalCodeToAddress'); + $resp['inquiryPanelEnable'] = $registryMGR->get('system', key: 'inquiryPanelEnable'); return $this->json($resp); } @@ -474,6 +478,10 @@ class AdminController extends AbstractController $registryMGR->update('system', 'parsianGatewayAPI', $params['parsianGatewayAPI']); $registryMGR->update('system', 'paypingKey', $params['paypingKey']); $registryMGR->update('system', 'bitpayKey', $params['bitpayKey']); + $registryMGR->update('system', 'inquiryPanel', $params['inquiryPanel']); + $registryMGR->update('system', 'inquiryZohalAPIKey', $params['inquiryZohalAPIKey']); + $registryMGR->update('system', 'enablePostalCodeToAddress', $params['enablePostalCodeToAddress']); + $registryMGR->update('system', 'inquiryPanelEnable', $params['inquiryPanelEnable']); $entityManager->persist($item); $entityManager->flush(); return $this->json(['result' => 1]); diff --git a/hesabixCore/src/Controller/Plugins/inquiry/PlugInquiryMainController.php b/hesabixCore/src/Controller/Plugins/inquiry/PlugInquiryMainController.php index 8dbcc154..15ebbc15 100644 --- a/hesabixCore/src/Controller/Plugins/inquiry/PlugInquiryMainController.php +++ b/hesabixCore/src/Controller/Plugins/inquiry/PlugInquiryMainController.php @@ -1,6 +1,6 @@ json([]); } } \ No newline at end of file diff --git a/webUI/src/i18n/fa_lang.ts b/webUI/src/i18n/fa_lang.ts index d12fcc03..22355e82 100644 --- a/webUI/src/i18n/fa_lang.ts +++ b/webUI/src/i18n/fa_lang.ts @@ -812,6 +812,14 @@ const fa_lang = { sms_settings_plug_accpro_pass_cheque_input: "واگذاری چک", sms_settings_reject_cheque_input: "برگشت چک", sms_settings_plug_accpro_reject_cheque_input: "برگشت چک", + inquiry_zohal_api_key: "کلید API زحل", + inquiry_zohal_api_key_des: "کلید API زحل برای دریافت اطلاعات از سامانه زحل", + inquiry_zohal_api_key_placeholder: "کلید API زحل", + inquiry_zohal_api_key_label: "کلید API زحل", + enable_postalcode_to_address: "تبدیل کد پستی به آدرس", + inquiry_panel_enable: "فعال سازی پنل سامانه استعلامات", + inquiry_panel: "پنل سامانه استعلامات", + inquiry_panel_zohal: "زحل", app_site: "آدرس اینترفیس(رابط کاربری)", keywords: "کلیدواژه‌ها با کاما (,) از هم جدا شوند", zarinpal_api: "کد API زرین‌پال", diff --git a/webUI/src/views/user/manager/settings/system.vue b/webUI/src/views/user/manager/settings/system.vue index 24a6532f..f5bca66c 100644 --- a/webUI/src/views/user/manager/settings/system.vue +++ b/webUI/src/views/user/manager/settings/system.vue @@ -29,6 +29,13 @@ export default defineComponent({ props: { subtitle: 'bitpay.ir' }, }, ], + inquiryPanel: [ + { + title: 'پنل زحل', + value: 'zohal', + props: { subtitle: 'zohal.ir' }, + }, + ], systemInfo: { keywords: '', description: '', @@ -38,6 +45,10 @@ export default defineComponent({ parsianGatewayAPI: '', paypingKey: '', bitpayKey: '', + inquiryPanel: '', + inquiryZohalAPIKey: '', + enablePostalCodeToAddress: false, + inquiryPanelEnable: false, }, loading: true, } @@ -47,12 +58,32 @@ export default defineComponent({ this.loading = true; axios.post('/api/admin/settings/system/info') .then((response) => { - this.systemInfo = response.data; + // Convert string values to proper types for switches and selects + const data = response.data; + this.systemInfo = { + ...data, + enablePostalCodeToAddress: data.enablePostalCodeToAddress === '1' || data.enablePostalCodeToAddress === true, + inquiryPanelEnable: data.inquiryPanelEnable === '1' || data.inquiryPanelEnable === true, + activeGateway: data.activeGateway || 'zarinpal', + inquiryPanel: data.inquiryPanel || 'zohal' + }; this.loading = false; }) }, submit() { this.loading = true; + + // Validation: if inquiry panel is enabled, a panel must be selected + if (this.systemInfo.inquiryPanelEnable && !this.systemInfo.inquiryPanel) { + Swal.fire({ + text: 'در صورت فعال بودن پنل سامانه استعلامات، حتماً باید یک پنل انتخاب شود.', + icon: 'error', + confirmButtonText: 'قبول', + }); + this.loading = false; + return; + } + axios.post('/api/admin/settings/system/info/save', this.systemInfo).then((resp) => { this.loading = false; if (resp.data.result == 1) { @@ -77,7 +108,7 @@ export default defineComponent({ - + @@ -106,6 +137,42 @@ export default defineComponent({ + + + + {{ $t('pages.manager.inquiry_panel') }} + + + + + + + + + + + + + + + + + + {{ $t('dialog.save') }}