| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- namespace App\Http\Controllers;
- use App\Helpers\DateHelper;
- use App\Http\Requests\CreateScheduleFromOrderRequest;
- use App\Http\Requests\CreateScheduleRequest;
- use App\Http\Requests\UpdateScheduleRequest;
- use App\Models\Order;
- use App\Models\Schedule;
- use Illuminate\Http\Request;
- class ScheduleController extends Controller
- {
- protected array $data = [
- 'active' => '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();
- }
- }
|