From 159e459e7ebb82cab745d20bd84262822d6773eb Mon Sep 17 00:00:00 2001 From: Ivan Chaplygin Date: Wed, 10 Apr 2024 10:42:17 +0300 Subject: [PATCH] ref #72067 Added validation and logging Updated message text --- resources/pot/retailcrm-ru_RU.pot | 10 +++++-- src/include/class-wc-retailcrm-base.php | 15 +++++++--- src/include/class-wc-retailcrm-loyalty.php | 31 +++++++++++++++++---- src/languages/retailcrm-ru_RU.mo | Bin 19774 -> 20054 bytes 4 files changed, 44 insertions(+), 12 deletions(-) diff --git a/resources/pot/retailcrm-ru_RU.pot b/resources/pot/retailcrm-ru_RU.pot index 7d974d4..6658a64 100644 --- a/resources/pot/retailcrm-ru_RU.pot +++ b/resources/pot/retailcrm-ru_RU.pot @@ -538,8 +538,14 @@ msgstr "Акционные товары" msgid "bonus for every" msgstr "бонус за каждые" -msgid "bonuses" -msgstr "бонусов" +msgid "of the purchase amount" +msgstr "от суммы покупки" + +msgid "bonus accrual in the amount of" +msgstr "начисление бонусов в размере" msgid "discount" msgstr "скидка" + +msgid "Error while retrieving data. Try again later." +msgstr "Ошибка при получении данных. Попробуйте позже." diff --git a/src/include/class-wc-retailcrm-base.php b/src/include/class-wc-retailcrm-base.php index a605984..e535386 100644 --- a/src/include/class-wc-retailcrm-base.php +++ b/src/include/class-wc-retailcrm-base.php @@ -647,10 +647,9 @@ if (!class_exists('WC_Retailcrm_Base')) { echo json_encode(['error' => __('Error while registering in the loyalty program. Try again later.', 'retailcrm')]); } - $response = $this->loyalty->registerCustomer($userId, $phone, $site); + $isSuccessful = $this->loyalty->registerCustomer($userId, $phone, $site); - if (!$response->isSuccessful()) { - writeBaseLogs('Error while registering in the loyalty program: ' . $response->getRawResponse()); + if (!$isSuccessful) { echo json_encode(['error' => __('Error while registering in the loyalty program. Try again later.', 'retailcrm')]); } @@ -882,7 +881,15 @@ if (!class_exists('WC_Retailcrm_Base')) { wp_localize_script($jsScript, 'LoyaltyUrl', $loyaltyUrl); wp_localize_script($jsScript, 'customerId', $userId); - echo $this->loyalty->getForm($userId); + $result = $this->loyalty->getForm($userId); + + if (!isset($result)) { + echo '

'. __('Error while retrieving data. Try again later.', 'retailcrm') . '

