public function approveOrder(User $user, Order $order, $approved_at = null) { $allowedStatus = [OrderStatus::NewOrderStatus()->id, OrderStatus::FirstOrder()->id, OrderStatus::PaymentUploaded()->id, OrderStatus::Draft()->id]; assert(in_array($order->order_status_id, $allowedStatus), "Invalid Order to approve {$order->id} - Status {$order->orderStatus->name}"); Site::protect($order, 'Order'); if (Auth::user()) { User::userProtect($order->user); } if ($order->order_status_id == OrderStatus::FirstOrder()->id) { Site::protect($order->user, 'User'); $this->userManager->approveNewMember($user); } $wasDraft = $order->order_status_id == OrderStatus::Draft()->id; $order->orderStatus()->associate(OrderStatus::Approved()); if (!$approved_at) { $approved_at = new Carbon(); } $order->approved_at = $approved_at; if (Auth::user()) { $order->approved_by_id = Auth::user()->id; } $order->save(); $approveId = Auth::user() ? Auth::user()->id : 0; Log::info("Order approved:{$order->id} by:" . $approveId); if (Auth::user()) { User::createUserEvent($order->user, ['created_at' => $approved_at, 'controller' => 'timeline', 'route' => '/order-approved', 'target_id' => $order->id, 'parameter_id' => $approveId]); } else { User::createUserEvent($order->user, ['created_at' => $approved_at, 'controller' => 'timeline', 'route' => '/order-auto-approved', 'target_id' => $order->id]); } NotificationRequest::create(['target_id' => $order->id, 'route' => 'order-approved', 'channel' => 'Sms', 'to_user_id' => $order->user->id]); if ($wasDraft) { NotificationRequest::create(['target_id' => $order->id, 'route' => 'new-online-order', 'channel' => 'Sms', 'to_user_id' => $order->proofOfTransfer->receiver_user_id]); } return $order; }
public function canPrintState() { return $this->order_status_id == OrderStatus::Approved()->id; }