divisions()->create($this->validated($request, $company)); return redirect()->route('platform.companies.show', $company)->with('status', "Division {$division->name} created."); } public function update(Request $request, Company $company, CompanyDivision $division) { abort_unless($division->company_id === $company->id, 404); $division->update($this->validated($request, $company, $division)); return redirect()->route('platform.companies.show', $company)->with('status', 'Division updated.'); } public function destroy(Company $company, CompanyDivision $division) { abort_unless($division->company_id === $company->id, 404); abort_if($division->warehouses()->exists(), 422, 'Move warehouses before deleting this division.'); $division->delete(); return redirect()->route('platform.companies.show', $company)->with('status', 'Division deleted.'); } private function validated(Request $request, Company $company, ?CompanyDivision $division = null): array { $data = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'code' => ['nullable', 'string', 'max:40', Rule::unique('company_divisions', 'code')->where('company_id', $company->id)->ignore($division?->id)], 'status' => ['required', Rule::in(['active', 'suspended', 'inactive'])], 'description' => ['nullable', 'string', 'max:2000'], ]); $data['slug'] = Str::slug($data['name']); return $data; } }