Sistema web para crear proyecto web nuevo
This commit is contained in:
75
common/Controller/Web/Create.php
Normal file
75
common/Controller/Web/Create.php
Normal file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
namespace ProVM\Projects\Common\Controller\Web;
|
||||
|
||||
use Psr\Http\Message\RequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use ProVM\Common\Alias\View;
|
||||
use ProVM\Common\Service\Composer;
|
||||
use ProVM\Projects\Common\Service\Projects;
|
||||
|
||||
class Create {
|
||||
/**
|
||||
* Step 1
|
||||
* Formulario de datos
|
||||
*/
|
||||
public function __invoke(Request $request, Response $response, View $view): Response {
|
||||
$defaults = (object) [
|
||||
'require' => [
|
||||
'slim/slim',
|
||||
'nyholm/psr7',
|
||||
'nyholm/psr7-server',
|
||||
'php-di/slim-bridge',
|
||||
'rubellum/slim-blade-view',
|
||||
'nesbot/carbon'
|
||||
],
|
||||
'require-dev' => [
|
||||
'phpunit/phpunit',
|
||||
'kint-php/kint'
|
||||
]
|
||||
];
|
||||
return $view->render($response, 'create.step1', compact('defaults'));
|
||||
}
|
||||
/**
|
||||
* Step 2
|
||||
* Revision y confirmacion de datos
|
||||
*/
|
||||
public function step2(Request $request, Response $response, Composer $composer, Projects $service, View $view): Response {
|
||||
$post = $request->getParsedBody();
|
||||
$name = $post['nombre'];
|
||||
$exists = $service->exists($name);
|
||||
$require = explode(',', $post['dependencias'][0]);
|
||||
$require = $composer->getLatest($require, Composer::MAYOR);
|
||||
$require_dev = explode(',', $post['dependencias-dev'][0]);
|
||||
$require_dev = $composer->getLatest($require_dev, Composer::MAYOR);
|
||||
$json = json_encode([
|
||||
'name' => implode('/', ['provm', $name]),
|
||||
'descripcion' => $post['descripcion'],
|
||||
'type' => 'project',
|
||||
'require' => $require,
|
||||
'require-dev' => $require_dev,
|
||||
'authors' => [
|
||||
[
|
||||
'name' => 'Aldarien',
|
||||
'email' => 'aldarien85@gmail.com'
|
||||
]
|
||||
],
|
||||
'autoload' => [
|
||||
'psr-4' => [
|
||||
implode("\\", [
|
||||
'ProVM',
|
||||
ucwords($post['nombre']),
|
||||
'Common'
|
||||
]) . "\\" => 'common'
|
||||
]
|
||||
]
|
||||
], \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE);
|
||||
return $view->render($response, 'create.step2', ['step' => 2, 'exists' => $exists, 'composer' => $json]);
|
||||
}
|
||||
public function step3(Request $request, Response $response, Projects $service, View $view): Response {
|
||||
$post = $request->getParsedBody();
|
||||
$name = explode('/', json_decode($post['composer'])->name)[1];
|
||||
$composer = $post['composer'];
|
||||
$step = 3;
|
||||
return $view->render($response, 'create.step3', compact('step', 'name', 'composer'));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user