public function rejectOrder(Order $order) { $allowedStatus = [OrderStatus::NewOrderStatus()->id, OrderStatus::FirstOrder()->id, OrderStatus::PaymentUploaded()->id, OrderStatus::Draft()->id]; assert(in_array($order->order_status_id, $allowedStatus), "Invalid Order to reject {$order->id} - Status {$order->orderStatus->name}"); Site::protect($order, 'Order'); User::userProtect($order->user); if ($order->order_status_id == OrderStatus::FirstOrder()->id) { Site::protect($order->user, 'User'); $this->userManager->rejectNewMember($order->user); } $order->rejected_at = new Carbon(); if (Auth::user()) { $order->rejected_by_id = Auth::user()->id; } $order->save(); $order->orderStatus()->associate(OrderStatus::Rejected()); $order->save(); if (Auth::user()) { Log::info("Order rejected:{$order->id} by:" . Auth::user()->id); User::createUserEvent($order->user, ['controller' => 'timeline', 'route' => '/order-rejected', 'target_id' => $order->id, 'parameter_id' => Auth::user()->id]); } else { Log::info("Order rejected:{$order->id} by:online"); User::createUserEvent($order->user, ['controller' => 'timeline', 'route' => '/order-auto-rejected', 'target_id' => $order->id]); } NotificationRequest::create(['target_id' => $order->id, 'route' => 'order-rejected', 'channel' => 'Sms', 'to_user_id' => $order->user->id]); return $order; }
/** * Returns the order that has status = approved. * * @param $query * * @return mixed */ public static function whereNotFulfilled($query) { $ret = $query->where(function ($q) { $q->where('order_status_id', '<>', OrderStatus::Shipped()->id)->Where('order_status_id', '<>', OrderStatus::FirstOrder()->id)->Where('order_status_id', '<>', OrderStatus::Rejected()->id)->Where('order_status_id', '<>', OrderStatus::PaymentUploaded()->id)->Where('order_status_id', '<>', OrderStatus::Cancelled()->id)->Where('order_status_id', '<>', OrderStatus::NewOrderStatus()->id)->Where('order_status_id', '<>', OrderStatus::Printed()->id); }); return $ret; }