Edit File: SettlementService.php
<?php namespace App\Services; use App\Enums\NotificationTypeEnum; use App\Models\Settlement; use App\Notifications\OrderNotification; use App\Services\Payment\PayProcess; use App\Traits\ReportTrait; use Illuminate\Support\Facades\Notification; class SettlementService extends BaseService { public function __construct() { parent::__construct(Settlement::class); } public function changeSettlement($request) { $settlement = $this->model::find($request['id']); $authGuardName = strtolower(class_basename($settlement->transactionable)); $user = get_class($settlement->transactionable)::with('orderTransactions')->find($settlement->transactionable_id); $ordersIds = $settlement->settlementItems->pluck('order_id'); if ($request['status'] == 'accepted') { $user->orderTransactions()->whereHas('order', function ($query) use ($ordersIds) { $query->whereIn('id', $ordersIds); })->where([ ['status', 'pending'], ['type', 'credit'], ])->update(['status' => 'accepted']); if ($settlement->indebtedness > 0) { $user->orderTransactions()->whereHas('order', function ($query) use ($ordersIds) { $query->whereIn('id', $ordersIds); })->where([ ['status', 'pending'], ['type', 'debit'], ])->update(['status' => 'accepted']); } (new PayProcess())->cutAmountFromAdminForSettlement($settlement->amount); $settlement->update( [ 'status' => $request['status'], 'image' => $request['image'], ] ); Notification::send($settlement->transactionable, new OrderNotification(order: $settlement, type: NotificationTypeEnum::ACCEPT_ORDER_SETTLEMENT->value)); } else { $user->orderTransactions()->whereHas('order', function ($query) use ($ordersIds) { $query->whereIn('id', $ordersIds); })->where([ ['status', 'pending'], ['type', 'credit'], ])->update(['status' => 'new']); if ($settlement->indebtedness > 0) { $user->orderTransactions()->whereHas('order', function ($query) use ($ordersIds) { $query->whereIn('id', $ordersIds); })->where([ ['status', 'pending'], ['type', 'debit'], ])->update(['status' => 'new']); } $settlement->update([ 'status' => $request['status'], 'cancel_reason_id' => $request['cancel_reason_id'], ]); Notification::send($settlement->transactionable, new OrderNotification(order: $settlement, type: NotificationTypeEnum::REJECT_ORDER_SETTLEMENT->value)); } ReportTrait::addToLog(' بتغير حاله طلب التسوية'); return true; } }
Back to File Manager