input('token'); $timestamp = $request->input('timestamp'); $signature = $request->input('signature'); if (!verifyMailgunSignature($token, $timestamp, $signature)) { update_setting('aw_test','Invalid signature.'); abort(403, 'Invalid signature.'); } $data = $this->extractMailgunData($request->all()); $to_email = $data['to_email']; $message = $data['message']; update_setting('aw_test',$to_email); $company = get_company('email',$to_email); if($company){ $ticket = insertTicket($data['from_email'], $company->email, $data['subject'], $message,'inbox',$data['from_name'] ); if($ticket){ $response = createResponse($ticket->id,$message); $attachmentCount = $request->input('attachment-count', 0); update_setting('aw_test',$attachmentCount); for ($i = 1; $i <= $attachmentCount; $i++) { $attachment = $request->file("attachment-$i"); update_setting('aw_test',$attachment->getClientOriginalName()); if ($attachment && $attachment->isValid()) { // Define a unique filename, possibly using the original filename and appending a timestamp or a unique id $filename = time() . '_' . $attachment->getClientOriginalName(); // Save the attachment to the local or specific disk $filePath = $attachment->storeAs('tickets/' . $ticket->id, $filename, 'public'); $fileUrl = url(Storage::url($filePath)); update_setting('aw_test',$fileUrl); } } } }else{} // update_setting('aw_test',json_encode($request->all())); // DB::commit(); // } catch (\Exception $e) { // DB::rollBack(); // update_setting('aw_test',json_encode($e->getMessage())); // sendEmailViaMailgun( 'ai.rapidev.tech', 'support@ai.rapidev.tech', '16bsse18212@gmail.com', 'error', json_encode($e->getMessage())); // // Handle the exception // } } public function extractMailgunData($data) { // Prepare an array to hold the extracted data $extractedData = [ 'from_email' => $data['from'], 'to_email' => $data['To'], 'from_name' => '', // This will be extracted from the 'from' field 'subject' => $data['subject'], 'message' => $data['body-html'], 'mime_version' => $data['Mime-Version'], 'dkim_signature' => $data['Dkim-Signature'] ]; // Extract the sender's name from the 'from' field if (preg_match('/^(.*?) <(.*?)>$/', $data['from'], $matches)) { $extractedData['from_name'] = $matches[1]; $extractedData['from_email'] = $matches[2]; } return $extractedData; } }