| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- <?php
- namespace App\Services;
- use App\Models\Order;
- use App\Models\ProductSKU;
- use App\Models\Scopes\YearScope;
- class OrderPaymentStatusService
- {
- public function markPaidIfAllMafsHavePaymentData(Order|int|null $order): bool
- {
- if ($order === null) {
- return false;
- }
- $order = $order instanceof Order
- ? $order
- : Order::query()->withoutGlobalScope(YearScope::class)->find($order);
- if (!$order) {
- return false;
- }
- $mafsQuery = ProductSKU::query()
- ->withoutGlobalScope(YearScope::class)
- ->where('order_id', $order->id);
- if (!(clone $mafsQuery)->exists()) {
- return false;
- }
- $hasIncompleteMafs = (clone $mafsQuery)
- ->where(function ($query): void {
- $query
- ->whereNull('statement_number')
- ->orWhereRaw("TRIM(statement_number) = ''")
- ->orWhereNull('upd_number')
- ->orWhereRaw("TRIM(upd_number) = ''");
- })
- ->exists();
- if ($hasIncompleteMafs) {
- return false;
- }
- if ((int) $order->order_status_id !== Order::STATUS_PAID) {
- $order->update(['order_status_id' => Order::STATUS_PAID]);
- }
- return true;
- }
- }
|