diff --git a/Modules/Linksehat/Http/Controllers/Api/ChatController.php b/Modules/Linksehat/Http/Controllers/Api/ChatController.php index a6a3307b..b1659599 100644 --- a/Modules/Linksehat/Http/Controllers/Api/ChatController.php +++ b/Modules/Linksehat/Http/Controllers/Api/ChatController.php @@ -74,7 +74,7 @@ class ChatController extends Controller public function listChannel(Request $request){ // Validasi request jika diperlukan $channel = Channel::where('member_id',$request->user_id)->get()->toArray(); - + if (!$channel) { $dataChannel = Channel::where('doctor_id',$request->user_id)->get()->toArray(); $data = []; @@ -86,11 +86,11 @@ class ChatController extends Controller ->first(); $urlAvatarDefault = $user->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; $avatarMember = $user->detail->sImage ?? $urlAvatarDefault; - - $arr['id'] = $d['id']; - $arr['avatar'] = $avatarMember; - $arr['name'] = $user->sFirstName .' '.$user->sLastName; - $arr['last_message'] = $lastMessage; + + $arr['id'] = $d['id']; + $arr['avatar'] = $avatarMember; + $arr['name'] = $user->sFirstName .' '.$user->sLastName; + $arr['last_message'] = $lastMessage; array_push($data, $arr); } @@ -101,14 +101,14 @@ class ChatController extends Controller return response()->json(['message' => 'Get List Channel successfully', 'channel' => $channel]); } - + public function sendMessage(Request $request) { // Validasi request jika diperlukan $validatedData = $request->validate([ 'user_id' => 'required' ]); - + // Ambil data dari request $message = Message::create([ 'content' => $request->message, @@ -142,7 +142,7 @@ class ChatController extends Controller ]); } // Berikan respons yang sesuai ke klien - + $channel = Channel::where('id',$request->channel_id)->first(); if($channel->member_id == $request->user_id){ // Get nama dokter @@ -151,13 +151,13 @@ class ChatController extends Controller } else { // Get nama pasien $person = User::where('nID', $channel->member_id)->first(); - $name = $person->sFirstName . ' ' . $person->sLastName; + $name = $person->sFirstName . ' ' . $person->sLastName; } ChatMessageSent::dispatch($message); - + return response()->json([ - 'message' => 'Message sent successfully', + 'message' => 'Message sent successfully', 'data' => [ 'header' => $name, ] @@ -169,8 +169,8 @@ class ChatController extends Controller // Buat instance Pusher dengan konfigurasi yang sesuai $channel = Channel::where('id',$request->channel_id)->first(); $livechat = Livechat::where([ - 'doctor_id' => $channel->doctor_id, - 'patient_id' => $channel->member_id, + 'doctor_id' => $channel->doctor_id, + 'patient_id' => $channel->member_id, ])->latest('created_at')->first(); if($channel->member_id == $request->user_id){ @@ -181,37 +181,61 @@ class ChatController extends Controller $age = ''; $gender = ''; $question = ''; - + $consultationStart = $livechat->start_date; $consultationEnd = $livechat->end_date; $work = ''; + $weight = '-'; + $height = '-'; $address = ''; + $maritalStatus = ''; } else { // Get nama pasien $user = User::where('nID', $channel->member_id)->with('detail')->first(); - $name = $user->sFirstName . ' ' . $user->sLastName; - $urlAvatarDefault = $user->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; - $avatar = $user->detail->sImage ?? $urlAvatarDefault; - $gender = DB::connection('oldlms')->table('tm_jenis_kelamin')->where('nID', $user->detail->nIDJenisKelamin)->first('sJenisKelamin'); - if ($gender){ - $gender = $gender->sJenisKelamin; + $name = $user->sFirstName . ' ' . $user->sLastName; + $gender = null; + if ($user->detail) { + $urlAvatarDefault = $user->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; + $avatar = $user->detail->sImage ?? $urlAvatarDefault; + $gender = DB::connection('oldlms')->table('tm_jenis_kelamin')->where('nID', $user->detail->nIDJenisKelamin)->first('sJenisKelamin'); + $age = Helper::calculateAge($user->detail->dTanggalLahir); + if ($gender){ + $gender = $gender->sJenisKelamin; + } + $work = DB::connection('oldlms')->table('tm_pekerjaan')->where('nID', $user->detail->nIDPekerjaan)->first('sPekerjaan'); + + if($work){ + $work = $work->sPekerjaan; + } + $maritalStatus = DB::connection('oldlms')->table('tm_status_pernikahan')->where('nID', $user->detail->sMartialStatus)->first('sStatusPernikahan'); + if($maritalStatus){ + $maritalStatus = $maritalStatus->sStatusPernikahan; + } + + $weight = $user->detail->sWeight; + $height = $user->detail->sWeight; + } else { + $avatar = 'https://linksehat.dev/assets/img/users/male-avatar.png'; + $age = '-'; + $work = '-'; + $maritalStatus = '-'; + $weight = '-'; + $height = '-'; + } - $age = Helper::calculateAge($user->detail->dTanggalLahir); + $question = $livechat->descriptions; $consultationStart = $livechat->start_date; $consultationEnd = $livechat->end_date; - $work = DB::connection('oldlms')->table('tm_pekerjaan')->where('nID', $user->detail->nIDPekerjaan)->first('sPekerjaan'); - - if($work){ - $work = $work->sPekerjaan; - } + $address = DB::connection('oldlms')->table('tm_users_address')->where('nIDUser', $user->nID)->first('sAlamat'); if($address){ $address = $address->sAlamat; } + } - + // Ini Untul Chat $perPage = $request->input('per_page', 10); // Default 10 pesan per halaman $page = $request->input('page', 1); // Default halaman 1 @@ -220,7 +244,7 @@ class ChatController extends Controller ->where('type', '!=', 'trigger') ->orderBy('created_at', 'desc') // Urutkan berdasarkan created_at secara descending ->paginate($perPage, ['*'], 'page', $page); - + // Data Consultation Summary $consultationSummary = [ 'subject' => $livechat->subject, @@ -240,12 +264,22 @@ class ChatController extends Controller 'header' => $name, 'avatar' => $avatar, 'gender' => $gender, + 'marital_status' => $maritalStatus, 'age' => $age, + 'weight' => $weight, + 'height' => $height, 'question' => $question, + 'diseases' => [], + 'medications' => [], + 'allergy' => [], + 'family_history' => [], 'start' => $consultationStart, 'end' => $consultationEnd, 'work' => $work, 'address' => $address, + 'consultation_id' => $livechat->id, + 'consultation_status' => Helper::getStatusLivechat($livechat->status), + 'health_sertificate' => $healthSertificate, 'chat' => $data->items(), 'pagination' => [ 'total' => $data->total(), @@ -256,8 +290,7 @@ class ChatController extends Controller 'to' => $data->lastItem(), ], 'summary' => $consultationSummary, - 'livechat_id' => $livechat->id, - 'health_sertificate' => $healthSertificate, + ] ]); } @@ -278,7 +311,7 @@ class ChatController extends Controller ])->latest('created_at')->first(); $user = User::where('nID', $livechat->patient_id)->with('detail')->first(); - $name = $user->sFirstName . ' ' . $user->sLastName; + $name = $user->sFirstName . ' ' . $user->sLastName; $age = Helper::calculateAge($user->detail->dTanggalLahir); $person = Person::where('id', $livechat->doctor_id)->first(); @@ -294,7 +327,7 @@ class ChatController extends Controller } // Memuat view pdf_view.php ke dalam variabel $calculateDate = Helper::calculateDateDifference($livechat->health_certificate_start, $livechat->health_certificate_end); - + $data = [ 'name' => $name, 'age' => $age, diff --git a/Modules/Linksehat/Http/Controllers/Api/Doctor/ChatDoctorController.php b/Modules/Linksehat/Http/Controllers/Api/Doctor/ChatDoctorController.php index 1809f0ac..91376fb4 100644 --- a/Modules/Linksehat/Http/Controllers/Api/Doctor/ChatDoctorController.php +++ b/Modules/Linksehat/Http/Controllers/Api/Doctor/ChatDoctorController.php @@ -44,8 +44,12 @@ class ChatDoctorController extends Controller if($chat) { foreach($chat as $c){ $patient = UserLMS::where('nID',$c->patient_id)->with('detail')->first(); - $urlAvatarDefault = $patient->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; - $avatarMember = $patient->detail->sImage ?? $urlAvatarDefault; + if ( $patient->detail) { + $urlAvatarDefault = $patient->detail->nIDJenisKelamin == 1 ? 'https://linksehat.dev/assets/img/users/male-avatar.png' : 'https://linksehat.dev/assets/img/users/female-avatar.png'; + $avatarMember = $patient->detail->sImage ?? $urlAvatarDefault; + } else { + $avatarMember = 'https://linksehat.dev/assets/img/users/male-avatar.png'; + } $arr['id'] = $c->id; $arr['patient_id'] = $patient->nID; $arr['avatar'] = $avatarMember; @@ -68,11 +72,11 @@ class ChatDoctorController extends Controller } else { $avatarMember = 'https://linksehat.dev/assets/img/users/male-avatar.png'; } - - $arr['id'] = $d['id']; - $arr['avatar'] = $avatarMember; - $arr['name'] = $user->sFirstName .' '.$user->sLastName; - $arr['last_message'] = $lastMessage; + + $arr['id'] = $d['id']; + $arr['avatar'] = $avatarMember; + $arr['name'] = $user->sFirstName .' '.$user->sLastName; + $arr['last_message'] = $lastMessage; array_push($dataOnGoing, $arr); } @@ -119,7 +123,7 @@ class ChatDoctorController extends Controller } return ApiResponse::apiResponse("Success", $data, trans('Message.success'), 200); } - + public function declineChat(Request $request) { $livechat = Livechat::find($request->id); @@ -166,7 +170,6 @@ class ChatDoctorController extends Controller public function summaryChat(Request $request) { - $livechat = Livechat::find($request->id); if ($livechat) { // Memperbarui atribut model diff --git a/Modules/Linksehat/Http/Controllers/Api/DuitkuController.php b/Modules/Linksehat/Http/Controllers/Api/DuitkuController.php index 4f5159b5..2d941340 100644 --- a/Modules/Linksehat/Http/Controllers/Api/DuitkuController.php +++ b/Modules/Linksehat/Http/Controllers/Api/DuitkuController.php @@ -291,10 +291,9 @@ class DuitkuController extends Controller // Update status pembayaran $livechat->payment_method = $notif->paymentCode; $livechat->status = 5; // success payment - $livechat->save(); - // Update start chat $livechat->start_date = date('Y-m-d H:i:s'); + $livechat->save(); // Buat dan simpan data channel ke dalam tabel $channel = Channel::updateOrCreate([ 'name' => $livechat->patient_id .'_' . $request->doctor_id, @@ -332,7 +331,7 @@ class DuitkuController extends Controller // Berikan respons yang sesuai ke klien return response()->json(['message' => 'Channel created successfully', 'channel' => $channel]); - + } else if ($notif->resultCode == "01") { // Action Failed $livechat = Livechat::where('uuid', $notif->merchantOrderId)->first(); diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 11f8d42f..4da6c39e 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -477,7 +477,7 @@ class Helper public static function calculateAge($date_brith_day){ // Konversi tanggal lahir ke dalam format UNIX timestamp $dob = strtotime($date_brith_day); - + // Hitung umur berdasarkan tanggal lahir $umur = date('Y') - date('Y', $dob); @@ -498,5 +498,34 @@ class Helper return $start->diffInDays($end) + 1; } + public static function getStatusLivechat($status) { + switch ($status) { + case 1: + return 'Requested'; // Clearer status name + break; + case 2: + return 'Accepted'; + break; + case 3: + return 'Declined'; + break; + case 4: + return 'Waiting Payment'; + break; + case 5: + return 'Payment Successful'; + break; + case 6: + return 'Chat Ended'; + break; + case 7: + return 'Payment Failed'; + break; + default: + return 'Unknown Status'; // Handle unknown statuses + break; + } + } + }