public function deliveryVirtualProduct($orderId, $productId, Request $request, $ajax = true)
{
if ($ajax && !$request->wantsJson()) {
return json_encode(['message' => trans('globals.error_not_available'), 'json' => false]);
}
$Order = Order::find($orderId);
$product = Product::find($productId);
if (!$Order || !$product) {
return json_encode(['message' => trans('globals.error_not_available'), 'id' => false]);
}
if ($Order->status != 'pending' && $Order->status != 'sent') {
return json_encode(['message' => trans('globals.error_not_available'), 'status' => false]);
}
$virtuals = VirtualProduct::where('product_id', $product->id)->where('status', 'paid')->get();
if (!count($virtuals->toArray())) {
return json_encode(['message' => trans('globals.error_not_available'), 'virtual' => false]);
}
$detail = OrderDetail::where('order_id', $Order->id)->where('product_id', $product->id)->first();
$user = User::find($Order->user_id);
foreach ($virtuals as $row) {
$virtualOrders = VirtualProductOrder::where('virtual_product_id', $row->id)->where('order_id', $Order->id)->first();
if ($virtualOrders) {
if ($virtualOrders->email) {
Mail::queue('emails.virtualsProducts', ['product' => $product, 'row' => $row, 'order' => $virtualOrders, 'user' => $user], function ($message) use($virtualOrders) {
$message->to($virtualOrders->email)->subject(trans('email.delivery_virtuals_products.subject'));
});
}
$row->status = 'Sent';
$row->save();
$virtualOrders->status = 0;
$virtualOrders->save();
}
}
$detail->status = 0;
$detail->delivery_date = DB::raw('NOW()');
$detail->save();
if ($ajax) {
$detail = OrderDetail::where('order_id', $Order->id)->where('status', 1)->first();
}
if ($ajax && !$detail) {
$Order->end_date = DB::raw('NOW()');
$Order->status = 'Sent';
$Order->save();
if (!$ajax) {
return 'Sent';
} else {
return json_encode(['message' => trans('store.delivery_successfully') . ' ' . trans('store.closedOrders'), 'success' => true, 'closed' => true]);
}
} else {
if (!$ajax) {
return 'success';
} else {
return json_encode(['message' => trans('store.delivery_successfully'), 'success' => true]);
}
}
}