$this->id, // 'his_dokter_id' => $this->practitionerRoles->meta, 'name' => $this->person->name, 'person_id' => $this->person->id, 'phone' => $this->person->phone ?? null, 'email' => $this->person->email ?? null, 'birth_date' => $this->person->birth_date ?? null, 'birth_place' => $this->person->birth_place ?? null, 'gender' => $this->person->gender == "L" || $this->person->gender == "male" ? 'male' : 'female', 'address' => $this->person->currentAddress->text ?? null, 'organizations' => $this->practitionerRoles->unique('organization_id')->map(function ($practitionerRole) { return [ 'organization_id' => $practitionerRole->organization->id, 'organization_name' => $practitionerRole->organization->name, ]; })->values(), "specialties" => $this->practitionerRoles->unique('speciality_id')->map(function ($practitionerRole) { return [ 'specialty_id' => $practitionerRole->speciality->id, 'specialty_name' => $practitionerRole->speciality->name, ]; }), // "departemen" => $this->practitionerRoles->map(function ($practitionerRole) { // return [ // 'departemen_id' => $practitionerRole->meta->DepartemenID ?? null, // ]; // }) ?? null, 'education' => $this->meta->education ?? null, 'experience' => $this->meta->work_experience ?? null, 'award' => $this->meta->award ?? null, 'keilmuan' => $this->meta->Keilmuan ?? null, 'tipe_dokter' => $this->meta->tipeDokter ?? null, ]; $grouped = $this->collection($this->practitionerRoles)->groupBy('organization_id'); $grouped->transform(function ($items, $key) { return [ 'organization_id' => $key, 'specialities' => $items->map(function ($item) { return [ 'speciality_id' => $item->speciality->id, ]; }), 'period_start' => $items->pluck('period_start')->first(), 'period_end' => $items->pluck('period_end')->first(), ]; }); $doctor['practices'] = $grouped->toArray(); return $doctor; } }