PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php $text = <<<'TEXT' public function upsert(Request $request): Repair { $this->checkPermissions('repairs:upsert'); $data = $request->validate([ 'type' => ['required', new Enum(RepairType::class)], 'is_type_set_manually' => 'required|boolean', 'car_id' => 'required|bail|uuid', 'car_number' => 'required|string|min:1|max:16', 'car_type' => 'required|string|min:1|max:64', 'passport_id' => 'required|bail|uuid', 'owner_id' => 'required|bail|uuid', 'branch_id' => 'required|bail|uuid', 'branch_code' => 'required|string|max:16', 'location' => 'nullable', 'contracts' => 'nullable', 'status' => ['nullable', new Enum(RepairStatus::class)], 'status_note' => 'nullable|string|max:128', 'date' => 'nullable|date_format:Y-m-d', ]); $location = $data['location'] ?? []; /** @var ?Repair $model */ $model = Repair::where('car_id', '=', $data['car_id']) ->whereNotIn('status', RepairStatus::CLOSING_STATUSES) ->first(); if ($model === null) { /** * Если нет активного ремонта с таким же вагоном, то проверяем, * есть ли закрытый ремонт, с таким же вагоном * и датой создания больше даты начала рейса в дислокации. * Если он есть, игноирруем данные. * * @link https://smopp.atlassian.net/browse/NDD-418 */ $locationStartAt = trim($location['start_at'] ?? ''); if ($locationStartAt !== '') { /** @var ?Repair $existingClosed */ $existingClosed = Repair::where('car_id', '=', $data['car_id']) ->whereIn('status', RepairStatus::CLOSING_STATUSES) ->where('created_at', '>', $locationStartAt) ->first(); if ($existingClosed !== null) { return $existingClosed; } } // Новый ремонт $model = new Repair(); $model->date = $data['date'] ?? Carbon::now(); $model->status = $data['status'] ?? RepairStatus::Potential; } else { // Существующий ремонт, не обновляем тип, филиал unset( $data['type'], $data['is_type_set_manually'], $data['branch_id'], $data['branch_code'], ); } $attributes = $data; unset($attributes['location'], $attributes['status']); $model->forceFill($attributes); // Выбор статуса ремонта $model->setNextStatus($location); abort_if(!$model->save(), 500, 'Unable to upsert repair'); return $model; } TEXT; $action = 'upsert'; $regex = '#public\s+function\s+' . preg_quote($action, '#') . '\s*\([^)]*\)\s*{[^{}]*\s*\$[a-zA-Z0-9_]+\s*=\s*\$[a-zA-Z0-9_]+->validate\(\[(.*?)\]\);#s'; $start = strpos($text, '$data = $request->validate(['); if ($start !== false) { $start += strlen('$data = $request->validate(['); $end = strpos($text, ']);', $start); if ($end !== false) { $validationText = substr($text, $start, $end - $start); echo "Extracted validation rules:\n" . $validationText . "\n"; } else { echo "End of validation array not found.\n"; } } else { echo "Validation array not found.\n"; }
Show:  
Copy Clear