{"repo": "9jadev/drnow-backend", "files": {"app/Http/Controllers/BookingConversationController.php": {"dfc7f1a85d84eb0f9df0fefc70df2e848d19a2c4": {"t": 1785745790.0574322, "n": 23614, "h": "3ffbb0a48fb10096", "c": "whereNot(\"role\", \"system\")->select([\"role\", \"content\", \"created_at\"])->where(\"created_at\", \">=\", now()->subHour())->get();\n if ($chats->count() == 0) {\n WhatsappConversation::create([\n \"role\" => \"system\",\n \"whatsapp_id\" => $whatsapp_id,\n \"content\" => << \"user\",\n \"whatsapp_id\" => $whatsapp_id,\n \"content\" => \"Patient Data: \" . $name\n ]);\n }\n\n $newcaht = WhatsappConversation::create([\n \"role\" => \"user\",\n \"whatsapp_id\" => $whatsapp_id,\n \"content\" => $message,\n ]);\n // logs()->info(\"Booking Conversation\", $chats->toArray());\n $chats = WhatsappConversation::where(\"whatsapp_id\", $whatsapp_id)->select([\"role\", \"content\"])->get();\n $response = Http::withHeaders([\n 'Authorization' => 'Bearer ' . env('DEEPSEEK_API_KEY'), // πŸ”‘ Put this in .env\n 'Content-Type' => 'application/json',\n ])->timeout(120)\n ->post('https://api.deepseek.com/v1/chat/completions', [\n \"model\" => \"deepseek-chat\",\n \"messages\" => $chats,\n // \"temperature\" => 1.5,\n \"stream\" => false\n ]);\n if ($response->successful()) {\n $newcahtai = WhatsappConversation::create([\n \"role\" => \"assistant\",\n \"content\" => $response->json()[\"choices\"][0][\"message\"][\"content\"],\n \"whatsapp_id\" => $whatsapp_id\n ]);\n // $chats = $this->getChats($booking->booking_id, false);\n $chats = $this->getChatsBookingWhatapp($newcahtai->whatsapp_id);\n }\n\n // $booking->update([\n // \"report_markdown\" => null\n // ]);\n\n // logs('response', $response->json()[\"choices\"][0][\"message\"][\"content\"]);\n\n $message = (new WhatsAppService())->sendTextMessage(\n $to,\n $response->json()[\"choices\"][0][\"message\"][\"content\"]\n );\n\n return response()->json([\"message\" => \"success\", \"chats\" => $chats, \"dd\" => $response->json()[\"choices\"][0][\"message\"]], 200);\n }\n\n protected function getChats($booking_id, $showwall = false)\n {\n if ($showwall == true) {\n $chats = BookingConversation::where(\"member_id\", auth(\"member\")->user()->member_id)->where(\"booking_id\", $booking_id)->whereNot(\"role\", \"system\")->get();\n return $chats;\n }\n $chats = BookingConversation::where(\"member_id\", auth(\"member\")->user()->member_id)->where(\"booking_id\", $booking_id)->whereNot(\"role\", \"system\")->select([\"role\", \"content\", \"created_at\"])->get();\n return $chats;\n }\n /**\n * Display a listing of the resource.\n */\n public function index()\n {\n //\n }\n\n /**\n * Show the form for creating a new resource.\n */\n public function create()\n {\n //\n }\n\n /**\n * Store a newly created resource in storage.\n */\n public function store(Request $request)\n {\n $request->validate([\n \"booking_id\" => \"required|string|exists:booking_payments,booking_id\",\n ]);\n $booking = Booking::where(\"member_id\", auth(\"member\")->user()->id)->where(\"booking_id\", $request->booking_id)->first();\n $now = Carbon::now();\n $user = Member::where(\"id\", auth(\"member\")->user()->id)->first();\n\n\n if ($user->hasActiveSubscription() == false) {\n return response()->json([\"message\" => \"No active subscription\"], 400);\n }\n\n if (!$now->between($booking->booking_start_time, $booking->booking_end_time)) {\n // The current time is within the booking range\n $booking->update([\n \"status\" => Booking::CLOSED\n ]);\n return response()->json([\"message\" => \"Booking time has not expired\"], 400);\n }\n\n $patient_data = json_decode($booking->member_data);\n $chats = BookingConversation::where(\"member_id\", auth(\"member\")->user()->member_id)->where(\"booking_id\", $request->booking_id)->whereNot(\"role\", \"system\")->select([\"role\", \"content\", \"created_at\"])->get();\n if ($chats->count() == 0) {\n BookingConversation::create([\n \"role\" => \"system\",\n \"booking_id\" => $booking->booking_id,\n \"member_id\" => auth(\"member\")->user()->member_id,\n \"content\" => << \"user\",\n \"booking_id\" => $booking->booking_id,\n \"member_id\" => auth(\"member\")->user()->member_id,\n \"content\" => \"Patient Data: \" . $patient_data->name . \" is a \" . $patient_data->sex . \" aged \" . $patient_data->age . \" years old. \",\n ]);\n }\n $request->validate([\n \"message\" => \"required|string\",\n ]);\n $message = $request->message;\n\n if ($request->filess != null) {\n $mess = \"\";\n foreach ($request->filess as $value) {\n $mess = $mess . \" \" . $this->ocr($value);\n }\n $message = $message . \" \" . $mess;\n }\n\n // return $message;\n\n\n\n $newcaht = BookingConversation::create([\n \"role\" => \"user\",\n \"booking_id\" => $booking->booking_id,\n \"member_id\" => auth(\"member\")->user()->member_id,\n \"content\" => $message,\n \"file_content\" => $request->message,\n \"files\" => json_encode($request->filess)\n ]);\n logs()->info(\"Booking Conversation\", $chats->toArray());\n $chats = BookingConversation::where(\"member_id\", auth(\"member\")->user()->member_id)->where(\"booking_id\", $request->booking_id)->select([\"role\", \"content\"])->get();\n $response = Http::withHeaders([\n 'Authorization' => 'Bearer ' . env('DEEPSEEK_API_KEY'), // πŸ”‘ Put this in .env\n 'Content-Type' => 'application/json',\n ])->timeout(120)\n ->post('https://api.deepseek.com/v1/chat/completions', [\n \"model\" => \"deepseek-chat\",\n \"messages\" => $chats,\n // \"temperature\" => 1.5,\n \"stream\" => false\n ]);\n if ($response->successful()) {\n $newcahtai = BookingConversation::create([\n \"role\" => \"assistant\",\n \"booking_id\" => $booking->booking_id,\n\n \"content\" => $response->json()[\"choices\"][0][\"message\"][\"content\"],\n \"member_id\" => auth(\"member\")->user()->member_id\n ]);\n // $chats = $this->getChats($booking->booking_id, false);\n $chats = $this->getChatsBooking($newcahtai->booking_id);\n }\n\n $booking->update([\n \"report_markdown\" => null\n ]);\n\n return response()->json([\"message\" => \"success\", \"chats\" => $chats, \"dd\" => $response->json()[\"choices\"][0][\"message\"]], 200);\n }\n\n protected function getChatsBookingWhatapp($whatsapp_id)\n {\n $chats = WhatsappConversation::where(\"whatsapp_id\", $whatsapp_id)->whereNot(\"role\", \"system\")->select([\"role\", \"content\", \"created_at\"])->get();\n return $chats;\n }\n\n protected function getChatsBooking($bookingid)\n {\n $chats = BookingConversation::where(\"member_id\", auth(\"member\")->user()->member_id)->whereNot(\"role\", \"system\")->where(\"booking_id\", $bookingid)->select([\"role\", \"content\", \"file_content\", \"created_at\", \"files\"])->get();\n return $chats;\n }\n\n public function ocr($url)\n {\n\n $curl = curl_init();\n curl_setopt_array($curl, array(\n CURLOPT_URL => 'https://api.ocr.space/parse/image',\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => '',\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 0,\n CURLOPT_FOLLOWLOCATION => true,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => 'POST',\n CURLOPT_POSTFIELDS => array('language' => 'eng', 'isOverlayRequired' => 'false', 'url' => $url, 'iscreatesearchablepdf' => 'false', 'issearchablepdfhidetextlayer' => 'false'),\n CURLOPT_HTTPHEADER => array(\n 'apikey: K87890322888957'\n ),\n ));\n\n $response = curl_exec($curl);\n\n curl_close($curl);\n return $response;\n }\n\n /**\n * Display the specified resource.\n */\n public function show(BookingConversation $bookingConversation)\n {\n //\n }\n\n /**\n * Show the form for editing the specified resource.\n */\n public function edit(BookingConversation $bookingConversation)\n {\n //\n }\n\n /**\n * Update the specified resource in storage.\n */\n public function update(Request $request, BookingConversation $bookingConversation)\n {\n //\n }\n\n /**\n * Remove the specified resource from storage.\n */\n public function destroy(BookingConversation $bookingConversation)\n {\n //\n }\n}\n"}}}}