Skip to content
Open
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@
/vendor/
###< symfony/framework-bundle ###
/.idea/
/nbproject/
.project
Binary file modified Data/tasks.db
Binary file not shown.
35 changes: 35 additions & 0 deletions src/Domain/Form/Type/StatusType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

namespace App\Domain\Form\Type;

use App\Domain\Model\Status;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class StatusType extends AbstractType
{

/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('descricao', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Descrição da Task ']])
->add('salvar', SubmitType::class);
}

/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Status::class
]);
}
}
2 changes: 1 addition & 1 deletion src/Domain/Form/Type/TaskType.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class TaskType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('nome', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Nome do Projeto ']])
->add('nome', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Nome da Task ']])
->add('descricao', TextareaType::class)
->add('dtCadastro', DateType::class, [
'label' => 'Data de Cadastro',
Expand Down
16 changes: 16 additions & 0 deletions src/Domain/Repository/ProjetoRepositoryInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace App\Domain\Repository;

use \App\Domain\Model\Projeto;

/**
* Class ProjetoRepositoryInterface
* @package App\Domain\Repository
*/
interface ProjetoRepositoryInterface
{
public function salvar(Projeto $projeto): void;

public function listar(): array;
}
16 changes: 16 additions & 0 deletions src/Domain/Repository/StatusRepositoryInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?php

namespace App\Domain\Repository;

use \App\Domain\Model\Status;

/**
* Class StatusRepositoryInterface
* @package App\Domain\Repository
*/
interface StatusRepositoryInterface
{
public function salvar(Status $status): void;

public function listar(): array;
}
21 changes: 21 additions & 0 deletions src/Domain/Repository/TaskRepositoryInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace App\Domain\Repository;

use \App\Domain\Model\Projeto;
use \App\Domain\Model\Task;

/**
* Class TaskRepositoryInterface
* @package App\Domain\Repository
*/
interface TaskRepositoryInterface
{
public function salvar(Task $task): void;

public function listar(): array;

public function listarPorProjeto(Projeto $projeto);

public function deletar(Task $task): void;
}
2 changes: 1 addition & 1 deletion src/Domain/Services/ProjetoService.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace App\Domain\Services;

use App\Domain\Model\Projeto;
use App\Domain\Model\ProjetoRepositoryInterface;
use App\Domain\Repository\ProjetoRepositoryInterface;

/**
* Class ProjetoService
Expand Down
44 changes: 44 additions & 0 deletions src/Domain/Services/StatusService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace App\Domain\Services;

use App\Domain\Model\Status;
use App\Domain\Repository\StatusRepositoryInterface;

/**
* Class StatusService
* @package App\Domain\Services
*/
class StatusService
{

/**
* @var StatusRepositoryInterface
*/
public StatusRepositoryInterface $statusRepository;

/**
* StatusService constructor.
* @param StatusRepositoryInterface $statusRepository
*/
public function __construct(StatusRepositoryInterface $statusRepository)
{
$this->statusRepository = $statusRepository;
}

/**
* @param Status $status
*/
public function salvar(Status $status)
{
$this->statusRepository->salvar($status);
}

/**
* @return array
*/
public function listar(): array
{
return $this->statusRepository->listar();
}
}
55 changes: 55 additions & 0 deletions src/Domain/Services/TaskService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace App\Domain\Services;

use App\Domain\Model\Projeto;
use App\Domain\Model\Task;
use App\Domain\Repository\TaskRepositoryInterface;

/**
* Class TaskService
* @package App\Domain\Services
*/
class TaskService
{

/**
* @var TaskRepositoryInterface
*/
public TaskRepositoryInterface $taskRepository;

/**
* TaskService constructor.
* @param TaskRepositoryInterface $taskRepository
*/
public function __construct(TaskRepositoryInterface $taskRepository)
{
$this->taskRepository = $taskRepository;
}

/**
* @param Task $task
*/
public function salvar(Task $task)
{
$this->taskRepository->salvar($task);
}

/**
* @return array
*/
public function listar(): array
{
return $this->taskRepository->listar();
}

public function listarPorProjeto(Projeto $projeto): array
{
return $this->taskRepository->listarPorProjeto($projeto);
}

public function deletar(Task $task): void
{
$this->taskRepository->deletar($task);
}
}
82 changes: 82 additions & 0 deletions src/Infrastructure/Controller/StatusController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?php

namespace App\Infrastructure\Controller;

use App\Domain\Form\Type\StatusType;
use App\Domain\Model\Status;
use \App\Domain\Services\StatusService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

/**
* @Route("/status")
*/
class StatusController extends AbstractController
{
private StatusService $statusService;

public function __construct(StatusService $statusService)
{
$this->statusService = $statusService;
}

/**
* @Route("/listar", name="status_listar")
*/
public function listarStatus()
{
$statusList = $this->statusService->listar();

return $this->render('lista-status.html.twig', [
'statusList' => $statusList
]);
}

/**
* @Route("/cadastrar", name="status_cadastrar", methods={"GET", "POST"})
*/
public function cadastrar(Request $request)
{
$form = $this->createForm(StatusType::class);
$form->handleRequest($request);

if ($form->isSubmitted()) {
$status = $form->getData();
$this->statusService->salvar($status);

$this->addFlash('success','Status Cadastrada com sucesso');

return $this->redirect('/status/listar');
}

return $this->render('novo-status.html.twig', [
'form' => $form->createView()
]);
}

/**
* @Route("/editar/{status}", name="status_editar", methods={"GET", "POST"})
* @ParamConverter("status", class="App\Domain\Model\Status")
*/
public function editar(Status $status, Request $request)
{
$form = $this->createForm(StatusType::class, $status);
$form->handleRequest($request);

if ($form->isSubmitted()) {
$status = $form->getData();
$this->statusService->salvar($status);

$this->addFlash('success','Status alterado com sucesso');

return $this->redirect('/status/listar');
}

return $this->render('novo-status.html.twig', [
'form' => $form->createView()
]);
}

}
Loading