isAbleTo('ai document manage')) { $template = AiTemplate::where('status', true)->orderBy('id', 'asc')->get(); $content = AiTemplate::where('category_id', '1')->where('status', true)->get(); $blog = AiTemplate::where('category_id', '2')->where('status', true)->get(); $website = AiTemplate::where('category_id', '3')->where('status', true)->get(); $social = AiTemplate::where('category_id', '4')->where('status', true)->get(); $email = AiTemplate::where('category_id', '6')->where('status', true)->get(); $video = AiTemplate::where('category_id', '5')->where('status', true)->get(); $other = AiTemplate::where('category_id', '7')->where('status', true)->get(); return view('aidocument::document.index', compact('template', 'content', 'blog', 'website', 'social', 'email', 'video', 'other')); } else { return redirect()->back()->with('error', __('Permission Denied.')); } } /** * Show the form for creating a new resource. * @return Renderable */ public function create() { return redirect()->back()->with('error', __('Permission denied.')); } /** * Store a newly created resource in storage. * @param Request $request * @return Renderable */ public function store(Request $request) { if (\Auth::user()->isAbleTo('ai document create')) { if (isset($request->template_id) && !empty($request->template_id)) { $document_store = new AiPromptHistory(); $document_store->template_id = $request->template_id; $template = AiTemplate::where('id', $request->template_id)->first(); if ($template) { $document_store->doc_name = $template->name . "_" . time(); $document_store->workspace = getActiveWorkSpace(); $document_store->created_by = auth()->user()->id; $document_store->save(); return response()->json(['status' => 1, "URL" => route('aidocument.document.show', [$document_store->id, $request->template_id])]); } else { return response()->json(['stutas' => 0, 'error' => __('Document does not exist')]); } } else { return response()->json(['stutas' => 0, 'error' => __('Please select any document')]); } } else { return response()->json(['stutas' => 0, 'error' => __('Permission Denied.')]); } } /** * Show the specified resource. * @param int $id * @return Renderable */ public function show($doc_id, $id) { if (\Auth::user()->isAbleTo('ai document view')) { $languages = AiTemplateLanguage::where('status', 1)->orderBy('id', 'asc')->get(); $template = AiTemplate::where('id', $id)->first(); $html = ""; if ($template) { $history_data = AiPromptResponse::where("created_by", auth()->user()->id)->where("history_prompt_id", $doc_id)->orderBy('id', 'DESC')->get(); $field_data = json_decode($template->form_fields); foreach ($field_data->field as $value) { $html .= '
'; if ($value->field_type == "text_box") { $html .= ''; } if ($value->field_type == "textarea") { $html .= ''; } $html .= '
'; } $tones = $this->tone_list(); $document = AiPromptHistory::where('id', $doc_id)->first(); if ($document) { return view('aidocument::document.view', compact('languages', 'template', 'html', 'tones', 'document', 'history_data')); } else { return redirect()->route('aidocument.index')->with('error', __('Something went wrong..')); } } else { return redirect()->back()->with('error', __('Some thing went wronge.')); } } else { return redirect()->back()->with('error', __('Permission Denied.')); } //return view('aidocument::show'); } public function tone_list() { $ai_tone = array('funny', 'casual', 'excited', 'professional', 'witty', 'sarcastic', 'feminine', 'masculine', 'bold', 'dramatic', 'gumpy', 'secretive'); return $ai_tone; } /** * Show the form for editing the specified resource. * @param int $id * @return Renderable */ /** * Update the specified resource in storage. * @param Request $request * @param int $id * @return Renderable */ public function update(Request $request, $id) { return redirect()->back()->with('error', __('Permission Denied.')); } /** * Remove the specified resource from storage. * @param int $id * @return Renderable */ public function AiGenerate(Request $request) { if ($request->ajax()) { if (\Auth::user()->isAbleTo('ai document generate')) { $post = $request->all(); unset($post['_token']); unset($post['creativity']); unset($post['max_results']); unset($post['words']); unset($post['document_id']); unset($post['document_name']); $data = array(); $key_data = ApikeySetiings::where('is_active', true)->inRandomOrder()->limit(1)->first(); if ($key_data) { $gemini = new GeminiService($key_data->key); } else { $data['status'] = 'error'; $data['message'] = __('Please set proper configuration for Api Key'); return $data; } $prompt = ''; $text = ''; $counter = 1; $template = AiTemplate::where('template_code', $request->template)->first(); if ($request->template) { if ($template->template_code == $request->template) { $required_field = array(); $data_field = json_decode($template->form_fields); foreach ($data_field->field as $val) { request()->validate([$val->field_name => 'required|string']); } $temp_prompt = AiTemplatePrompt::where('template_id', $template->id)->where("created_by", auth()->user()->id)->where('key', $post['language'])->first(); if ($temp_prompt) { $prompt = $temp_prompt->value; } else { $temp_prompt = AiTemplatePrompt::where('template_id', $template->id)->where("created_by", 0)->where('key', $post['language'])->first(); $prompt = $temp_prompt->value; } foreach ($data_field->field as $field) { $text_rep = "##" . $field->field_name . "##"; if (strpos($prompt, $text_rep) !== false) { $field->value = $post[$field->field_name]; $prompt = str_replace($text_rep, $post[$field->field_name], $prompt); } else { $field->value = $post[$field->field_name]; } if ($template->is_tone == 1) { $ai_tone = $post["tone_language"]; $param = "##tone_language##"; $prompt = str_replace($param, $ai_tone, $prompt); } } } } $ai_token = (int)$request->words; $ai_creativity = (float)$request->creativity; $response = $gemini->generateContent( $prompt, $ai_creativity, $ai_token ); if (isset($response['choices'])) { if (count($response['choices']) > 1) { foreach ($response['choices'] as $value) { $text .= $counter . '. ' . ltrim($value['text']) . "\r\n\r\n\r\n"; $counter++; } } else { $text = $response['choices'][0]['text']; } $tokens = $response['usage']['completion_tokens']; $flag = AiTemplateLanguage::where('code', $request->language)->first(); $data['text'] = trim($text); $prompt_store = AiPromptHistory::where("id", $request->document_id)->where('created_by', auth()->user()->id)->first(); $prompt_store->template_id = $template->id; $prompt_store->creativity = $ai_creativity; $prompt_store->max_tokens = $ai_token; $prompt_store->max_results = 1; $prompt_store->model = 'gemini-2.0-flash'; $prompt_store->prompt = $prompt; $prompt_store->language = $post["language"]; $prompt_store->prompt_fields = json_encode($data_field); $prompt_store->created_by = auth()->user()->id; $prompt_store->save(); $content = new AiPromptResponse(); $content->template_id = $template->id; $content->history_prompt_id = $prompt_store->id; $content->used_words = $tokens; $content->content = $data['text']; $content->created_by = auth()->user()->id; $content->save(); $data['prompt'] = $prompt; $data['status'] = 'success'; $data['id'] = $content->id; return $data; } else { $data['status'] = 'error'; $data['message'] = __('Text was not generated, please try again'); return $data; } } else { $data['status'] = 'error'; $data['message'] = __('Permission Denied.'); return $data; } } } public function regenerate_response(Request $request) { if ($request->ajax()) { if (\Auth::user()->isAbleTo('ai document generate')) { $data = array(); $key_data = ApikeySetiings::where('is_active', true)->inRandomOrder()->limit(1)->first(); if ($key_data) { $gemini = new GeminiService($key_data->key); } else { $data['status'] = 'error'; $data['message'] = __('Please set proper configuration for Api Key'); return $data; } $text = ''; $counter = 1; $prompt = AiPromptHistory::where('id', $request->prompt_id)->where('created_by', auth()->user()->id)->first(); $ai_token = (int)$prompt->max_tokens; $ai_creativity = (float)$prompt->creativity; $response = $gemini->generateContent( $prompt->prompt, $ai_creativity, $ai_token ); if (isset($response['choices'])) { if (count($response['choices']) > 1) { foreach ($response['choices'] as $value) { $text .= $counter . '. ' . ltrim($value['text']) . "\r\n\r\n\r\n"; $counter++; } } else { $text = $response['choices'][0]['text']; } $tokens = $response['usage']['completion_tokens']; $flag = AiTemplateLanguage::where('code', $request->language)->first(); $data['text'] = trim($text); $content = new AiPromptResponse(); $content->template_id = $request->template_id; $content->history_prompt_id = $request->prompt_id; $content->used_words = $tokens; $content->content = $data['text']; $content->created_by = auth()->user()->id; $content->save(); $data['prompt'] = $prompt->prompt; $data['status'] = 'success'; $data['id'] = $content->id; return $data; } else { $data['status'] = 'error'; $data['message'] = __('Text was not generated, please try again'); return $data; } } else { $data['status'] = 'error'; $data['message'] = __('Permission Denied.'); return $data; } } } public function exportallresponsecontent(Request $request) { $template = AiPromptResponse::select('content')->where('history_prompt_id', $request->history_prompt_id)->where('created_by', Auth::user()->id)->get(); $html = ""; foreach ($template as $value) { $html .= $value->content . "


"; } return $html; } public function exportresponsecontent(Request $request) { $template = AiPromptResponse::select('content')->where('id', $request->response_id)->where('created_by', Auth::user()->id)->get(); $html = ""; foreach ($template as $value) { $html .= $value->content; } return $html; } public function edit($doc_id, $id) { if (\Auth::user()->isAbleTo('document history edit')) { $languages = AiTemplateLanguage::where('status', 1)->orderBy('id', 'asc')->get(); $template = AiTemplate::where('id', $id)->first(); $html = ""; if ($template) { $document = AiPromptHistory::where('id', $doc_id)->first(); $history_data = AiPromptResponse::where("created_by", auth()->user()->id)->where("history_prompt_id", $doc_id)->orderBy('id', 'DESC')->get(); if (!empty($document->prompt_fields)) { $field_data = json_decode($document->prompt_fields); foreach ($field_data->field as $value) { $html .= '
'; if ($value->field_type == "text_box") { $html .= ''; } if ($value->field_type == "textarea") { $html .= ''; } $html .= '
'; } } else { $field_data = json_decode($template->form_fields); foreach ($field_data->field as $value) { $html .= '
'; if ($value->field_type == "text_box") { $html .= ''; } if ($value->field_type == "textarea") { $html .= ''; } $html .= '
'; } } $tones = $this->tone_list(); return view('aidocument::document.edit', compact('languages', 'template', 'html', 'history_data', 'tones', 'document')); } else { return redirect()->back()->with('error', __('Document does not exist')); } } else { return redirect()->back()->with('error', __('Permission Denied.')); } } public function save(Request $request) { $store = AiPromptHistory::where('id', $request->doc_id)->where('created_by', Auth::user()->id)->where('workspace', getActiveWorkSpace())->first(); if ($store) { $store->doc_name = $request->document_name; $store->save(); event(new UpdateHistory($request)); return 1; } else { return 0; } } public function destroy($id) { if (\Auth::user()->isAbleTo('document history delete')) { $data = AiPromptHistory::where('id', $id)->first(); if ($data) { $response = AiPromptResponse::where('history_prompt_id', $id)->delete(); $data->delete(); return redirect()->route('aidocument.document.history')->with('success', __('Document successfully deleted .')); } else { return redirect()->back()->with('error', __('Something is wrong.')); } } else { return redirect()->back()->with('error', __('Permission Denied.')); } } public function history(Request $request) { if (\Auth::user()->isAbleTo('document history manage')) { $allTemplate = AiTemplate::get(); $allCategories = AiTemplateCategory::get(); $document = AiPromptHistory::where('workspace', getActiveWorkSpace())->where('created_by', auth()->user()->id)->orderBy('id', 'desc')->get(); foreach ($document as $value) { $value->category = ""; $value->category_id = ""; $template = $allTemplate->where('id', $value->template_id)->first(); if ($template) { $category = $allCategories->where('id', $template->category_id)->first(); if ($category) { $value->category_id = $category->id; $value->category = $category->name; } } $value->created_on = date('M j, Y H:i', strtotime($value->created_at)); if ($value->language == '' && empty($value->language)) { $value->language = 'en-US'; } if ($value->max_tokens == '' && empty($value->max_tokens)) { $value->max_tokens = 0; } } return view('aidocument::document.history', compact('document')); } else { return redirect()->back()->with('error', __('Permission Denied.')); } } }