| @@ -3,8 +3,9 @@ | ||
| 3 | 3 | namespace FluentCart\App\Services\ShortCodeParser; |
| 4 | 4 | |
| 5 | 5 | use FluentCart\Api\StoreSettings; |
| 6 | 6 | use FluentCart\App\Helpers\Helper; |
| 7 | +use FluentCart\App\Models\Order; | |
| 7 | 8 | use FluentCart\App\Services\Payments\PaymentHelper; |
| 8 | 9 | use FluentCart\App\Services\Payments\PaymentReceipt; |
| 9 | 10 | use FluentCart\App\Services\WpMetaHelper; |
| 10 | 11 | use FluentCart\Framework\Support\Arr; |
| @@ -297,8 +298,20 @@ | ||
| 297 | 298 | $parsedData[$placeholder] = Arr::get($order, 'id'); |
| 298 | 299 | } |
| 299 | 300 | } elseif ($targetItem === 'payment_link') { |
| 300 | 301 | $parsedData[$placeholder] = PaymentHelper::getCustomPaymentLink(Arr::get($order, 'uuid')); |
| 302 | + } elseif ($targetItem === 'review_url') { | |
| 303 | + // Resolved here rather than through OrderParser: this | |
| 304 | + // parser handles every order.* code itself and never | |
| 305 | + // consults that class, so a methodMap entry alone would | |
| 306 | + // render an empty string in a real email. | |
| 307 | + $reviewHash = (string) Arr::get($order, 'uuid', ''); | |
| 308 | + if ($reviewHash !== '') { | |
| 309 | + $parsedData[$placeholder] = Order::reviewUrlForHash($reviewHash); | |
| 310 | + } else { | |
| 311 | + $reviewOrder = Order::query()->find(Arr::get($order, 'id')); | |
| 312 | + $parsedData[$placeholder] = $reviewOrder instanceof Order ? $reviewOrder->getOrderReviewUrl() : ''; | |
| 313 | + } | |
| 301 | 314 | } else if ($targetItem === 'total_amount') { |
| 302 | 315 | $parsedData[$placeholder] = Helper::toDecimal(Arr::get($order, 'total_amount'), false); |
| 303 | 316 | } elseif ($targetItem === 'total_paid') { |
| 304 | 317 | $parsedData[$placeholder] = Helper::toDecimal(Arr::get($order, 'total_paid'), false); |