'; + } else { + echo $result; + } + + wp_die(); } /** diff --git a/src/include/class-wc-retailcrm-loyalty.php b/src/include/class-wc-retailcrm-loyalty.php index 77e7e2c..2cb0e20 100644 --- a/src/include/class-wc-retailcrm-loyalty.php +++ b/src/include/class-wc-retailcrm-loyalty.php @@ -29,7 +29,7 @@ if (!class_exists('WC_Retailcrm_Loyalty')) : public function getForm(int $userId) { - $result = ''; + $result = null; $response = $this->apiClient->customersGet($userId); @@ -38,7 +38,14 @@ if (!class_exists('WC_Retailcrm_Loyalty')) : } $filter['customerId'] = $response['customer']['id']; - $response = $this->apiClient->getLoyaltyAccountList($filter); + + try { + $response = $this->apiClient->getLoyaltyAccountList($filter); + } catch (Throwable $exception) { + writeBaseLogs('Exception get loyalty accounts: ' . $exception->getMessage()); + + return $result; + } if (!$response->isSuccessful() || !$response->offsetExists('loyaltyAccounts')) { return $result; @@ -85,7 +92,7 @@ if (!class_exists('WC_Retailcrm_Loyalty')) : return $result; } - public function registerCustomer(int $userId, string $phone, string $site): WC_Retailcrm_Response + public function registerCustomer(int $userId, string $phone, string $site): bool { $parameters = [ 'phoneNumber' => $phone, @@ -94,7 +101,19 @@ if (!class_exists('WC_Retailcrm_Loyalty')) : ] ]; - return $this->apiClient->createLoyaltyAccount($parameters, $site); + try { + $response = $this->apiClient->createLoyaltyAccount($parameters, $site); + + if (!$response->isSuccessful()) { + writeBaseLogs('Error while registering in the loyalty program: ' . $response->getRawResponse()); + } + + return $response->isSuccessful(); + } catch (Throwable $exception) { + writeBaseLogs('Exception while registering in the loyalty program: ' . $exception->getMessage()); + + return false; + } } private function getLoyaltyInfo(array $loyaltyAccount) @@ -117,8 +136,8 @@ if (!class_exists('WC_Retailcrm_Loyalty')) : $data[] = __('Promotional products', 'retailcrm') . ': 1 ' . __('bonus for every', 'retailcrm') . ' '. $loyaltyAccount['level']['privilegeSizePromo']; break; case 'bonus_percent': - $data[] = __('Ordinary goods', 'retailcrm') . ': ' . $loyaltyAccount['level']['privilegeSize'] . '% ' . __('bonuses', 'retailcrm'); - $data[] = __('Promotional products', 'retailcrm') . ': ' . $loyaltyAccount['level']['privilegeSizePromo'] . '% ' . __('bonuses', 'retailcrm'); + $data[] = __('Ordinary goods', 'retailcrm') . ': ' . __('bonus accrual in the amount of', 'retailcrm'). ' ' . $loyaltyAccount['level']['privilegeSize'] . '% ' . __('of the purchase amount', 'retailcrm'); + $data[] = __('Promotional products', 'retailcrm') . ': ' . __('bonus accrual in the amount of', 'retailcrm'). ' ' . $loyaltyAccount['level']['privilegeSizePromo'] . '% ' . __('of the purchase amount', 'retailcrm'); break; case 'discount': $data[] = __('Ordinary goods', 'retailcrm') . ': ' . $loyaltyAccount['level']['privilegeSize'] . '% ' . __('discount', 'retailcrm'); diff --git a/src/languages/retailcrm-ru_RU.mo b/src/languages/retailcrm-ru_RU.mo index 1604a876be82022e7e248f09e557e57cb9b6d954..4abcc17cf6f55e65ec185015e734f8b84928c561 100644 GIT binary patch delta 4094 zcmX}u3tZLZ9mnwphsf0?C@>276G*1gk`zn3Xifnk5;4kop(7mR6oMYW+g1mp=H;-= zj;5KnX^zrtAo7xF;$^MZ%iTJsoZ8CEHg|EaO~G99EQ;ZW5_yL)12GB*U@{Iv3!`x=#$pNTmU+lO z^Bh0l!4*#X1{}okPE5uFm~D*D{Mu=_iFb1%{@cbpgk$ketV7-4$25Ek_2LgO4nIOY z_&g@!H7vpi8mXF69Dil2uaf~M&>d;f@E2dIMMI-3JiFgK?8xpw_@|ob#Weo_7V6i7*ayUnY*gG59Q&Cz1b2RF2c22liv48H_1F zWnwPsh8oPmP53bOU@qQ5U7y2n?!&35kv5`UybE*im#7YWi5f^G^PuM?rjUP)@DUnx zq8P{E9E`yA$gG&nNcPM=RL72^?)wOJ-zC)Ix{B(^4OGW6m^a-w4%Oiz)O{_e=Wg&( zDWKAZO5t@}hyTNHe1$!!Z5iMv65CM^{5dj9=69$yav8Pw{)@WKq}m;bLLH}~I+}&w z#W9$PzDg=e%^FmX-$1fz_9N40KEzFU9*1HhKiRkeX)-7A9=wFQFOof~45nilmZ7G0 zKQhba2EK@~77JVZ-%mvkI)VN0BI-l(CseAgqUQ1&)JX1TYiMdlqB@v^WZM*=uB$}e zVOHUT*oK<2OGr}9HPjTvaB-sc|9C1DG?ZWocA-)`Aj6o$n2PGqIn)$gMy2w))BX)I zcoRcDmB|r~<53-+hFTk?s41F-n)?bI#rw??D!Ont>c#J(dVCT!!Vu~Kf5&jViVVVh zfem5YGt5r?+AO<+yKyGx+fn<$**UQd3pqZ9Gcabj z{au)c4{*E#EASK41IO_YnUAA!7HU!YksW8YA$>82P?@@b_4xI@z>UAJSyjqJ>?kHFO5G|8F4gFzFmThK2YD`cauZh2!y@@~;;r zu%y+IOjJkmF%6fZ9<&KHk`qq*XIRSdEwu1SZh9OS;acp(=kZbY+DhDuvoZUAW47ZO zoQ%VLLAHZ=0T*H?a*avPp$%uCMjXVYcnhDxdgeo`{}gI_T}E~ED=frB_M$Q~ zADK3AnD$3eK!Ic~#&9RC8R;K!J%{h!Rr&|K$Y9hRY{?P&f;r$(>ZQs zCH{fq_b?vUFbw)=wxW*DqB`&oRL3JG+Rq<>Q5;Xh1e}Q(J}T8z)U#H{H&LnFi!5aG z1uBJUlWYr+*)a8}U9uNL_*-O9W(O;=3O`3?)l8mj?}}xpHMIw8@eKO>RHl57y^kSG z#ZvNf78m0JESPF9z7Fii@#i=MFQPi|A5@2vnb;(Bp)#=?)qz%I$C(qT4qipxZARvk z|5;S(xO+67!h7%*K7knp_I6y1>d;R70WO5kDeI36;4-BaudQ5d8@iwzYYO(286^sKnV6 zoA28dvjev{^*#6;QATL87ZZJDwNqKr*MR$oWyHjQD=xt|!#VQ|t|i!{x68Mvts)i@ zLx^?6E<#1iP@8AB4k&Nh^!{oOsk}`*Nd$-z;$0$<;2Uh%+h(UexY|HViD|@qLOb>j zVkYrJ;sK(sR8i5lEZ1r9V>r+2Cv7x#8bP#s&qBDIxi2o7&qKiQQ>WL)mWZdtD)L$xfa$n z);3smRc3x&ZDYMv#og{DZtwEI>5R>T>#BM$TGZ&RsCL!cS9f|c*A2|s9$Fpj4t4|& z2ivXSu~1X68-hK-BcYbis$f^}C}(Lp7;L9{G~^Gx+<7|ZugPPM2HQE`9cm69ajxpJ zcuWu1w9wcSJYeyU=d}k91>X;LQR@nH7p4U|ijo3f7hXv139Yn3&7l@fz8~`2FFnlR MF}l(n__WCVe~{}MO8@`> delta 3878 zcmYk;32+W)9LMp0Dj{-;R1$(Dj=V*vvxFjq5EAOBilfd@rH%wi4_-kJv`ytzv~{J3 z)KwAFj+mIKUMR(=6s4VM)zInCqQlgT_WOHxb^46oex7~y-Q8!O=h=;#4FQMW5Agn2 zKk!|nRFKAGTaejJObKN}xfWr@KfBJR4&K9-IuL0V0?8PL9Z;wALjKtxHVtu%+ddzo z*k6KiSb}ZMytd12xPZ+#a0^qhK|Qm09Ev(&CMMu=)Qz`cIDU+}a5cu@Da^vF$Up1E z!3Nk5c{Uq^YM+S7+~4L=(T&z)Z9IUw@FA>^$K3r(7|s4~?*0R8#C{k*ibW6B#onj~ z$wb{~7HT9Gp?<#(AI1F`#r^GTDte*|sG+`sNqAd7zy{n^9rR#2rlUsab?k|qmI9T zn)}7>@l~kne1IB(O1HfRTeE)^Ct?&o>VtW)jK3~;fCf5m_faDd$%N~KrkISG_$1E7 zCvXqy_gAnT-a|d1hsV;5M`A}TKy`d4>Orbd*E@=OfSU~&e;v@obcP75jp@kf+aP4L zY&@!Cd8iYMQ0JAP7S$G1N6JtgJBK>&I;z7DQ0H}F9(COe%)}fo6%FB5EXI8ph-tiw zdL8?-3C78&3(iDl#g?Gf##+>(D@XlqKdJ+V-2GFij-JQI@hY~!m?qB1czaOM34@VQ zvi=!}@cU4n60hv`R!^LE)n0*GT-B)8?4-MY4%OjbQETG{ zYKrcl=KcX{u|_cu!Q9_^QPGVDpn5zWb>b`x#5|<4R)F&Z%-%x{c?3&YYsZ5lu`{Y8 zD^O3k8a0yTsPhkEEBpa9B0VXUKVv6s{+Nc!>>1Pr54oPe4(wk> zEyhT$&YNXP$UUqFvK(wO=3^1^@b(vKDjK$C{B^;ByzGp&<=_B(1$*Ha7=pFhINyT^ zOk_V5wFt+chO!X3rftXGcnW)BBnLI3+1MS&q3*X1)sgZP#$P=-K|=!GM_nkMrLHIG zk7}QQBhZV9cozHO9bAcBxyVdBf=jU-@7h?bz)cw5-uZOzMs?s1?1BMa#_t6xU6D51 zj*GAcd3YPyk$FciYPH`*y-xL+7j>{T4#s|{5qSrhHQS5&T@5ljb_0iDEbpkEdn628K|k8igR!|*3*J@aNcv*OQTstWRy@X` zI^G!*a5UD%LX5_xsN-u<9jkIZh6BAcoTtKqwWKs>2(w)akWsf%)Z1|$&)|Ke&vvqp z*)$AcB{F+94_Uufh8n@MI2!}g%~oMP7U4hG1dIAH{@+vCOl3M2FkV`8Kj9-7lHq)q z!m%0q%~5lkfw5SO8i^gK4pgB!a1+(R#w-BtWjUCG8d?3NGL~gJ9cVVl?5P00>li}&3YNUq#2VL9RQq0Rj0aIeU4t$0SJdxAvz)&najpqj zjK7{BnT8ZhMV&YeHP;JJt9qZ?ei4J&zm8nfZXx~puPmmf*O?_^y9tNwS)$@2^T-(O zxTUpkMQG^wb?hxC_1spb!~ZU7S6>Mg-V)pHuQ@%ep#B_5B!Q%iZ=FpXOe1_BZI!PyEZSR0O^bprs!bqTxy9sR(E?K$NhXpxgmr3L$OiH% z8BSEjk@+Nnd`yCf3U9KNlfL9dq7v>f#J@sS-$dSX8vWZDZ1v^SywCNwIGfkq`hx$p z?WA5nrud4&qrJo2BhTOp(#PEwwa9B^7HL4fMDJH8^04Gmi6{EvsH`MO+|HUk;TF zhyS*t+}cL$PTK3+x`avxvYM{~ObW`Zm(sZQFw(WGm@S zdXNF+VacZQmUa>|6DLj2%gwEfimX$oG9%`j@Th5X@)C0w=H|U+{GBPx$~IuhqQlGP-<;`HIu)n}HSDZ>4}%UO4Qx3j1G3;yP$R{#J2