Add command to create Forms
This commit is contained in:
parent
3c5d9d3cab
commit
62b3501427
1 changed files with 137 additions and 0 deletions
137
commands/CreateFormsCommand.php
Normal file
137
commands/CreateFormsCommand.php
Normal file
|
@ -0,0 +1,137 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace YesWiki\Meeo\Commands;
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Command\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
|
use YesWiki\Wiki;
|
||||||
|
use YesWiki\Bazar\Service\FormManager;
|
||||||
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
|
|
||||||
|
class CreateFormsCommand extends Command
|
||||||
|
{
|
||||||
|
protected $wiki;
|
||||||
|
|
||||||
|
public function __construct(Wiki &$wiki)
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->wiki = $wiki;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function configure()
|
||||||
|
{
|
||||||
|
$this
|
||||||
|
// the name of the command : ./yeswicli helloworld:hello"
|
||||||
|
->setName('meeo:createforms')
|
||||||
|
// the short description shown while running "./yeswicli list"
|
||||||
|
->setDescription('Permet de créer les formulaires pour ')
|
||||||
|
|
||||||
|
// the full command description shown when running the command with
|
||||||
|
// the "--help" option
|
||||||
|
// ->setHelp("This command display the message \"Hello !\" with options for uppercase of add a username.\n" .
|
||||||
|
// "The argument \"username\" can be used to add a username. Example : \n" .
|
||||||
|
// "Command line'./yeswicli helloworld:hello \"John Smith\"' gives \"Hello John Smith !\"")
|
||||||
|
|
||||||
|
// add argument for username
|
||||||
|
// second parameter could be InputArgument::OPTIONAL <=> null, InputArgument::REQUIRED, InputArgument::IS_ARRAY
|
||||||
|
// third parameter is the description
|
||||||
|
// forth parameter is default value
|
||||||
|
// ->addArgument('username', InputArgument::OPTIONAL, 'Username')
|
||||||
|
|
||||||
|
// add option to display output as UPPERCASE
|
||||||
|
// second parameter null|string is shortcut
|
||||||
|
// third parameter null|int could be InputOption::VALUE_NONE <=> null, InputOption::VALUE_REQUIRED
|
||||||
|
// , InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NEGATABLE
|
||||||
|
// forth parameter is the description
|
||||||
|
// ->addOption('uppercase', 'u', InputOption::VALUE_NONE, 'Display output in UPPERCASE')
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function absencesForm(FormManager $formManager, $meeo_config)
|
||||||
|
{
|
||||||
|
$existingForm = $formManager->getOne($meeo_config['absences']['formId']);
|
||||||
|
if ($existingForm)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"bn_id_nature" => $meeo_config['absences']['formId'],
|
||||||
|
"bn_label_nature" => "Absences",
|
||||||
|
"bn_description" => "Absences des élèves",
|
||||||
|
"bn_condition" => "",
|
||||||
|
"bn_sem_context" => "",
|
||||||
|
"bn_sem_type" => "",
|
||||||
|
"bn_sem_use_template" => "1",
|
||||||
|
"bn_template" => <<<EOT
|
||||||
|
titre***Absence : {{bf_eleve}} - {{bf_date_debut_evenement}}***Titre Automatique***
|
||||||
|
listefiche***5***Elève*** *** *** *** *** ***1*** *** *** * *** * *** *** *** ***
|
||||||
|
listedatedeb***bf_date_debut_evenement***Date*** *** *** *** *** ***1*** *** *** * *** * *** *** *** ***
|
||||||
|
textelong***bf_commentaire***Commentaire*** *** *** *** ***wiki***0*** *** *** * *** * *** *** *** ***
|
||||||
|
EOT,
|
||||||
|
"bn_ce_i18n" => "fr-FR",
|
||||||
|
"bn_only_one_entry" => "N",
|
||||||
|
"bn_only_one_entry_message" => null
|
||||||
|
];
|
||||||
|
|
||||||
|
return $formManager->create($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function notesForm(FormManager $formManager, $meeo_config)
|
||||||
|
{
|
||||||
|
$existingForm = $formManager->getOne($meeo_config['notes']['formId']);
|
||||||
|
if ($existingForm)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
"bn_id_nature" => $meeo_config['notes']['formId'],
|
||||||
|
"bn_label_nature" => "Notes",
|
||||||
|
"bn_description" => "Notes des élèves",
|
||||||
|
"bn_condition" => "",
|
||||||
|
"bn_sem_context" => "",
|
||||||
|
"bn_sem_type" => "",
|
||||||
|
"bn_sem_use_template" => "1",
|
||||||
|
"bn_template" => <<<EOT
|
||||||
|
titre*** ***Titre Automatique***
|
||||||
|
listefiche***5***Elève*** *** *** ***bf_eleve*** ***1*** *** *** * *** * *** *** *** ***
|
||||||
|
texte***bf_note***Note***0***20*** *** ***number***0*** *** *** * *** * *** *** *** ***
|
||||||
|
texte***bf_coef***Coefficient***0.5***10***1*** ***number***0*** *** *** * *** * *** *** *** ***
|
||||||
|
EOT,
|
||||||
|
"bn_ce_i18n" => "fr-FR",
|
||||||
|
"bn_only_one_entry" => "N",
|
||||||
|
"bn_only_one_entry_message" => null
|
||||||
|
];
|
||||||
|
|
||||||
|
return $formManager->create($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function execute(InputInterface $input, OutputInterface $output)
|
||||||
|
{
|
||||||
|
|
||||||
|
$formManager = $this->wiki->services->get(FormManager::class);
|
||||||
|
$params = $this->wiki->services->get(ParameterBagInterface::class);
|
||||||
|
if (!$params->has('meeo')) {
|
||||||
|
$result = $formManager->getAll();
|
||||||
|
$lastFormId = array_key_last($result);
|
||||||
|
$meeo_config = [
|
||||||
|
'absences' => [
|
||||||
|
'formId' => $lastFormId,
|
||||||
|
],
|
||||||
|
'notes' => [
|
||||||
|
'formId' => $lastFormId + 1,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
$meeo_config = $params->get('meeo');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->absencesForm($formManager, $meeo_config))
|
||||||
|
return Command::FAILURE;
|
||||||
|
|
||||||
|
if (!$this->notesForm($formManager, $meeo_config))
|
||||||
|
return Command::FAILURE;
|
||||||
|
|
||||||
|
return Command::SUCCESS;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue