data); auth()->user()->carts()->with(['product' => [ 'media', 'channels', ]])->get()->each(function ($cart) use ($order) { DB::table('order_items')->insert([ 'product_name' => $cart->product->name, 'product_id' => $cart->product_id, 'order_id' => $order->id, 'channel_id' => $cart->product->channels->first()?->id ?? tmpostChannel()->id, 'quantity' => $cart->product_quantity, 'unit_price_amount' => $cart->product->price_amount, 'unit_cost_amount' => $cart->product->cost_amount, 'created_at' => now(), 'updated_at' => now(), ]); $cart->product->update([ 'stock' => $cart->product->stock - $cart->product_quantity, ]); }); auth()->user()->carts()->delete(); OrderCreated::dispatch($order); return $order; } /** * Available times */ public static function availableTimes(): array { $today = now()->format('d.m.Y'); $tomorrow = now()->addHour(24)->format('d.m.Y'); $times = [ 'today' => [], 'tomorrow' => [], ]; if (strtotime('now') <= strtotime('09:00')) { $times['today'][] = [ 'date' => $today, 'hour' => OrderShipping::MORNING, ]; } if (strtotime('now') <= strtotime('13:00')) { $times['today'][] = [ 'date' => $today, 'hour' => OrderShipping::EVENING, ]; } $times['tomorrow'] = [ [ 'date' => $tomorrow, 'hour' => OrderShipping::MORNING, ], [ 'date' => $tomorrow, 'hour' => OrderShipping::EVENING, ], ]; return [ 'dates' => [ 'today' => $today, 'tomorrow' => $tomorrow, ], 'hours' => $times, ]; } }