From d18f8894fbdaa1f581e416d2052b9057c9bcc0bb Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 20 Dec 2020 07:58:16 -0300 Subject: [PATCH 1/6] =?UTF-8?q?Task=201=C2=B0:=20crud=20de=20usu=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Domain/Form/Type/UsuarioType.php | 60 +++++++++++++ src/Domain/Services/UsuarioService.php | 54 ++++++++++++ .../UsuarioAtribuicaoController.php | 86 +++++++++++++++++-- .../Repository/UsuarioRepository.php | 25 ++++++ templates/header.html.twig | 2 +- templates/novo-usuario.html.twig | 30 +++++++ templates/usuarios-listar.html.twig | 9 +- 7 files changed, 256 insertions(+), 10 deletions(-) create mode 100644 src/Domain/Form/Type/UsuarioType.php create mode 100644 src/Domain/Services/UsuarioService.php create mode 100644 templates/novo-usuario.html.twig diff --git a/src/Domain/Form/Type/UsuarioType.php b/src/Domain/Form/Type/UsuarioType.php new file mode 100644 index 0000000..89c0948 --- /dev/null +++ b/src/Domain/Form/Type/UsuarioType.php @@ -0,0 +1,60 @@ +add('email', TextType::class, ['label' => 'Email']) + ->add('nome', TextType::class, ['label' => 'Nome']) + ->add('password', PasswordType::class, ['label' => 'Senha']) + ->add('roles', ChoiceType::class, ['label' => 'Permissão', + //'multiple' => false, + 'choices' => [ + 'ROLE_ADMIM' => 'ROLE_ADMIM', + 'ROLE_COMUN' => 'ROLE_COMUM', + ], + ]) + ->add('salvar', SubmitType::class); + + $builder->get('roles') + ->addModelTransformer(new CallbackTransformer( + function ($rolesArray) { + // transform the array to a string + return is_array($rolesArray)? $rolesArray[0]: null; + }, + function ($rolesString) { + // transform the string back to an array + return [$rolesString]; + } + )); + } + + /** + * @param OptionsResolver $resolver + */ + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Usuario::class + ]); + } +} diff --git a/src/Domain/Services/UsuarioService.php b/src/Domain/Services/UsuarioService.php new file mode 100644 index 0000000..f8b6ddf --- /dev/null +++ b/src/Domain/Services/UsuarioService.php @@ -0,0 +1,54 @@ +usuarioRepository = $usuarioRepository; + } + + /** + * @param Usuario $usuario + */ + public function salvar(Usuario $usuario) + { + $this->usuarioRepository->salvar($usuario); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->usuarioRepository->listar(); + } + + /** + * @param Usuario $usuario + */ + public function remover(Usuario $usuario) + { + $this->usuarioRepository->remover($usuario); + } +} diff --git a/src/Infrastructure/Controller/UsuarioAtribuicaoController.php b/src/Infrastructure/Controller/UsuarioAtribuicaoController.php index 3ee089d..700d1d6 100644 --- a/src/Infrastructure/Controller/UsuarioAtribuicaoController.php +++ b/src/Infrastructure/Controller/UsuarioAtribuicaoController.php @@ -2,13 +2,16 @@ namespace App\Infrastructure\Controller; - +use App\Domain\Form\Type\UsuarioType; use App\Domain\Model\Usuario; use App\Domain\Model\UsuarioAtribuicao; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\HttpFoundation\Request; +use App\Domain\Services\UsuarioService; +use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; /** * Class UsuarioAtribuicaoController @@ -18,6 +21,13 @@ class UsuarioAtribuicaoController extends AbstractController { + private UsuarioService $usuarioService; + + public function __construct(UsuarioService $usuarioService) + { + $this->usuarioService = $usuarioService; + } + /** * @Route("/tasks" , name="usuario_tasks") */ @@ -43,11 +53,13 @@ public function listarAtribuicoes() */ public function listarUsuarios() { - $usuarios = $this - ->getDoctrine() - ->getRepository(Usuario::class) - ->findAll() - ; +// $usuarios = $this +// ->getDoctrine() +// ->getRepository(Usuario::class) +// ->findAll() +// ; + + $usuarios = $this->usuarioService->listar(); return $this->render('usuarios-listar.html.twig', [ @@ -55,5 +67,67 @@ public function listarUsuarios() ] ); } + + /** + * @Route("/cadastrar", name="usuario_cadastrar") + */ + public function cadastrar(Request $request) + { + $form = $this->createForm(UsuarioType::class); + $form->handleRequest($request); + + if ($form->isSubmitted()) { + $usuario = $form->getData(); + $this->usuarioService->salvar($usuario); + $this->addFlash('success','Usuário Salvo com sucesso'); + + return $this->redirectToRoute('usuario_listar'); + } + + return $this->render('novo-usuario.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/editar/{usuario}", name="editar_usuarios") + * @ParamConverter("usuario", class="App\Domain\Model\Usuario") + * @param Usuario $usuario + */ + public function editar(Usuario $usuario, Request $request) + { + $form = $this->createForm(UsuarioType::class, $usuario); + $form->handleRequest($request); + + if ($form->isSubmitted()) { + + $usuario = $form->getData(); + $this->usuarioService->salvar($usuario); + + $this->addFlash('success','Usuário Alterado com sucesso'); + + return $this->redirectToRoute('usuario_listar'); + } + + return $this->render('novo-usuario.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/remover/{usuario}", name="remover_usuarios") + * @ParamConverter("usuario", class="App\Domain\Model\Usuario") + * @param Usuario $usuario + */ + public function remover(Usuario $usuario, Request $request) + { + + $this->usuarioService->remover($usuario); + + $this->addFlash('success','Usuário Removido com sucesso'); + + return $this->redirectToRoute('usuario_listar'); + + } } diff --git a/src/Infrastructure/Repository/UsuarioRepository.php b/src/Infrastructure/Repository/UsuarioRepository.php index 524680c..68650e1 100644 --- a/src/Infrastructure/Repository/UsuarioRepository.php +++ b/src/Infrastructure/Repository/UsuarioRepository.php @@ -47,4 +47,29 @@ public function findOneBySomeField($value): ?Usuario ; } */ + + /** + * @param Usuario $projeto + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException + */ + public function salvar(Usuario $usuario): void + { + $this->getEntityManager()->persist($usuario); + $this->getEntityManager()->flush(); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->findAll(); + } + + public function remover(Usuario $usuario): void + { + $this->getEntityManager()->remove($usuario); + $this->getEntityManager()->flush(); + } } diff --git a/templates/header.html.twig b/templates/header.html.twig index c2b89c6..f5ee8ec 100644 --- a/templates/header.html.twig +++ b/templates/header.html.twig @@ -80,7 +80,7 @@ data-parent="#accordionSidebar">
Listar - Cadastrar + Cadastrar
diff --git a/templates/novo-usuario.html.twig b/templates/novo-usuario.html.twig new file mode 100644 index 0000000..5b54d85 --- /dev/null +++ b/templates/novo-usuario.html.twig @@ -0,0 +1,30 @@ +{% include 'header.html.twig' %} + +
+

Cadastrar Novo Usuário

+ {{ form_start(form) }} +
+
+ {{ form_row(form.nome) }} +
+
+
+
+ {{ form_row(form.email) }} +
+
+
+
+ {{ form_row(form.password) }} +
+
+
+
+ {{ form_row(form.roles) }} +
+
+ + +
+ +{% include 'footer.html.twig' %} diff --git a/templates/usuarios-listar.html.twig b/templates/usuarios-listar.html.twig index 5ebf1e7..0263958 100644 --- a/templates/usuarios-listar.html.twig +++ b/templates/usuarios-listar.html.twig @@ -12,7 +12,7 @@ Email roles Password - Visualizar + Ações @@ -22,7 +22,7 @@ Email roles Password - Visualizar + Ações @@ -33,9 +33,12 @@ {{ usuario.rolesString }} *********** - + + + + {% endfor %} From a8b444d8da4905a5ddbe81fe751c71288fbae813 Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 20 Dec 2020 18:05:03 -0300 Subject: [PATCH 2/6] =?UTF-8?q?Task=202=C2=B0:=20Crud=20de=20status=20das?= =?UTF-8?q?=20tasks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Domain/Form/Type/StatusType.php | 36 ++++++ src/Domain/Services/StatusService.php | 53 +++++++++ .../Controller/StatusController.php | 112 ++++++++++++++++++ .../Repository/StatusRepository.php | 41 +++++++ templates/header.html.twig | 15 ++- templates/novo-status.html.twig | 15 +++ templates/status-listar.html.twig | 44 +++++++ 7 files changed, 315 insertions(+), 1 deletion(-) create mode 100644 src/Domain/Form/Type/StatusType.php create mode 100644 src/Domain/Services/StatusService.php create mode 100644 src/Infrastructure/Controller/StatusController.php create mode 100644 src/Infrastructure/Repository/StatusRepository.php create mode 100644 templates/novo-status.html.twig create mode 100644 templates/status-listar.html.twig diff --git a/src/Domain/Form/Type/StatusType.php b/src/Domain/Form/Type/StatusType.php new file mode 100644 index 0000000..70125d4 --- /dev/null +++ b/src/Domain/Form/Type/StatusType.php @@ -0,0 +1,36 @@ +add('descricao', TextType::class, ['label' => 'Descrição']) + ->add('salvar', SubmitType::class); + } + + /** + * @param OptionsResolver $resolver + */ + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Status::class + ]); + } +} diff --git a/src/Domain/Services/StatusService.php b/src/Domain/Services/StatusService.php new file mode 100644 index 0000000..10f30dc --- /dev/null +++ b/src/Domain/Services/StatusService.php @@ -0,0 +1,53 @@ +statusRepository = $statusRepository; + } + + /** + * @param Status $status + */ + public function salvar(Status $status) + { + $this->statusRepository->salvar($status); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->statusRepository->listar(); + } + + /** + * @param Status $status + */ + public function remover(Status $status) + { + $this->statusRepository->remover($status); + } +} diff --git a/src/Infrastructure/Controller/StatusController.php b/src/Infrastructure/Controller/StatusController.php new file mode 100644 index 0000000..9504eba --- /dev/null +++ b/src/Infrastructure/Controller/StatusController.php @@ -0,0 +1,112 @@ +statusService = $statusService; + } + + + + /** + * @Route("/listar" , name="status_listar") + */ + public function listar() + { + + $status = $this->statusService->listar(); + + return $this->render('status-listar.html.twig', + [ + 'status' => $status, + ] + ); + } + + /** + * @Route("/cadastrar", name="status_cadastrar") + */ + 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 Salvo com sucesso'); + + return $this->redirectToRoute('status_listar'); + } + + return $this->render('novo-status.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/editar/{status}", name="editar_status") + * @ParamConverter("status", class="App\Domain\Model\Status") + * @param Status $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->redirectToRoute('status_listar'); + } + + return $this->render('novo-status.html.twig', [ + 'form' => $form->createView(), + ]); + } + + /** + * @Route("/remover/{status}", name="remover_status") + * @ParamConverter("status", class="App\Domain\Model\Status") + * @param Status $status + */ + public function remover(Status $status, Request $request) + { + + $this->statusService->remover($status); + + $this->addFlash('success','Status Removido com sucesso'); + + return $this->redirectToRoute('status_listar'); + + } + + + +} diff --git a/src/Infrastructure/Repository/StatusRepository.php b/src/Infrastructure/Repository/StatusRepository.php new file mode 100644 index 0000000..10bb228 --- /dev/null +++ b/src/Infrastructure/Repository/StatusRepository.php @@ -0,0 +1,41 @@ +getEntityManager()->persist($status); + $this->getEntityManager()->flush(); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->findAll(); + } + + public function remover(Status $status): void + { + $this->getEntityManager()->remove($status); + $this->getEntityManager()->flush(); + } +} diff --git a/templates/header.html.twig b/templates/header.html.twig index f5ee8ec..8d195f0 100644 --- a/templates/header.html.twig +++ b/templates/header.html.twig @@ -93,7 +93,20 @@ diff --git a/templates/novo-status.html.twig b/templates/novo-status.html.twig new file mode 100644 index 0000000..54e404b --- /dev/null +++ b/templates/novo-status.html.twig @@ -0,0 +1,15 @@ +{% include 'header.html.twig' %} + +
+

