list products with DTO

This commit is contained in:
Tykayn 2025-02-17 16:34:21 +01:00 committed by tykayn
parent cd4b678002
commit 0d672d5447
7 changed files with 57 additions and 11 deletions

26
.idea/php.xml generated
View file

@ -190,9 +190,33 @@
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-code" />
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
<path value="$PROJECT_DIR$/vendor/psr/clock" />
<path value="$PROJECT_DIR$/vendor/symfony/asset-mapper" />
<path value="$PROJECT_DIR$/vendor/symfony/ux-turbo" />
<path value="$PROJECT_DIR$/vendor/symfony/type-info" />
<path value="$PROJECT_DIR$/vendor/symfony/stimulus-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/clock" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php83" />
<path value="$PROJECT_DIR$/vendor/fakerphp/faker" />
<path value="$PROJECT_DIR$/vendor/masterminds/html5" />
<path value="$PROJECT_DIR$/vendor/api-platform/hydra" />
<path value="$PROJECT_DIR$/vendor/api-platform/serializer" />
<path value="$PROJECT_DIR$/vendor/api-platform/documentation" />
<path value="$PROJECT_DIR$/vendor/api-platform/metadata" />
<path value="$PROJECT_DIR$/vendor/api-platform/state" />
<path value="$PROJECT_DIR$/vendor/api-platform/doctrine-orm" />
<path value="$PROJECT_DIR$/vendor/api-platform/openapi" />
<path value="$PROJECT_DIR$/vendor/api-platform/validator" />
<path value="$PROJECT_DIR$/vendor/api-platform/symfony" />
<path value="$PROJECT_DIR$/vendor/api-platform/json-schema" />
<path value="$PROJECT_DIR$/vendor/api-platform/http-cache" />
<path value="$PROJECT_DIR$/vendor/api-platform/doctrine-common" />
<path value="$PROJECT_DIR$/vendor/api-platform/jsonld" />
<path value="$PROJECT_DIR$/vendor/symfonycasts/verify-email-bundle" />
<path value="$PROJECT_DIR$/vendor/symfonycasts/reset-password-bundle" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="7" />
<component name="PhpProjectSharedConfiguration" php_language_level="7.4" />
<component name="PhpUnit">
<phpunit_settings>
<PhpUnitSettings configuration_file_path="$PROJECT_DIR$/phpunit.xml.dist" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" />

View file

@ -209,12 +209,11 @@ angular
console.log('fetch products...');
$http.get('logged/get-my-products').then((rep) => {
// console.log('ok', rep);
console.log('rep.data', rep.data)
customCategories = [];
let customCategories = [];
for (let c of rep.data.categories) {
c.hidden = false;
customCategories.push(c);
customCategories = Object.create(rep.data.categories);
}
console.log('customCategories', customCategories);
$scope.categories = customCategories;

View file

@ -25,12 +25,13 @@ security:
logout:
path: app_logout
# where to redirect after logout
# target: app_any_route
target: dashboard
# Contrôle d'accès
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/logged, roles: ROLE_USER }
- { path: ^/dashboard, roles: ROLE_USER }
- { path: ^/docs, roles: PUBLIC_ACCESS } # Allows accessing the Swagger UI
- { path: ^/authentication_token, roles: PUBLIC_ACCESS }
# - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } # Autoriser l'accès à la page de connexion

View file

@ -61,10 +61,21 @@ class GroupOfProducts
return $this;
}
public function getProducts(): ?object
/**
* @return array
*/
public function getProductsDTO(): array
{
return $this->products;
$productsDTO = [];
foreach ($this->products as $product) {
$productsDTO[] = $product->toArray();
}
return $productsDTO;
}
public function getProducts(): ?object
{
return $this->products;
}
public function setProducts(object $products): static
{

View file

@ -11,6 +11,7 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Filter\UserProductsFilter;
use App\DTO\UserDTO;
use Symfony\Component\Serializer\Annotation\Groups;
#[ApiResource(paginationEnabled: false)]
#[UserProductsFilter]
@ -23,9 +24,11 @@ class Product
private ?int $id = null;
#[ORM\Column(length: 255)]
#[Groups(['default', 'relation'])]
private ?string $name = null;
#[ORM\Column]
#[Groups(['default', 'relation'])]
private ?float $price = null;
#[ORM\Column]
@ -190,4 +193,14 @@ class Product
return $this;
}
public function toArray(): array
{
return [
'id' => $this->id,
'name' => $this->name,
'price' => $this->price,
// Ajoutez d'autres propriétés si nécessaire
];
}
}

View file

@ -5,12 +5,11 @@
ng-if="! c.hidden">
<h2 ng-class="{'hidden':c.hidden}" class="title">
{{ c.name }}
{{ c.name }} ({{c.productsDTO.length}}
</h2>
<div class="product-listing" >
<span ng-repeat="p in c.products track by p.id"
<span ng-repeat="p in c.productsDTO track by p.id"
class="product-box"
>
<button class="product-button text-left" ng-class="{ 'active' : p.enabled}" ng-click="addProduct( p )">
<img class="product-image" src="{{p.image}}" alt="image" ng-if="p.image.length">

View file

@ -4,7 +4,6 @@
<i class="fa fa-user"></i>
<label for="sellingComment">
Client actuel: {{ activeSelling.length }} produit<span ng-if="activeSelling.length!=1">s</span>
</label>
<button type="button" class="deleter pull-right" ng-click="sellingComment = ''">