'schedule', 'title' => 'График монтажей', 'id' => 'schedule', ]; public function index(Request $request) { $this->data['weekNumber'] = $request->get('week' ,date('W')); $weekDates = [ 'mon' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber']), 'tue' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 2), 'wed' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 3), 'thu' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 4), 'fri' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 5), 'sat' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 6), 'sun' => DateHelper::getDateOfWeek(year(), $this->data['weekNumber'], 7), ]; $this->data['weekDates'] = $weekDates; $schedules = []; foreach ($weekDates as $date) { $schedules[$date] = null; } $result = Schedule::query() ->whereBetween('installation_date', [$weekDates['mon'], $weekDates['sun']]) ->get(); foreach ($result as $schedule) { $schedules[$schedule->installation_date][] = $schedule; } $this->data['schedules'] = $schedules; return view('schedule.index', $this->data); } public function createFromOrder(CreateScheduleFromOrderRequest $request) { $validated = $request->validated(); // delete all auto schedules for this order Schedule::query() ->where('order_id', $validated['order_id']) ->where('manual', false) ->delete(); // create all records in schedule $order = Order::query() ->where('id', $validated['order_id']) ->first(); for ($iDays = 1; $iDays < $order->install_days + 1; $iDays++) { $instDate = date('Y-m-d', strtotime('+' . $iDays - 1 . ' days', strtotime($order->installation_date))); Schedule::query() ->create([ 'order_id' => $validated['order_id'], 'installation_date' => $instDate, 'manual' => false, 'district_id' => $order->district_id, 'area_id' => $order->area_id, 'object_address' => $order->object_address, 'object_type_id' => $order->object_type_id, 'mafs' => $order->productsWithCount, 'mafs_count' => $order->products_sku()->count(), 'brigadier_id' => $order->brigadier_id, 'comment' => $validated['comment'], ]); } return redirect()->route('schedule.index'); } public function update(UpdateScheduleRequest $request) { $validated = $request->validated(); Schedule::query() ->where('id', $validated['id']) ->update($validated); return redirect()->back(); } public function create(CreateScheduleRequest $request) { $validated = $request->validated(); $order = Order::query() ->where('id', $validated['order_id']) ->first(); Schedule::query() ->create([ 'order_id' => $validated['order_id'], 'installation_date' => $validated['installation_date'], 'manual' => true, 'district_id' => $order->district_id, 'area_id' => $order->area_id, 'object_address' => $order->object_address, 'object_type_id' => $order->object_type_id, 'mafs' => $order->productsWithCount, 'mafs_count' => $order->products_sku()->count(), 'brigadier_id' => $order->brigadier_id, 'comment' => $validated['comment'], ]); return redirect()->back(); } }