Files
opnform-host-nginx/api/app/Console/Commands/GenerateTemplate.php
Chirag Chhatrala 61e9493e1e Add Template Creation Functionality in Admin Panel (#729)
* Add create template functionality in Admin Panel

- Implemented a new endpoint for creating templates in AdminController, utilizing the GenerateTemplate command.
- Added a form in the admin settings Vue component to allow users to input a template description and submit it.
- Enhanced the user experience with loading states and success/error alerts during template creation.

These changes facilitate the generation of new form templates directly from the admin interface, improving usability and functionality.

* Update template prompt validation length in AdminController

- Increased the maximum length of the 'template_prompt' field from 1000 to 4000 characters in the createTemplate method.

This change allows for more extensive template descriptions, enhancing the flexibility of template creation in the admin panel.

* Refactor template generation to use job-based approach

- Migrate template generation logic from the GenerateTemplate command to a new GenerateTemplateJob class for improved separation of concerns and better handling of asynchronous processing.
- Update AdminController to utilize the new job for generating templates, enhancing maintainability and clarity in the codebase.
- Remove unused dependencies and streamline the command's handle method for better performance and readability.

* fix lint

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2025-03-25 12:14:09 +01:00

47 lines
1022 B
PHP

<?php
namespace App\Console\Commands;
use App\Jobs\Template\GenerateTemplateJob;
use Illuminate\Console\Command;
class GenerateTemplate extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'form:generate {prompt}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Generates a new form template from a prompt';
public $generatedTemplate;
/**
* Execute the command.
*
* @return int
*/
public function handle()
{
$job = new GenerateTemplateJob($this->argument('prompt'));
$job->handle();
$this->generatedTemplate = $job->generatedTemplate;
if ($this->generatedTemplate) {
$this->info(front_url('/templates/' . $this->generatedTemplate->slug));
return Command::SUCCESS;
}
$this->error('Failed to generate template');
return Command::FAILURE;
}
}