Implement legal document acceptance tracking requiring users to accept terms of service and privacy policy before continuing to use the system. Add automatic generation of standard project files (LICENSE, README.md, RULES.md, cookies.html, termos-de-uso.html, privacidade.html) with download functionality. Enhance prompt building with detailed Portuguese instructions and system requirements. Update seeders with comprehensive legal content and standard files configuration for all prompt templates.
145 lines
4.4 KiB
PHP
Executable File
145 lines
4.4 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\PromptTemplate;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\PromptTemplate\StorePromptTemplateRequest;
|
|
use App\Http\Requests\PromptTemplate\UpdatePromptTemplateRequest;
|
|
use App\Models\PromptTemplate;
|
|
use App\Services\PromptTemplateService;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\View\View;
|
|
|
|
class PromptTemplateController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*/
|
|
public function __construct(
|
|
private readonly PromptTemplateService $promptTemplateService
|
|
) {}
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index(): View
|
|
{
|
|
$this->authorize('viewAny', \App\Models\PromptTemplate::class);
|
|
|
|
$result = $this->promptTemplateService->index();
|
|
$templates = $result['data'] ?? [];
|
|
|
|
return view('prompt-templates.index', compact('templates'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*/
|
|
public function create(): View
|
|
{
|
|
$this->authorize('create', \App\Models\PromptTemplate::class);
|
|
|
|
return view('prompt-templates.create');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(StorePromptTemplateRequest $request): RedirectResponse
|
|
{
|
|
$this->authorize('create', \App\Models\PromptTemplate::class);
|
|
|
|
$data = $request->validated();
|
|
|
|
if (isset($data['template_data']) && is_string($data['template_data'])) {
|
|
$data['template_data'] = json_decode($data['template_data'], true);
|
|
}
|
|
|
|
if (!isset($data['template_data']['standard_files'])) {
|
|
$data['template_data']['standard_files'] = true;
|
|
}
|
|
|
|
$this->promptTemplateService->store($data);
|
|
|
|
return redirect()->route('prompt-templates.index')
|
|
->with('success', 'Template created successfully.');
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*/
|
|
public function edit(\App\Models\PromptTemplate $promptTemplate): View
|
|
{
|
|
$this->authorize('update', $promptTemplate);
|
|
|
|
return view('prompt-templates.edit', compact('promptTemplate'));
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*/
|
|
public function update(UpdatePromptTemplateRequest $request, \App\Models\PromptTemplate $promptTemplate): RedirectResponse
|
|
{
|
|
$this->authorize('update', $promptTemplate);
|
|
|
|
$data = $request->validated();
|
|
|
|
if (isset($data['template_data']) && is_string($data['template_data'])) {
|
|
$data['template_data'] = json_decode($data['template_data'], true);
|
|
}
|
|
|
|
$this->promptTemplateService->update($promptTemplate, $data);
|
|
|
|
return redirect()->route('prompt-templates.index')
|
|
->with('success', 'Template updated successfully.');
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*/
|
|
public function destroy(\App\Models\PromptTemplate $promptTemplate): RedirectResponse
|
|
{
|
|
$this->authorize('delete', $promptTemplate);
|
|
|
|
$this->promptTemplateService->destroy($promptTemplate);
|
|
|
|
return redirect()->route('prompt-templates.index')
|
|
->with('success', 'Template deleted successfully.');
|
|
}
|
|
|
|
/**
|
|
* Get all templates as JSON for the dropdown.
|
|
*/
|
|
public function api(): JsonResponse
|
|
{
|
|
$templates = PromptTemplate::where('is_public', true)
|
|
->orWhere('user_id', auth()->id())
|
|
->get(['name', 'template_data']);
|
|
|
|
$result = [];
|
|
|
|
foreach ($templates as $template) {
|
|
$data = $template->template_data;
|
|
$result[$template->name] = [
|
|
'title' => $data['title'] ?? $template->name,
|
|
'objective' => $data['objective'] ?? '',
|
|
'context' => $data['context'] ?? '',
|
|
'persona' => $data['persona'] ?? '',
|
|
'tone' => $data['tone'] ?? '',
|
|
'constraints' => $data['constraints'] ?? '',
|
|
'output_format' => $data['output_format'] ?? '',
|
|
'examples' => $data['examples'] ?? '',
|
|
'variables' => $data['variables'] ?? '',
|
|
'temperature' => $data['temperature'] ?? 0.7,
|
|
'max_tokens' => $data['max_tokens'] ?? 1024,
|
|
'standard_files' => $data['standard_files'] ?? true,
|
|
];
|
|
}
|
|
|
|
return response()->json($result);
|
|
}
|
|
}
|