From e7d6b66f70fefb33a6911a3c38eb68fea0d1a533 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Fri, 14 Feb 2025 18:17:31 +0100 Subject: [PATCH] style forms, and associate products with user --- assets/js/parts/main.js | 3 +- assets/styles/app.scss | 1 + assets/styles/pages/_forms.scss | 43 ++++++++++++++++++++ assets/styles/pages/global.scss | 7 +--- src/Controller/GroupOfProductsController.php | 11 +++++ src/Controller/ProductController.php | 13 ++++++ src/Entity/GroupOfProducts.php | 4 +- src/Form/GroupOfProducts1Type.php | 6 ++- src/Form/Product1Type.php | 8 ++-- src/Form/ProductType.php | 2 +- templates/base.html.twig | 13 +++--- 11 files changed, 90 insertions(+), 21 deletions(-) create mode 100644 assets/styles/pages/_forms.scss diff --git a/assets/js/parts/main.js b/assets/js/parts/main.js index 56d6e622..a823696e 100755 --- a/assets/js/parts/main.js +++ b/assets/js/parts/main.js @@ -209,7 +209,8 @@ angular console.log('fetch products...'); $http.get('logged/get-my-products').then((rep) => { - console.log('ok', rep); + // console.log('ok', rep); + console.log('rep.data', rep.data) customCategories = []; for (let c of rep.data.categories) { c.hidden = false; diff --git a/assets/styles/app.scss b/assets/styles/app.scss index 1b03e394..3f758675 100755 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -8,6 +8,7 @@ @import 'pages/nav'; @import 'pages/demo'; @import 'pages/home'; +@import 'pages/forms'; @import 'pages/history'; @import 'pages/dashboard'; @import 'pages/special'; diff --git a/assets/styles/pages/_forms.scss b/assets/styles/pages/_forms.scss new file mode 100644 index 00000000..eb3d893f --- /dev/null +++ b/assets/styles/pages/_forms.scss @@ -0,0 +1,43 @@ +form { + label{ + min-width: 300px; + padding-right: 2rem; + padding-bottom: 1rem; + margin-bottom: 0.5rem; + } + textarea, + select { + padding: 1rem 2rem; + border-radius: 0.5rem; + border: solid 1px #ccc; + background: #fff; + margin-bottom: 0.5rem; + width: 100%; + min-width: 50vw; + } + input { + padding: 1rem 2rem; + border-radius: 0.5rem; + border: solid 1px #ccc; + margin-bottom: 0.5rem; + width: 100%; + min-width: 30vw; + + [type="text"] { + padding: 1rem 2rem; + border-radius: 0.5rem; + } + [type="textarea"] { + padding: 1rem 2rem; + border-radius: 0.5rem; + } + } + + button.btn, a { + padding: 1rem 2rem; + border-radius: 0.5rem; + border: solid 1px #ccc; + background: blue; + margin-bottom: 0.5rem; + } +} \ No newline at end of file diff --git a/assets/styles/pages/global.scss b/assets/styles/pages/global.scss index bf34d26b..848fc568 100755 --- a/assets/styles/pages/global.scss +++ b/assets/styles/pages/global.scss @@ -8,11 +8,8 @@ body { font-size: 1rem; line-height: 2rem; } - -.masthead-avatar { - width: 2rem; - max-height: 2rem; - display: inline-block; +.main-container-box{ + padding-left: 5rem; } #wrapper { diff --git a/src/Controller/GroupOfProductsController.php b/src/Controller/GroupOfProductsController.php index c5a12b03..80f93ed9 100644 --- a/src/Controller/GroupOfProductsController.php +++ b/src/Controller/GroupOfProductsController.php @@ -29,6 +29,17 @@ final class GroupOfProductsController extends AbstractController $form = $this->createForm(GroupOfProducts1Type::class, $groupOfProduct); $form->handleRequest($request); + $userFound = $this->getUser(); + if (!$userFound) { + return $this->redirectToRoute('app_login'); + } + $userFound = $this->getUser(); + if($userFound){ + $groupOfProduct->setUser($userFound); + $userFound->addGroupOfProduct($groupOfProduct); + $entityManager->persist($userFound); + } + if ($form->isSubmitted() && $form->isValid()) { $entityManager->persist($groupOfProduct); $entityManager->flush(); diff --git a/src/Controller/ProductController.php b/src/Controller/ProductController.php index 0a100920..9672f172 100644 --- a/src/Controller/ProductController.php +++ b/src/Controller/ProductController.php @@ -29,6 +29,13 @@ final class ProductController extends AbstractController $form = $this->createForm(Product1Type::class, $product); $form->handleRequest($request); + $userFound = $this->getUser(); + if($userFound){ + $product->setUser($userFound); + $userFound->addProduct($product); + $entityManager->persist($userFound); + } + if ($form->isSubmitted() && $form->isValid()) { $entityManager->persist($product); $entityManager->flush(); @@ -56,6 +63,12 @@ final class ProductController extends AbstractController $form = $this->createForm(Product1Type::class, $product); $form->handleRequest($request); + $userFound = $this->getUser(); + if($userFound){ + $product->setUser($userFound); + $userFound->addProduct($product); + $entityManager->persist($userFound); + } if ($form->isSubmitted() && $form->isValid()) { $entityManager->flush(); diff --git a/src/Entity/GroupOfProducts.php b/src/Entity/GroupOfProducts.php index ac103d35..6edc10aa 100644 --- a/src/Entity/GroupOfProducts.php +++ b/src/Entity/GroupOfProducts.php @@ -28,10 +28,10 @@ class GroupOfProducts private Collection $products; /** - * @var Collection + * @var Collection|null */ #[ORM\ManyToMany(targetEntity: Selling::class, inversedBy: 'groupOfProducts')] - private Collection $sellings; + private ?Collection $sellings = null; #[ORM\ManyToOne(inversedBy: 'groupOfProducts')] private ?User $user = null; diff --git a/src/Form/GroupOfProducts1Type.php b/src/Form/GroupOfProducts1Type.php index 47badba4..2c249631 100644 --- a/src/Form/GroupOfProducts1Type.php +++ b/src/Form/GroupOfProducts1Type.php @@ -19,17 +19,19 @@ class GroupOfProducts1Type extends AbstractType ->add('name') ->add('products', EntityType::class, [ 'class' => Product::class, - 'choice_label' => 'id', + 'choice_label' => 'name', 'multiple' => true, + 'required' => false, ]) ->add('sellings', EntityType::class, [ 'class' => Selling::class, 'choice_label' => 'id', 'multiple' => true, + 'required' => false, ]) ->add('user', EntityType::class, [ 'class' => User::class, - 'choice_label' => 'id', + 'choice_label' => 'name', ]) ; } diff --git a/src/Form/Product1Type.php b/src/Form/Product1Type.php index 9459ff05..379f3e43 100644 --- a/src/Form/Product1Type.php +++ b/src/Form/Product1Type.php @@ -23,17 +23,19 @@ class Product1Type extends AbstractType ->add('comment') ->add('groupOfProducts', EntityType::class, [ 'class' => GroupOfProducts::class, - 'choice_label' => 'id', + 'choice_label' => 'name', 'multiple' => true, + 'required' => false, ]) ->add('sellings', EntityType::class, [ 'class' => Selling::class, - 'choice_label' => 'id', + 'choice_label' => 'date', 'multiple' => true, + 'required' => false, ]) ->add('user', EntityType::class, [ 'class' => User::class, - 'choice_label' => 'id', + 'choice_label' => 'name', ]) ; } diff --git a/src/Form/ProductType.php b/src/Form/ProductType.php index 2d5981ea..b8cae20f 100644 --- a/src/Form/ProductType.php +++ b/src/Form/ProductType.php @@ -19,7 +19,7 @@ class ProductType extends AbstractType ->add('stock') ->add('groupOfProducts', EntityType::class, [ 'class' => GroupOfProducts::class, - 'choice_label' => 'id', + 'choice_label' => 'name', 'multiple' => true, 'required' => false, ]) diff --git a/templates/base.html.twig b/templates/base.html.twig index b96e5c8f..cbdb7b24 100755 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -54,13 +54,12 @@ logged {% include 'logged/nav.html.twig' %}
-
- -
- {% block body %} - {% endblock %} -
-
+
+
+ {% block body %} + {% endblock %} +
+
{% include 'default/footer.html.twig' %} {% endblock %}