Files
project/common/Controller/Web/Create.php

76 lines
2.4 KiB
PHP
Raw Normal View History

<?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'));
}
}