request = $request; parent::__construct($resource); } public function toArray($request) { $memberProfile = User::with('detail')->where('nIDUser', $this->nID)->get()->toArray(); $dataMemberProfile = []; $userInsurance = UserInsurance::where('nIDUser', $this->nID)->get()->first(); $memberId = null; $linking = false; $jam = date('G'); // Ambil jam dalam format 24 jam if ($jam < 12) { $wellcome = "Good Morning!"; } elseif ($jam < 18) { $wellcome = "Good Afternoon!"; } else { $wellcome = "Good Evening!"; } if($userInsurance){ $memberId = $userInsurance->sNoPolis; $linking = true; } else { $member = Member::where('email', $this->sEmail)->get()->first(); $person = Person::where('phone', $this->sPhone)->get()->first(); if ($member || $person){ // Autolinking $corporateEmployee = CorporateEmployee::where('member_id', $member->id)->get()->first(); // cek corporate id empolyee/member if ($corporateEmployee){ $corporate = Corporate::findOrFail($corporateEmployee->corporate_id)->automatic_linking; // cek autocomplete if ($corporate){ if($member) { // Insert into database linksehat $insurance = UserInsurance::updateOrCreate( [ 'nIDUser' => $this->nID, ], [ 'nIDUser' => $this->nID, 'nIDInsurance' => $_ENV['LINKSEHAT_ASO_INSURANCE_ID'], 'sNoPolis' => $member->member_id, 'sNamaPeserta' => $member->fullName, 'sKartuPeserta' => '', 'sLayanan' => 'RJ,TC', 'dStartDate' => $member->members_effective_date, 'dExpireDate' => $member->members_expire_date, 'dTanggalLahir' => $member->birth_date, 'nNoKTP' => $member->nric != '' ? $member->nric : 0 , 'sIsConfrimed' => 1, 'sStatus' => 1, ]); $message = $member->currentPolicy->corporate->welcome_message; $linking = true; $memberId = $member->member_id; } } } } }; if (count($memberProfile) > 0){ $urlAvatarDefault = $this->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; $avatarMember = $this->detail->sImage ?? $urlAvatarDefault; $relationship = DB::connection('oldlms')->table('tm_hubungan_keluarga')->where('nID', $this->nIDHubunganKeluarga)->first('sHubunganKeluarga'); $dataUser = [ 'id' => $this->nID, 'name' => $this->sFirstName . ' ' . $this->sLastName, 'relationship' => $relationship ? $relationship->sHubunganKeluarga : '-', 'avatar' => $avatarMember ]; array_push($dataMemberProfile, $dataUser); foreach($memberProfile as $m){ $urlAvatarDefault = $m['detail']['nIDJenisKelamin'] == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; $avatarMember = $m['detail']['sImage'] ?? $urlAvatarDefault; $relationship = DB::connection('oldlms')->table('tm_hubungan_keluarga')->where('nID', $m['nIDHubunganKeluarga'])->first('sHubunganKeluarga'); $data = [ 'id' => $m['nID'], 'name' => $m['full_name'], 'relationship' => $relationship ? $relationship->sHubunganKeluarga : '-', 'avatar' => $avatarMember, ]; array_push( $dataMemberProfile, $data); } } else { $nID = $this->nIDUser ? $this->nIDUser : $this->nID; if ($nID){ $memberProfile = User::with('detail')->where('nIDUser', $nID)->get()->toArray(); $dataMember = User::with('detail')->where('nID', $nID)->get()->first(); if ($this->detail){ $urlAvatarDefault = $this->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; } else { $urlAvatarDefault = 'https://linksehat.dev/assets/img/users/male-avatar.png'; } $avatar = $this->detail->sImage ?? $urlAvatarDefault; $avatarMember = $dataMember->detail->sImage ?? $urlAvatarDefault; $relationship = DB::connection('oldlms')->table('tm_hubungan_keluarga')->where('nID', $this->nIDHubunganKeluarga)->first('sHubunganKeluarga'); $dataUser = [ 'id' => $dataMember->nID, 'name' => $dataMember->sFirstName . ' ' . $dataMember->sLastName, 'relationship' => 'Me', 'avatar' => $avatarMember ]; array_push($dataMemberProfile, $dataUser); if (count($memberProfile) > 0){ foreach($memberProfile as $m){ $urlAvatarDefault = $m['detail']['nIDJenisKelamin'] == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; $avatarMember = $m['detail']['sImage'] ?? $urlAvatarDefault; $relationship = DB::connection('oldlms')->table('tm_hubungan_keluarga')->where('nID', $m['nIDHubunganKeluarga'])->first('sHubunganKeluarga'); $data = [ 'id' => $m['nID'], 'name' => $m['full_name'], 'relationship' => $relationship->sHubunganKeluarga, 'avatar' => $avatarMember, ]; array_push( $dataMemberProfile, $data); } } } else { } } // Principal if ($this->detail){ $urlAvatarDefault = $this->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; } else { $urlAvatarDefault = 'https://linksehat.dev/assets/img/users/male-avatar.png'; } $avatar = $this->detail->sImage ?? $urlAvatarDefault; // Doctor livechat $doctors = Practitioner::with('person', 'practitionerRoles.organization', 'practitionerRoles.speciality') ->whereHas('person', function ($query) { $query->where('isOnline', 1); // hanya online }) ->get() ->toArray(); $doctorsLivechat = []; foreach($doctors as $doctor){ $specialist = 'Umum'; $year = 0; $price = 0; if (!empty($doctor['person']['start_date_work'])) { $starExperience = Carbon::parse($doctor['person']['start_date_work'])->format('Y-m-d'); $experience = Carbon::createFromFormat('Y-m-d', $starExperience); $year = $experience->diffInYears(Carbon::now()); } if ($doctor['practitioner_roles']) { if ($doctor['practitioner_roles'][0]['speciality']){ $specialist = $doctor['practitioner_roles'][0]['speciality']['name']; } if ($doctor['practitioner_roles'][0]['price']){ $price = $doctor['practitioner_roles'][0]['price']; } } $data = [ 'id' => $doctor['id'], 'full_name' => $doctor['person']['name'], 'specialist' => $specialist, 'experience' => $year, 'review' => $doctor['person']['review'], 'price' => $price, 'price_real' => $price ]; array_push($doctorsLivechat, $data); } // Hospital List $hospitalList = []; $hospitals = Organization::where([ 'type' => 'hospital', 'status' => 'active', ]) ->with('currentAddress') ->get()->toArray(); foreach($hospitals as $hospital){ $lat = 0; $lang = 0; if ($hospital['current_address']['lat']){ $lat = $hospital['current_address']['lat']; } if ($hospital['current_address']['lng']){ $lang = $hospital['current_address']['lng']; } $address = ''; if ($hospital['current_address']['text']){ $address = $hospital['current_address']['text']; } $radius = 0; if ($lat && $lang && $request->longitude && $request->latitude){ $radius = round(Helper::calculateDistance($lat, $lang, $request->latitude, $request->longitude), 2); } $data = [ 'name' => $hospital['name'], 'radius' => $radius, 'image' => '', 'address' => $address ]; array_push($hospitalList, $data); } usort($hospitalList, function($a, $b) { return $a['radius'] <=> $b['radius']; }); $hospitalList = array_slice($hospitalList, 0, 5); return [ 'id' => $this->nID, 'message' => $wellcome, 'full_name' => $this->sFirstName . ' '. $this->sLastName, 'avatar' => $avatar, 'member_id' => $memberId, 'linking' => $linking, 'doctors_livechat' => [ $doctorsLivechat ], 'hospital' => $hospitalList ]; } }