merge([ 'officers' => $this->parseOfficerText($this->input('officers', '')), 'concertEnsembles' => $this->parseEnsembleText($this->input('concertEnsembles', '')), 'beginnerEnsembles' => $this->parseEnsembleText($this->input('beginnerEnsembles', '')), 'jazzEnsembles' => $this->parseEnsembleText($this->input('jazzEnsembles', '')), ]); } /** * Get the validation rules that apply to the request. * * @return array|string> */ public function rules(): array { return [ 'concertAuditionFee' => ['required', 'string'], 'concertClinicDates' => ['required', 'string'], 'concertClinicLocation' => ['required', 'string'], 'beginnerClinicDates' => ['required', 'string'], 'beginnerClinicLocation' => ['required', 'string'], 'concertAuditionDate' => ['required', 'string'], 'concertAuditionLocation' => ['required', 'string'], 'concertEntryDeadline' => ['required', 'string'], 'beginnerEntryDeadline' => ['required', 'string'], 'concertAuditionAdditionalInformation' => ['required', 'string'], 'beginnerAuditionAdditionalInformation' => ['required', 'string'], 'officers' => ['required', 'array'], 'officers.*.office' => ['required', 'string'], 'officers.*.name' => ['required', 'string'], 'officers.*.school' => ['required', 'string'], 'concertEnsembles' => ['required', 'array'], 'concertEnsembles.*.name' => ['required', 'string'], 'concertEnsembles.*.chair' => ['required', 'string'], 'concertEnsembles.*.clinician' => ['required', 'string'], 'jazzEnsembles' => ['required', 'array'], 'jazzEnsembles.*.name' => ['required', 'string'], 'jazzEnsembles.*.chair' => ['required', 'string'], 'jazzEnsembles.*.clinician' => ['required', 'string'], 'beginnerEnsembles' => ['required', 'array'], 'beginnerEnsembles.*.name' => ['required', 'string'], 'beginnerEnsembles.*.chair' => ['required', 'string'], 'beginnerEnsembles.*.clinician' => ['required', 'string'], ]; } protected function parseOfficerText(string $text): array { $lines = explode(PHP_EOL, trim($text)); $officers = []; foreach ($lines as $line) { $parts = array_map('trim', explode(',', $line)); $officers[] = [ 'office' => $parts[0] ?? 'TBA', 'name' => $parts[1] ?? 'TBA', 'school' => $parts[2] ?? 'TBA', ]; } return $officers; } protected function parseEnsembleText(string $text): array { $lines = explode(PHP_EOL, trim($text)); $ensembles = []; foreach ($lines as $line) { $parts = array_map('trim', explode(',', $line)); $ensembles[] = [ 'name' => $parts[0] ?? 'TBA', 'chair' => $parts[1] ?? 'TBA', 'clinician' => $parts[2] ?? 'TBA', ]; } return $ensembles; } }