Cadastrar Novo Status

+ {{ form_start(form) }} +
+
+ {{ form_row(form.descricao) }} +
+
+ + +
+ +{% include 'footer.html.twig' %} diff --git a/templates/status-listar.html.twig b/templates/status-listar.html.twig new file mode 100644 index 0000000..3001633 --- /dev/null +++ b/templates/status-listar.html.twig @@ -0,0 +1,44 @@ +{% include 'header.html.twig' %} + +
+
+
+
+ + + + + + + + + + + + + + + + + {% for sts in status %} + + + + + {% endfor %} + +
IdDescriçãoAções
IdDescriçãoAções
{{ sts.id }}{{ sts.descricao }} + + + + + + +
+
+
+
+
+ + +{% include 'footer.html.twig' %} From 56aac4518f689c4d10246d18812cda43cce6bde0 Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 20 Dec 2020 22:32:31 -0300 Subject: [PATCH 3/6] =?UTF-8?q?3=C2=B0=20Task:=20Melhoria=20nos=20bot?= =?UTF-8?q?=C3=B5es=20e=20adicionar=20botoes=20de=20voltar=20onde=20n?= =?UTF-8?q?=C3=A3o=20tiver;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/lista-projetos.html.twig | 12 ++++++------ templates/novo-projeto.html.twig | 3 +++ templates/novo-status.html.twig | 3 +++ templates/novo-usuario.html.twig | 3 +++ templates/projeto.html.twig | 12 ++++++------ templates/status-listar.html.twig | 2 +- templates/usuarios-listar.html.twig | 2 +- 7 files changed, 23 insertions(+), 14 deletions(-) diff --git a/templates/lista-projetos.html.twig b/templates/lista-projetos.html.twig index 65ee7b4..5205404 100644 --- a/templates/lista-projetos.html.twig +++ b/templates/lista-projetos.html.twig @@ -14,7 +14,7 @@ Descricao Gerente Data Cadastro - + Ações @@ -23,7 +23,7 @@ Descricao Gerente Data Cadastro - + Ações @@ -34,11 +34,11 @@ {{ projeto.gerente }} {{ projeto.dtCadastro| date("m/d/Y") }} - - + + - - + + diff --git a/templates/novo-projeto.html.twig b/templates/novo-projeto.html.twig index 717e35e..ada77e0 100644 --- a/templates/novo-projeto.html.twig +++ b/templates/novo-projeto.html.twig @@ -24,6 +24,9 @@ + + + {% include 'footer.html.twig' %} diff --git a/templates/novo-status.html.twig b/templates/novo-status.html.twig index 54e404b..afe8bb2 100644 --- a/templates/novo-status.html.twig +++ b/templates/novo-status.html.twig @@ -10,6 +10,9 @@ + + + {% include 'footer.html.twig' %} diff --git a/templates/novo-usuario.html.twig b/templates/novo-usuario.html.twig index 5b54d85..be3e347 100644 --- a/templates/novo-usuario.html.twig +++ b/templates/novo-usuario.html.twig @@ -25,6 +25,9 @@ + + + {% include 'footer.html.twig' %} diff --git a/templates/projeto.html.twig b/templates/projeto.html.twig index f1c22ff..a484eed 100644 --- a/templates/projeto.html.twig +++ b/templates/projeto.html.twig @@ -28,7 +28,7 @@ Data Cadastro Data Conclusao Status - Visualizar + Ações @@ -39,7 +39,7 @@ Data Cadastro Data Conclusao Status - Visualizar + Ações @@ -56,8 +56,8 @@ {{ task.dtConclusao ? task.dtConclusao| date("d/m/Y H:m") : null }} {{ task.status.descricao}} - - + + @@ -76,14 +76,14 @@ - + Voltar - + Cadastrar nova Task diff --git a/templates/status-listar.html.twig b/templates/status-listar.html.twig index 3001633..21a92b6 100644 --- a/templates/status-listar.html.twig +++ b/templates/status-listar.html.twig @@ -25,7 +25,7 @@ {{ sts.descricao }} - + diff --git a/templates/usuarios-listar.html.twig b/templates/usuarios-listar.html.twig index 0263958..2e1e9bb 100644 --- a/templates/usuarios-listar.html.twig +++ b/templates/usuarios-listar.html.twig @@ -34,7 +34,7 @@ *********** - + From 4ffdc1b5944fb4e6f2400b9cbd36297e3ba1c152 Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 20 Dec 2020 22:56:27 -0300 Subject: [PATCH 4/6] =?UTF-8?q?3=C2=B0=20Task=20:=20[Altera=C3=A7=C3=A3o]?= =?UTF-8?q?=20Melhoria=20nos=20bot=C3=B5es=20e=20adicionar=20botoes=20de?= =?UTF-8?q?=20voltar=20onde=20n=C3=A3o=20tiver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/novo-projeto.html.twig | 17 ++++++++++++++--- templates/novo-status.html.twig | 18 ++++++++++++++---- templates/novo-task.html.twig | 14 +++++++------- templates/novo-usuario.html.twig | 16 +++++++++++++--- templates/projeto.html.twig | 4 ++-- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/templates/novo-projeto.html.twig b/templates/novo-projeto.html.twig index ada77e0..ecacc3e 100644 --- a/templates/novo-projeto.html.twig +++ b/templates/novo-projeto.html.twig @@ -23,10 +23,21 @@ {{ form_row(form.gerente) }} - - - + + + + + + + + Voltar + {% include 'footer.html.twig' %} diff --git a/templates/novo-status.html.twig b/templates/novo-status.html.twig index afe8bb2..118e431 100644 --- a/templates/novo-status.html.twig +++ b/templates/novo-status.html.twig @@ -8,11 +8,21 @@ {{ form_row(form.descricao) }} - - - - + + + + + + + + Voltar + {% include 'footer.html.twig' %} diff --git a/templates/novo-task.html.twig b/templates/novo-task.html.twig index aa3e3ba..d327f80 100644 --- a/templates/novo-task.html.twig +++ b/templates/novo-task.html.twig @@ -28,16 +28,16 @@ {{ form_row(form.status) }} - - - - - + + + + Voltar diff --git a/templates/novo-usuario.html.twig b/templates/novo-usuario.html.twig index be3e347..761f9ff 100644 --- a/templates/novo-usuario.html.twig +++ b/templates/novo-usuario.html.twig @@ -24,10 +24,20 @@ - - - + + + + + + + Voltar + {% include 'footer.html.twig' %} diff --git a/templates/projeto.html.twig b/templates/projeto.html.twig index a484eed..7a4d5ab 100644 --- a/templates/projeto.html.twig +++ b/templates/projeto.html.twig @@ -74,14 +74,14 @@ - + Voltar - + From 3c605af64ebfae94a53dc5efc7a8357143439fbc Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 27 Dec 2020 18:12:13 -0300 Subject: [PATCH 5/6] =?UTF-8?q?4=C2=B0=20Task:=20Criar=20servi=C3=A7os=20e?= =?UTF-8?q?=20repositores=20para=20a=20entidade=20task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Domain/Form/Type/TaskType.php | 2 +- src/Domain/Services/TaskService.php | 55 +++++++++++++++++++ .../Controller/TaskController.php | 23 ++++---- .../Repository/TaskRepository.php | 42 ++++++++++++++ 4 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 src/Domain/Services/TaskService.php create mode 100644 src/Infrastructure/Repository/TaskRepository.php diff --git a/src/Domain/Form/Type/TaskType.php b/src/Domain/Form/Type/TaskType.php index a5f1b1c..e997e61 100644 --- a/src/Domain/Form/Type/TaskType.php +++ b/src/Domain/Form/Type/TaskType.php @@ -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', diff --git a/src/Domain/Services/TaskService.php b/src/Domain/Services/TaskService.php new file mode 100644 index 0000000..a53f13b --- /dev/null +++ b/src/Domain/Services/TaskService.php @@ -0,0 +1,55 @@ +taskRepository = $taskRepository; + } + + /** + * @param Task $status + */ + public function salvar(Task $task) + { + $this->taskRepository->salvar($task); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->taskRepository->listar(); + } + + /** + * @param Task $task + */ + public function remover(Status $task) + { + $this->taskRepository->remover($task); + } +} diff --git a/src/Infrastructure/Controller/TaskController.php b/src/Infrastructure/Controller/TaskController.php index d5db585..6afbc38 100644 --- a/src/Infrastructure/Controller/TaskController.php +++ b/src/Infrastructure/Controller/TaskController.php @@ -12,12 +12,20 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use App\Domain\Services\TaskService; /** * @Route("/task") */ class TaskController extends AbstractController { + + private TaskService $taskService; + + public function __construct(TaskService $taskService) + { + $this->taskService = $taskService; + } /** * @Route("/usuario/{id}") @@ -67,11 +75,7 @@ public function cadastrar(Projeto $projeto, Request $request) if ($form->isSubmitted()) { $task = $form->getData(); $task->setProjeto($projeto); - $doctrine = $this->getDoctrine()->getManager(); - - $doctrine->persist($task); - $doctrine->flush(); - + $this->taskService->salvar($task); $this->addFlash('success','Task Cadastrada com sucesso'); return $this->redirect('/projetos/visualizar/'.$projeto->getId()); @@ -93,12 +97,9 @@ public function editar(Task $task, Request $request) if ($form->isSubmitted()) { $task = $form->getData(); - $doctrine = $this->getDoctrine()->getManager(); - - $doctrine->persist($task); - $doctrine->flush(); - - $this->addFlash('success','Task Cadastrada com sucesso'); + + $this->taskService->salvar($task); + $this->addFlash('success','Task Alterada com sucesso'); return $this->redirect('/usuario/tasks'); } diff --git a/src/Infrastructure/Repository/TaskRepository.php b/src/Infrastructure/Repository/TaskRepository.php new file mode 100644 index 0000000..421c372 --- /dev/null +++ b/src/Infrastructure/Repository/TaskRepository.php @@ -0,0 +1,42 @@ +getEntityManager()->persist($task); + $this->getEntityManager()->flush(); + } + + /** + * @return array + */ + public function listar(): array + { + return $this->findAll(); + } + + public function remover(Task $task): void + { + $this->getEntityManager()->remove($task); + $this->getEntityManager()->flush(); + } +} From dc7d9cab63d0a4745e53e22b484a9c7d3698e8c7 Mon Sep 17 00:00:00 2001 From: juan Date: Sun, 27 Dec 2020 18:14:58 -0300 Subject: [PATCH 6/6] =?UTF-8?q?5=C2=B0=20Task:=20Inicio:=20Criar=20filtro?= =?UTF-8?q?=20para=20o=20status=20da=20task=20na=20funcionalidade=20visual?= =?UTF-8?q?izar=20projeto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Model/ProjetoRepositoryInterface.php | 2 ++ src/Domain/Services/ProjetoService.php | 5 +++++ .../Controller/ProjetoController.php | 16 ++++++++++++++ .../Repository/ProjetoRepository.php | 15 +++++++++++++ templates/projeto.html.twig | 21 +++++++++++++++++++ 5 files changed, 59 insertions(+) diff --git a/src/Domain/Model/ProjetoRepositoryInterface.php b/src/Domain/Model/ProjetoRepositoryInterface.php index ee55a03..d1be804 100644 --- a/src/Domain/Model/ProjetoRepositoryInterface.php +++ b/src/Domain/Model/ProjetoRepositoryInterface.php @@ -11,4 +11,6 @@ interface ProjetoRepositoryInterface public function salvar(Projeto $projeto): void; public function listar(): array; + + public function findByStatus($value); } diff --git a/src/Domain/Services/ProjetoService.php b/src/Domain/Services/ProjetoService.php index 17ac2bc..eb17c7b 100644 --- a/src/Domain/Services/ProjetoService.php +++ b/src/Domain/Services/ProjetoService.php @@ -41,4 +41,9 @@ public function listar(): array { return $this->projetoRepository->listar(); } + + public function findByStatus($value) + { + return $this->projetoRepository->findByStatus($value); + } } diff --git a/src/Infrastructure/Controller/ProjetoController.php b/src/Infrastructure/Controller/ProjetoController.php index 0bafe04..9cc2636 100644 --- a/src/Infrastructure/Controller/ProjetoController.php +++ b/src/Infrastructure/Controller/ProjetoController.php @@ -102,4 +102,20 @@ public function cadastrar(Request $request) 'form' => $form->createView(), ]); } + + /** + * @Route("/pesquisar", name="pesquisar_projetos") + */ + public function findByStatus() + { + $value = 'juan'; + $projeto = $this->projetoService->findByStatus($value); + $output = new \Symfony\Component\Console\Output\ConsoleOutput(); + + $output->writeln('erro'); + return $this->render('projeto.html.twig', ['projeto' => $projeto]); + //return $this->render('lista-projetos.html.twig', ['projetos' => $projetos]); + } + + } diff --git a/src/Infrastructure/Repository/ProjetoRepository.php b/src/Infrastructure/Repository/ProjetoRepository.php index 4393401..9ed81c4 100644 --- a/src/Infrastructure/Repository/ProjetoRepository.php +++ b/src/Infrastructure/Repository/ProjetoRepository.php @@ -36,4 +36,19 @@ public function listar(): array { return $this->findAll(); } + + public function findByStatus($value) + { + return $this->createQueryBuilder('u') + ->select('u') + ->innerJoin('u.tasks', 't') + ->innerJoin('t.status', 'i') + ->Where('i.id = :status') + ->setParameter('status', 2) + ->andWhere('u.id = :id') + ->setParameter('id', 32) + ->getQuery() + ->getSingleResult() + ; + } } diff --git a/templates/projeto.html.twig b/templates/projeto.html.twig index 7a4d5ab..aa734c1 100644 --- a/templates/projeto.html.twig +++ b/templates/projeto.html.twig @@ -17,6 +17,27 @@
Data de Cadastro: {{ projeto.dtCadastro| date("d/m/Y H:m") }}
+ + + + + +