Pārlūkot izejas kodu

products and user images

master
Daniel pirms 2 gadiem
vecāks
revīzija
ce1c08d0a3
100 mainītis faili ar 476 papildinājumiem un 21 dzēšanām
  1. +69
    -0
      src/ApiResource/ProductApi.php
  2. +8
    -2
      src/DataFixtures/AppFixtures.php
  3. +17
    -0
      src/DataFixtures/FakeValues.php
  4. Binārs
      src/DataFixtures/images/products/06e2aeec-08dc-4bb5-92d9-3cda1a83f7c9.jpg
  5. Binārs
      src/DataFixtures/images/products/089-Ask-Bild1.jpg
  6. Binārs
      src/DataFixtures/images/products/145454_pIhFN2Ugm.webp
  7. Binārs
      src/DataFixtures/images/products/171651_1XE80u3Zy.webp
  8. Binārs
      src/DataFixtures/images/products/179210247-chemikalien-in-reagenzgläsern-und-symbolen-die-im-labor-oder-in-der-industrie-verwendet-werden.jpg
  9. Binārs
      src/DataFixtures/images/products/20230222_Fluorchemikalien-_adpic.jpg
  10. Binārs
      src/DataFixtures/images/products/20368327-vektorsymbol-fur-chemikalien-vektor.jpg
  11. Binārs
      src/DataFixtures/images/products/297744-reagenzglaser-mit-chemikalien-kostenlos-vektor.jpg
  12. Binārs
      src/DataFixtures/images/products/36461009_Chemikalien_Schlierner_Header1-1220x610-1.jpg
  13. Binārs
      src/DataFixtures/images/products/4954227.png
  14. Binārs
      src/DataFixtures/images/products/615hboYBEVL._AC_UF894,1000_QL80_.jpg
  15. Binārs
      src/DataFixtures/images/products/6364c360d3bb5_c-KGNqzCL.webp
  16. Binārs
      src/DataFixtures/images/products/6581938872383176.webp
  17. Binārs
      src/DataFixtures/images/products/71I8kTNrSsL._AC_UF1000,1000_QL80_.jpg
  18. Binārs
      src/DataFixtures/images/products/94e44c75-cccb-474c-bd9c-1d821e6f368a.jpeg
  19. Binārs
      src/DataFixtures/images/products/Akemi-Chemikaliensilicon.jpg
  20. Binārs
      emikalien.png
  21. Binārs
      src/DataFixtures/images/products/Bismuttrioxid.jpg
  22. Binārs
      src/DataFixtures/images/products/Chamikalien_1g-2.webp
  23. Binārs
      src/DataFixtures/images/products/Chemicals.png
  24. Binārs
      src/DataFixtures/images/products/Chemikalien-freist__ScaleWidthWzgwMF0.png
  25. Binārs
      src/DataFixtures/images/products/Chemikalien.jpg
  26. Binārs
      src/DataFixtures/images/products/Chemikalien_Antoine2K.jpg
  27. Binārs
      tzmittel
  28. Binārs
      src/DataFixtures/images/products/IGB_6860.jpg
  29. Binārs
      src/DataFixtures/images/products/Leitthema_Chemikalienrecycling_935674692_Fotograf-BlackJack3D_iStock.jpg
  30. Binārs
      src/DataFixtures/images/products/Reagenzglas.jpg
  31. Binārs
      sch_Reinigungsmittel_Polymerprodukte.jpg
  32. Binārs
      src/DataFixtures/images/products/Wasser_Umwelt_AdobeStock_285345543_Natali-3000x1687-637x358.jpeg
  33. Binārs
      src/DataFixtures/images/products/a34880.jpg
  34. Binārs
      src/DataFixtures/images/products/a34885.jpg
  35. Binārs
      src/DataFixtures/images/products/abfall_chemikalien.jpg
  36. Binārs
      src/DataFixtures/images/products/adea669d-9924-4909-9d79-9143cb010eef_w960_r1.778_fpx63_fpy52.jpg
  37. Binārs
      src/DataFixtures/images/products/adobestock_611392391_chemikalien.jpeg
  38. Binārs
      src/DataFixtures/images/products/angetrieben-von-chemikalien.jpg
  39. Binārs
      src/DataFixtures/images/products/becher-mit-den-reagenzgläsern-gefüllt-mit-chemikalien-58624587.webp
  40. Binārs
      src/DataFixtures/images/products/bi2o3_chda_-2.jpg
  41. Binārs
      src/DataFixtures/images/products/bunte-chemikalien-12777275.webp
  42. Binārs
      src/DataFixtures/images/products/cg_chemikalien_group_rexx_systems-1024x538.jpg
  43. Binārs
      src/DataFixtures/images/products/chemikalien-1.jpg
  44. Binārs
      src/DataFixtures/images/products/chemikalien-artikel2.jpeg
  45. Binārs
      src/DataFixtures/images/products/chemikalien-im-labor-700-119730440.jpg
  46. Binārs
      src/DataFixtures/images/products/chemikalien-im-wasser.jpg
  47. Binārs
      src/DataFixtures/images/products/chemikalien.webp
  48. Binārs
      src/DataFixtures/images/products/chemikalien_AdobeStock_116776874.webp
  49. Binārs
      src/DataFixtures/images/products/csm_Fotolia_21280019_M_Gefahrstoffe_d82c07547d.jpg
  50. Binārs
      src/DataFixtures/images/products/csm_KI_Becherglas_bunt_84e57f1426.jpg
  51. Binārs
      src/DataFixtures/images/products/enghals-chemikalien-flaschen_00018802.webp
  52. Binārs
      src/DataFixtures/images/products/enghals-chemikalien-flaschen_00026892.webp
  53. Binārs
      src/DataFixtures/images/products/gefahrstoffe_a_bruno_fotolia_24886834_m.jpg
  54. Binārs
      src/DataFixtures/images/products/greenpeace.avif
  55. Binārs
      src/DataFixtures/images/products/images.jpg
  56. Binārs
      src/DataFixtures/images/products/impact-story-Chemicals-cover.webp
  57. Binārs
      src/DataFixtures/images/products/istock-1355779437.jpg
  58. Binārs
      src/DataFixtures/images/products/justrite-notfall-set-chemikalien--1032976--470x470--p.jpg
  59. Binārs
      src/DataFixtures/images/products/labor-120~_v-varm_88873b.jpg
  60. Binārs
      src/DataFixtures/images/products/leadImage.jpg
  61. Binārs
      src/DataFixtures/images/products/pipettieren-einer-oelprobe-zur-erforschung-von-medizin-und-chemikalien-CAVF95337.jpg
  62. Binārs
      src/DataFixtures/images/products/pngtree-chemicals-icon-in-trendy-style-isolated-background-png-image_1554545.jpg
  63. Binārs
      src/DataFixtures/images/products/shutterstock_1561135202-800x450.jpg
  64. Binārs
      src/DataFixtures/images/products/spicytruffel-AdobeStock_316542333-Konvertiert.jpg
  65. Binārs
      src/DataFixtures/images/products/streitfall-chemikalien-wer.webp
  66. Binārs
      src/DataFixtures/images/products/symbol-fuer-die-linie-der-flasche-mit-chemikalien_116137-5518.avif
  67. Binārs
      src/DataFixtures/images/products/teaserbox_2419937771.jpg
  68. Binārs
      src/DataFixtures/images/products/teaserbox_2446472365.jpg
  69. Binārs
      src/DataFixtures/images/products/teaserbox_2449303018.jpg
  70. Binārs
      src/DataFixtures/images/products/teaserbox_2450499236.jpg
  71. Binārs
      src/DataFixtures/images/products/teaserbox_2462792495.jpg
  72. Binārs
      src/DataFixtures/images/products/teaserbox_2462830751.JPG
  73. Binārs
      src/DataFixtures/images/products/teaserbox_2473428103.JPG
  74. Binārs
      src/DataFixtures/images/products/urinprobe_bildquelle_joergbeuge_fotolia_27589149_m.jpg
  75. Binārs
      src/DataFixtures/images/products/weithals-chemikalien-flaschen_00018762.webp
  76. Binārs
      src/DataFixtures/images/users/4798951-smurfs_color_pictures_poet_smurf.jpg
  77. Binārs
      src/DataFixtures/images/users/4798991-schtroumpf-paresseux.jpg
  78. Binārs
      src/DataFixtures/images/users/5e354e4c73be4d0ef14e6b761b27e25e.png
  79. Binārs
      src/DataFixtures/images/users/819027-brainy.jpg
  80. Binārs
      src/DataFixtures/images/users/Gizmo_Smurf_Vic_George.webp
  81. Binārs
      src/DataFixtures/images/users/Handy_Comic_Book.webp
  82. Binārs
      src/DataFixtures/images/users/SmurfCovidCartoonCharacter.SMjpg.webp
  83. Binārs
      src/DataFixtures/images/users/c2c97f0614837c506b5d25820988f6dc.jpg
  84. Binārs
      src/DataFixtures/images/users/e5f648d978973e3db259226929789f1d.jpg
  85. Binārs
      src/DataFixtures/images/users/images.jpg
  86. Binārs
      src/DataFixtures/images/users/images.png
  87. Binārs
      src/DataFixtures/images/users/slouchy-smurfling-tv-characters-photo-u1.jpg
  88. Binārs
      src/DataFixtures/images/users/tailor-smurf-tv-characters-photo-u1.jpg
  89. Binārs
      src/DataFixtures/images/users/the-king-tv-characters-photo-u1.jpg
  90. Binārs
      src/DataFixtures/images/users/the-smurfette-brainy-smurf-papa-smurf-the-smurfs-blonde-hair-cartoon-characters.jpg
  91. +2
    -1
      src/Entity/MediaObject.php
  92. +79
    -0
      src/Entity/Product.php
  93. +13
    -0
      src/Entity/User.php
  94. +1
    -1
      src/Factory/ContactFactory.php
  95. +1
    -1
      src/Factory/MediaObjectContactFactory.php
  96. +83
    -0
      src/Factory/MediaObjectProductFactory.php
  97. +83
    -0
      src/Factory/MediaObjectUserFactory.php
  98. +72
    -0
      src/Factory/ProductFactory.php
  99. +1
    -16
      src/Factory/UserFactory.php
  100. +47
    -0
      src/Mapper/ProductApiToEntityMapper.php

+ 69
- 0
src/ApiResource/ProductApi.php Parādīt failu

@@ -0,0 +1,69 @@
<?php
/**
* @author Daniel Knudsen <d.knudsen@spawntree.de>
* @date 12.12.23
*/


namespace App\ApiResource;


use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Doctrine\Orm\State\Options;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
use App\Entity\MediaObject;
use App\Entity\Product;
use App\State\EntityClassDtoStateProcessor;
use App\State\EntityToDtoStateProvider;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Patch;
use ApiPlatform\Metadata\Post;
use Symfony\Component\Validator\Constraints\NotBlank;

#[ApiResource(
shortName: 'Product',
operations: [
new Get(
security: 'is_granted("ROLE_USER")'
),
new GetCollection(),
new Post(
security: 'is_granted("ROLE_USER")',
),
new Patch(
security: 'is_granted("ROLE_USER")',
),
new Delete(
security: 'is_granted("ROLE_ADMIN")',
)
],
order: ['name' => 'ASC'],
security: 'is_granted("ROLE_USER")',
provider: EntityToDtoStateProvider::class,
processor: EntityClassDtoStateProcessor::class,
stateOptions: new Options(entityClass: Product::class)
)]

#[ApiFilter(OrderFilter::class, properties: ['name'], arguments: ['orderParameterName' => 'order'])]
class ProductApi
{
#[ApiProperty(readable: false, writable: false, identifier: true)]
public ?int $id = null;

#[NotBlank]
public string $name;

public ?string $description = null;

public ?MediaObject $image = null;

#[ApiProperty(writable: false)]
public ?string $imageUrl = null;

public ?\DateTimeImmutable $createdAt = null;

}

+ 8
- 2
src/DataFixtures/AppFixtures.php Parādīt failu

@@ -5,9 +5,12 @@ namespace App\DataFixtures;
use App\Factory\CommentFactory;
use App\Factory\ContactFactory;
use App\Factory\MediaObjectLogoFactory;
use App\Factory\MediaObjectProfileFactory;
use App\Factory\MediaObjectProductFactory;
use App\Factory\MediaObjectContactFactory;
use App\Factory\MediaObjectUserFactory;
use App\Factory\PartnerFactory;
use App\Factory\PostingFactory;
use App\Factory\ProductFactory;
use App\Factory\UserFactory;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
@@ -34,6 +37,7 @@ class AppFixtures extends Fixture
}
}

MediaObjectUserFactory::createMany(20);
$adminD = UserFactory::createOne(
[
'email' => 'd.knudsen@spawntree.de',
@@ -57,9 +61,11 @@ class AppFixtures extends Fixture
UserFactory::createMany(10);
MediaObjectLogoFactory::createMany(50);
PartnerFactory::createMany(100);
MediaObjectProfileFactory::createMany(50);
MediaObjectContactFactory::createMany(50);
ContactFactory::createMany(200);
PostingFactory::createMany(200);
CommentFactory::createMany(300);
MediaObjectProductFactory::createMany(50);
ProductFactory::createMany(100);
}
}

+ 17
- 0
src/DataFixtures/FakeValues.php Parādīt failu

@@ -187,4 +187,21 @@ class FakeValues
"Systemadministrator", "Vertriebsingenieur", "Produktionsplaner", "Personalbeschaffer",
"Content Creator", "Bürokoordinator"
];

const PRODUCTS = [
'Oxidanol-X', 'Quantum Acidite', 'NeuroSolvent', 'HydroMystique', 'Luminaflux', 'Nanoglow Serum', 'Etherium Catalyst', 'BioSol ExoBlend',
'CryoSynth Elixir', 'NebulaVapour', 'Magnaflux Solvent', 'SynthoQuanta', 'QuantumSolve-X', 'PlasmaFusion Serum', 'ElectroLyte-X', 'SynthoBlast Acid',
'MegaMelt Radiant', 'Ionic Infusion X', 'QuantumBond Solvent', 'Molecular Surge', 'Etherium Enhancer', 'BioCryo Synthase', 'MagmaMyst Serum',
'HydroMyst Elixir', 'NeuroQuell Acid', 'PlasmaGlow Catalyst', 'NanoSizzle Blend', 'QuantumVortex X', 'VitaSynth Serum', 'CryoFusion Acid',
'RadiantQuanta Elixir', 'QuantumSurge Acid', 'NebulaRadiance Blend', 'Luminex Catalyst', 'ElectroPulse-X', 'CryoWave Serum', 'SynthoFlare Acid',
'Nanoglow Elixir', 'QuantumSpark Blend', 'MagnaFusion Catalyst', 'ElectroQuanta Acid', 'LuminarX Serum', 'NeuroWave-X', 'CryoSpark Acid',
'PlasmaQuanta Elixir', 'MegaCryo Catalyst', 'IonicQuell Blend', 'QuantumSizzle-X', 'NeuroRadiance Acid', 'NebulaFusion Serum', 'HydroQuanta X',
'RadiantFlare Blend', 'BioMyst Acid', 'SynthoVortex Serum', 'QuantumSurge-X', 'PlasmaQuell Blend', 'MolecularGlow Catalyst', 'Luminex Serum',
'ElectroWave Acid', 'CryoMyst Elixir', 'NeuroFusion Blend', 'NanoSizzle Acid', 'QuantumPulse Serum', 'MegaFlare-X', 'PlasmaRadiance Acid',
'SynthoQuanta Elixir', 'NebulaCryo Blend', 'HydroQuell Acid', 'RadiantFusion Serum', 'ElectroCryo-X', 'MolecularQuanta Acid', 'BioSpark Elixir',
'QuantumRadiance Blend', 'NanoFlare Acid', 'MagnaQuanta Serum', 'Luminex Catalyst-X', 'CryoFusion Elixir', 'NeuroQuell Blend', 'PlasmaMyst Acid',
'SynthoRadiance Serum', 'QuantumVortex-X', 'NebulaSpark Blend', 'HydroGlow Catalyst', 'RadiantQuanta Acid', 'ElectroMyst Elixir', 'MegaQuell Serum',
'CryoVortex Acid', 'NanoRadiance Blend', 'QuantumFusion Serum', 'SynthoFlare-X', 'PlasmaQuell Acid', 'MolecularGlow Blend', 'Luminex Catalyst-X',
'ElectroWave Serum', 'CryoMyst Acid', 'NeuroFusion Elixir', 'NanoSizzle Blend-X', 'QuantumPulse Acid', 'RadiantFlare Serum', 'BioQuanta Catalyst',
];
}

Binārs
src/DataFixtures/images/products/06e2aeec-08dc-4bb5-92d9-3cda1a83f7c9.jpg Parādīt failu

Pirms Pēc
Platums: 750  |  Augstums: 500  |  Izmērs: 40 KiB

Binārs
src/DataFixtures/images/products/089-Ask-Bild1.jpg Parādīt failu

Pirms Pēc
Platums: 646  |  Augstums: 441  |  Izmērs: 72 KiB

Binārs
src/DataFixtures/images/products/145454_pIhFN2Ugm.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/171651_1XE80u3Zy.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/179210247-chemikalien-in-reagenzgläsern-und-symbolen-die-im-labor-oder-in-der-industrie-verwendet-werden.jpg Parādīt failu

Pirms Pēc
Platums: 450  |  Augstums: 300  |  Izmērs: 24 KiB

Binārs
src/DataFixtures/images/products/20230222_Fluorchemikalien-_adpic.jpg Parādīt failu

Pirms Pēc
Platums: 1080  |  Augstums: 721  |  Izmērs: 93 KiB

Binārs
src/DataFixtures/images/products/20368327-vektorsymbol-fur-chemikalien-vektor.jpg Parādīt failu

Pirms Pēc
Platums: 661  |  Augstums: 980  |  Izmērs: 50 KiB

Binārs
src/DataFixtures/images/products/297744-reagenzglaser-mit-chemikalien-kostenlos-vektor.jpg Parādīt failu

Pirms Pēc
Platums: 556  |  Augstums: 490  |  Izmērs: 30 KiB

Binārs
src/DataFixtures/images/products/36461009_Chemikalien_Schlierner_Header1-1220x610-1.jpg Parādīt failu

Pirms Pēc
Platums: 1220  |  Augstums: 610  |  Izmērs: 115 KiB

Binārs
src/DataFixtures/images/products/4954227.png Parādīt failu

Pirms Pēc
Platums: 512  |  Augstums: 512  |  Izmērs: 24 KiB

Binārs
src/DataFixtures/images/products/615hboYBEVL._AC_UF894,1000_QL80_.jpg Parādīt failu

Pirms Pēc
Platums: 894  |  Augstums: 877  |  Izmērs: 43 KiB

Binārs
src/DataFixtures/images/products/6364c360d3bb5_c-KGNqzCL.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/6581938872383176.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/71I8kTNrSsL._AC_UF1000,1000_QL80_.jpg Parādīt failu

Pirms Pēc
Platums: 761  |  Augstums: 1000  |  Izmērs: 57 KiB

Binārs
src/DataFixtures/images/products/94e44c75-cccb-474c-bd9c-1d821e6f368a.jpeg Parādīt failu

Pirms Pēc
Platums: 525  |  Augstums: 525  |  Izmērs: 60 KiB

Binārs
src/DataFixtures/images/products/Akemi-Chemikaliensilicon.jpg Parādīt failu

Pirms Pēc
Platums: 660  |  Augstums: 660  |  Izmērs: 78 KiB

Binārs
src/DataFixtures/images/products/Bild → emikalien.png Parādīt failu


Binārs
src/DataFixtures/images/products/Bismuttrioxid.jpg Parādīt failu

Pirms Pēc
Platums: 650  |  Augstums: 500  |  Izmērs: 98 KiB

Binārs
src/DataFixtures/images/products/Chamikalien_1g-2.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/Chemicals.png Parādīt failu

Pirms Pēc
Platums: 610  |  Augstums: 350  |  Izmērs: 26 KiB

Binārs
src/DataFixtures/images/products/Chemikalien-freist__ScaleWidthWzgwMF0.png Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 800  |  Izmērs: 240 KiB

Binārs
src/DataFixtures/images/products/Chemikalien.jpg Parādīt failu

Pirms Pēc
Platums: 360  |  Augstums: 477  |  Izmērs: 8.0 KiB

Binārs
src/DataFixtures/images/products/Chemikalien_Antoine2K.jpg Parādīt failu

Pirms Pēc
Platums: 770  |  Augstums: 420  |  Izmērs: 32 KiB

Binārs
src/DataFixtures/images/products/Haushaltsreiniger → tzmittel Parādīt failu


Binārs
src/DataFixtures/images/products/IGB_6860.jpg Parādīt failu

Pirms Pēc
Platums: 1000  |  Augstums: 563  |  Izmērs: 65 KiB

Binārs
src/DataFixtures/images/products/Leitthema_Chemikalienrecycling_935674692_Fotograf-BlackJack3D_iStock.jpg Parādīt failu

Pirms Pēc
Platums: 1200  |  Augstums: 600  |  Izmērs: 88 KiB

Binārs
src/DataFixtures/images/products/Reagenzglas.jpg Parādīt failu

Pirms Pēc
Platums: 895  |  Augstums: 502  |  Izmērs: 130 KiB

Binārs
src/DataFixtures/images/products/Unternehmen_Umweltauflagen_Bezug_Metallvearbeitungflüssigkeiten, → sch_Reinigungsmittel_Polymerprodukte.jpg Parādīt failu


Binārs
src/DataFixtures/images/products/Wasser_Umwelt_AdobeStock_285345543_Natali-3000x1687-637x358.jpeg Parādīt failu

Pirms Pēc
Platums: 637  |  Augstums: 358  |  Izmērs: 179 KiB

Binārs
src/DataFixtures/images/products/a34880.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 800  |  Izmērs: 33 KiB

Binārs
src/DataFixtures/images/products/a34885.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 800  |  Izmērs: 41 KiB

Binārs
src/DataFixtures/images/products/abfall_chemikalien.jpg Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 300  |  Izmērs: 121 KiB

Binārs
src/DataFixtures/images/products/adea669d-9924-4909-9d79-9143cb010eef_w960_r1.778_fpx63_fpy52.jpg Parādīt failu

Pirms Pēc
Platums: 960  |  Augstums: 540  |  Izmērs: 61 KiB

Binārs
src/DataFixtures/images/products/adobestock_611392391_chemikalien.jpeg Parādīt failu

Pirms Pēc
Platums: 960  |  Augstums: 540  |  Izmērs: 50 KiB

Binārs
src/DataFixtures/images/products/angetrieben-von-chemikalien.jpg Parādīt failu

Pirms Pēc
Platums: 378  |  Augstums: 378  |  Izmērs: 11 KiB

Binārs
src/DataFixtures/images/products/becher-mit-den-reagenzgläsern-gefüllt-mit-chemikalien-58624587.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/bi2o3_chda_-2.jpg Parādīt failu

Pirms Pēc
Platums: 1920  |  Augstums: 1280  |  Izmērs: 1.7 MiB

Binārs
src/DataFixtures/images/products/bunte-chemikalien-12777275.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/cg_chemikalien_group_rexx_systems-1024x538.jpg Parādīt failu

Pirms Pēc
Platums: 1024  |  Augstums: 538  |  Izmērs: 56 KiB

Binārs
src/DataFixtures/images/products/chemikalien-1.jpg Parādīt failu

Pirms Pēc
Platums: 533  |  Augstums: 400  |  Izmērs: 17 KiB

Binārs
src/DataFixtures/images/products/chemikalien-artikel2.jpeg Parādīt failu

Pirms Pēc
Platums: 987  |  Augstums: 392  |  Izmērs: 43 KiB

Binārs
src/DataFixtures/images/products/chemikalien-im-labor-700-119730440.jpg Parādīt failu

Pirms Pēc
Platums: 700  |  Augstums: 467  |  Izmērs: 66 KiB

Binārs
src/DataFixtures/images/products/chemikalien-im-wasser.jpg Parādīt failu

Pirms Pēc
Platums: 640  |  Augstums: 360  |  Izmērs: 46 KiB

Binārs
src/DataFixtures/images/products/chemikalien.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/chemikalien_AdobeStock_116776874.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/csm_Fotolia_21280019_M_Gefahrstoffe_d82c07547d.jpg Parādīt failu

Pirms Pēc
Platums: 727  |  Augstums: 545  |  Izmērs: 53 KiB

Binārs
src/DataFixtures/images/products/csm_KI_Becherglas_bunt_84e57f1426.jpg Parādīt failu

Pirms Pēc
Platums: 828  |  Augstums: 621  |  Izmērs: 65 KiB

Binārs
src/DataFixtures/images/products/enghals-chemikalien-flaschen_00018802.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/enghals-chemikalien-flaschen_00026892.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/gefahrstoffe_a_bruno_fotolia_24886834_m.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 400  |  Izmērs: 86 KiB

Binārs
src/DataFixtures/images/products/greenpeace.avif Parādīt failu


Binārs
src/DataFixtures/images/products/images.jpg Parādīt failu

Pirms Pēc
Platums: 299  |  Augstums: 168  |  Izmērs: 5.4 KiB

Binārs
src/DataFixtures/images/products/impact-story-Chemicals-cover.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/istock-1355779437.jpg Parādīt failu

Pirms Pēc
Platums: 730  |  Augstums: 460  |  Izmērs: 56 KiB

Binārs
src/DataFixtures/images/products/justrite-notfall-set-chemikalien--1032976--470x470--p.jpg Parādīt failu

Pirms Pēc
Platums: 470  |  Augstums: 470  |  Izmērs: 30 KiB

Binārs
src/DataFixtures/images/products/labor-120~_v-varm_88873b.jpg Parādīt failu

Pirms Pēc
Platums: 512  |  Augstums: 288  |  Izmērs: 21 KiB

Binārs
src/DataFixtures/images/products/leadImage.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 450  |  Izmērs: 50 KiB

Binārs
src/DataFixtures/images/products/pipettieren-einer-oelprobe-zur-erforschung-von-medizin-und-chemikalien-CAVF95337.jpg Parādīt failu

Pirms Pēc
Platums: 480  |  Augstums: 360  |  Izmērs: 28 KiB

Binārs
src/DataFixtures/images/products/pngtree-chemicals-icon-in-trendy-style-isolated-background-png-image_1554545.jpg Parādīt failu

Pirms Pēc
Platums: 360  |  Augstums: 360  |  Izmērs: 6.8 KiB

Binārs
src/DataFixtures/images/products/shutterstock_1561135202-800x450.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 450  |  Izmērs: 34 KiB

Binārs
src/DataFixtures/images/products/spicytruffel-AdobeStock_316542333-Konvertiert.jpg Parādīt failu

Pirms Pēc
Platums: 960  |  Augstums: 600  |  Izmērs: 206 KiB

Binārs
src/DataFixtures/images/products/streitfall-chemikalien-wer.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/products/symbol-fuer-die-linie-der-flasche-mit-chemikalien_116137-5518.avif Parādīt failu


Binārs
src/DataFixtures/images/products/teaserbox_2419937771.jpg Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 617  |  Izmērs: 123 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2446472365.jpg Parādīt failu

Pirms Pēc
Platums: 781  |  Augstums: 554  |  Izmērs: 189 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2449303018.jpg Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 563  |  Izmērs: 260 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2450499236.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 585  |  Izmērs: 181 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2462792495.jpg Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 675  |  Izmērs: 178 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2462830751.JPG Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 620  |  Izmērs: 273 KiB

Binārs
src/DataFixtures/images/products/teaserbox_2473428103.JPG Parādīt failu

Pirms Pēc
Platums: 900  |  Augstums: 672  |  Izmērs: 86 KiB

Binārs
src/DataFixtures/images/products/urinprobe_bildquelle_joergbeuge_fotolia_27589149_m.jpg Parādīt failu

Pirms Pēc
Platums: 800  |  Augstums: 550  |  Izmērs: 81 KiB

Binārs
src/DataFixtures/images/products/weithals-chemikalien-flaschen_00018762.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/users/4798951-smurfs_color_pictures_poet_smurf.jpg Parādīt failu

Pirms Pēc
Platums: 320  |  Augstums: 320  |  Izmērs: 25 KiB

Binārs
src/DataFixtures/images/users/4798991-schtroumpf-paresseux.jpg Parādīt failu

Pirms Pēc
Platums: 320  |  Augstums: 320  |  Izmērs: 24 KiB

Binārs
src/DataFixtures/images/users/5e354e4c73be4d0ef14e6b761b27e25e.png Parādīt failu

Pirms Pēc
Platums: 792  |  Augstums: 752  |  Izmērs: 22 KiB

Binārs
src/DataFixtures/images/users/819027-brainy.jpg Parādīt failu

Pirms Pēc
Platums: 320  |  Augstums: 320  |  Izmērs: 8.9 KiB

Binārs
src/DataFixtures/images/users/Gizmo_Smurf_Vic_George.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/users/Handy_Comic_Book.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/users/SmurfCovidCartoonCharacter.SMjpg.webp Parādīt failu

Pirms Pēc

Binārs
src/DataFixtures/images/users/c2c97f0614837c506b5d25820988f6dc.jpg Parādīt failu

Pirms Pēc
Platums: 564  |  Augstums: 800  |  Izmērs: 50 KiB

Binārs
src/DataFixtures/images/users/e5f648d978973e3db259226929789f1d.jpg Parādīt failu

Pirms Pēc
Platums: 340  |  Augstums: 406  |  Izmērs: 21 KiB

Binārs
src/DataFixtures/images/users/images.jpg Parādīt failu

Pirms Pēc
Platums: 246  |  Augstums: 205  |  Izmērs: 11 KiB

Binārs
src/DataFixtures/images/users/images.png Parādīt failu

Pirms Pēc
Platums: 221  |  Augstums: 228  |  Izmērs: 9.6 KiB

Binārs
src/DataFixtures/images/users/slouchy-smurfling-tv-characters-photo-u1.jpg Parādīt failu

Pirms Pēc
Platums: 250  |  Augstums: 250  |  Izmērs: 5.5 KiB

Binārs
src/DataFixtures/images/users/tailor-smurf-tv-characters-photo-u1.jpg Parādīt failu

Pirms Pēc
Platums: 250  |  Augstums: 250  |  Izmērs: 5.6 KiB

Binārs
src/DataFixtures/images/users/the-king-tv-characters-photo-u1.jpg Parādīt failu

Pirms Pēc
Platums: 250  |  Augstums: 250  |  Izmērs: 7.5 KiB

Binārs
src/DataFixtures/images/users/the-smurfette-brainy-smurf-papa-smurf-the-smurfs-blonde-hair-cartoon-characters.jpg Parādīt failu

Pirms Pēc
Platums: 621  |  Augstums: 849  |  Izmērs: 47 KiB

+ 2
- 1
src/Entity/MediaObject.php Parādīt failu

@@ -55,7 +55,8 @@ use Vich\UploaderBundle\Mapping\Annotation as Vich;
// controller: DeleteMediaObjectAction::class
),
],
normalizationContext: ['groups' => ['media_object:read']]
normalizationContext: ['groups' => ['media_object:read']],
security: 'is_granted("ROLE_USER")',
)]
class MediaObject
{


+ 79
- 0
src/Entity/Product.php Parādīt failu

@@ -0,0 +1,79 @@
<?php

namespace App\Entity;

use App\Repository\ProductRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity(repositoryClass: ProductRepository::class)]
class Product
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;

#[ORM\Column(length: 255)]
private ?string $name = null;

#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $description = null;

#[ORM\ManyToOne]
private ?MediaObject $image = null;

#[ORM\Column]
private ?\DateTimeImmutable $createdAt = null;

public function __construct()
{
$this->createdAt = new \DateTimeImmutable();
}

public function getId(): ?int
{
return $this->id;
}

public function getName(): ?string
{
return $this->name;
}

public function setName(string $name): static
{
$this->name = $name;

return $this;
}

public function getDescription(): ?string
{
return $this->description;
}

public function setDescription(?string $description): static
{
$this->description = $description;

return $this;
}

public function getImage(): ?MediaObject
{
return $this->image;
}

public function setImage(?MediaObject $image): static
{
$this->image = $image;

return $this;
}

public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;
}
}

+ 13
- 0
src/Entity/User.php Parādīt failu

@@ -27,6 +27,9 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
#[ORM\Column(length: 255)]
private ?string $lastName = null;

#[ORM\ManyToOne]
private ?MediaObject $image = null;

#[ORM\Column]
private array $roles = [];

@@ -151,6 +154,16 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
return $this;
}

public function getImage(): ?MediaObject
{
return $this->image;
}

public function setImage(?MediaObject $image): void
{
$this->image = $image;
}

public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;


+ 1
- 1
src/Factory/ContactFactory.php Parādīt failu

@@ -55,7 +55,7 @@ final class ContactFactory extends ModelFactory
'phone' => self::faker()->phoneNumber(),
'email' => self::faker()->email(),
'partner' => PartnerFactory::random(),
'image' => MediaObjectProfileFactory::random()
'image' => MediaObjectContactFactory::random()
];
}



src/Factory/MediaObjectProfileFactory.php → src/Factory/MediaObjectContactFactory.php Parādīt failu

@@ -31,7 +31,7 @@ use Zenstruck\Foundry\RepositoryProxy;
* @method static MediaObject[]|Proxy[] randomRange(int $min, int $max, array $attributes = [])
* @method static MediaObject[]|Proxy[] randomSet(int $number, array $attributes = [])
*/
final class MediaObjectProfileFactory extends ModelFactory
final class MediaObjectContactFactory extends ModelFactory
{
/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services

+ 83
- 0
src/Factory/MediaObjectProductFactory.php Parādīt failu

@@ -0,0 +1,83 @@
<?php

namespace App\Factory;

use App\Entity\MediaObject;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpKernel\KernelInterface;
use Vich\UploaderBundle\FileAbstraction\ReplacingFile;
use Zenstruck\Foundry\ModelFactory;
use Zenstruck\Foundry\Proxy;
use Zenstruck\Foundry\RepositoryProxy;

/**
* @extends ModelFactory<MediaObject>
*
* @method MediaObject|Proxy create(array|callable $attributes = [])
* @method static MediaObject|Proxy createOne(array $attributes = [])
* @method static MediaObject|Proxy find(object|array|mixed $criteria)
* @method static MediaObject|Proxy findOrCreate(array $attributes)
* @method static MediaObject|Proxy first(string $sortedField = 'id')
* @method static MediaObject|Proxy last(string $sortedField = 'id')
* @method static MediaObject|Proxy random(array $attributes = [])
* @method static MediaObject|Proxy randomOrCreate(array $attributes = [])
* @method static EntityRepository|RepositoryProxy repository()
* @method static MediaObject[]|Proxy[] all()
* @method static MediaObject[]|Proxy[] createMany(int $number, array|callable $attributes = [])
* @method static MediaObject[]|Proxy[] createSequence(iterable|callable $sequence)
* @method static MediaObject[]|Proxy[] findBy(array $attributes)
* @method static MediaObject[]|Proxy[] randomRange(int $min, int $max, array $attributes = [])
* @method static MediaObject[]|Proxy[] randomSet(int $number, array $attributes = [])
*/
final class MediaObjectProductFactory extends ModelFactory
{
/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services
*
* @todo inject services if required
*/
public function __construct(
private KernelInterface $appKernel
)
{
parent::__construct();
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#model-factories
*
* @todo add your default values here
*/
protected function getDefaults(): array
{
$projectRoot = $this->appKernel->getProjectDir();

$folderPath = $projectRoot . '/src/DataFixtures/images/products/';
$files = glob($folderPath . '*.*');
$randomFile = null;
if ($files !== false && count($files) > 0) {
$randomFile = $files[array_rand($files)];
}

return [
'file' => new ReplacingFile($randomFile)
];
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#initialization
*/
protected function initialize(): self
{
return $this
// ->afterInstantiate(function(MediaObject $mediaObject): void {})
;
}

protected static function getClass(): string
{
return MediaObject::class;
}
}

+ 83
- 0
src/Factory/MediaObjectUserFactory.php Parādīt failu

@@ -0,0 +1,83 @@
<?php

namespace App\Factory;

use App\Entity\MediaObject;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpKernel\KernelInterface;
use Vich\UploaderBundle\FileAbstraction\ReplacingFile;
use Zenstruck\Foundry\ModelFactory;
use Zenstruck\Foundry\Proxy;
use Zenstruck\Foundry\RepositoryProxy;

/**
* @extends ModelFactory<MediaObject>
*
* @method MediaObject|Proxy create(array|callable $attributes = [])
* @method static MediaObject|Proxy createOne(array $attributes = [])
* @method static MediaObject|Proxy find(object|array|mixed $criteria)
* @method static MediaObject|Proxy findOrCreate(array $attributes)
* @method static MediaObject|Proxy first(string $sortedField = 'id')
* @method static MediaObject|Proxy last(string $sortedField = 'id')
* @method static MediaObject|Proxy random(array $attributes = [])
* @method static MediaObject|Proxy randomOrCreate(array $attributes = [])
* @method static EntityRepository|RepositoryProxy repository()
* @method static MediaObject[]|Proxy[] all()
* @method static MediaObject[]|Proxy[] createMany(int $number, array|callable $attributes = [])
* @method static MediaObject[]|Proxy[] createSequence(iterable|callable $sequence)
* @method static MediaObject[]|Proxy[] findBy(array $attributes)
* @method static MediaObject[]|Proxy[] randomRange(int $min, int $max, array $attributes = [])
* @method static MediaObject[]|Proxy[] randomSet(int $number, array $attributes = [])
*/
final class MediaObjectUserFactory extends ModelFactory
{
/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services
*
* @todo inject services if required
*/
public function __construct(
private KernelInterface $appKernel
)
{
parent::__construct();
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#model-factories
*
* @todo add your default values here
*/
protected function getDefaults(): array
{
$projectRoot = $this->appKernel->getProjectDir();

$folderPath = $projectRoot . '/src/DataFixtures/images/users/';
$files = glob($folderPath . '*.*');
$randomFile = null;
if ($files !== false && count($files) > 0) {
$randomFile = $files[array_rand($files)];
}

return [
'file' => new ReplacingFile($randomFile)
];
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#initialization
*/
protected function initialize(): self
{
return $this
// ->afterInstantiate(function(MediaObject $mediaObject): void {})
;
}

protected static function getClass(): string
{
return MediaObject::class;
}
}

+ 72
- 0
src/Factory/ProductFactory.php Parādīt failu

@@ -0,0 +1,72 @@
<?php

namespace App\Factory;

use App\DataFixtures\FakeValues;
use App\Entity\Product;
use App\Repository\ProductRepository;
use Zenstruck\Foundry\ModelFactory;
use Zenstruck\Foundry\Proxy;
use Zenstruck\Foundry\RepositoryProxy;

/**
* @extends ModelFactory<Product>
*
* @method Product|Proxy create(array|callable $attributes = [])
* @method static Product|Proxy createOne(array $attributes = [])
* @method static Product|Proxy find(object|array|mixed $criteria)
* @method static Product|Proxy findOrCreate(array $attributes)
* @method static Product|Proxy first(string $sortedField = 'id')
* @method static Product|Proxy last(string $sortedField = 'id')
* @method static Product|Proxy random(array $attributes = [])
* @method static Product|Proxy randomOrCreate(array $attributes = [])
* @method static ProductRepository|RepositoryProxy repository()
* @method static Product[]|Proxy[] all()
* @method static Product[]|Proxy[] createMany(int $number, array|callable $attributes = [])
* @method static Product[]|Proxy[] createSequence(iterable|callable $sequence)
* @method static Product[]|Proxy[] findBy(array $attributes)
* @method static Product[]|Proxy[] randomRange(int $min, int $max, array $attributes = [])
* @method static Product[]|Proxy[] randomSet(int $number, array $attributes = [])
*/
final class ProductFactory extends ModelFactory
{
/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services
*
* @todo inject services if required
*/
public function __construct()
{
parent::__construct();
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#model-factories
*
* @todo add your default values here
*/
protected function getDefaults(): array
{
return [
'name' => self::faker()->randomElement(FakeValues::PRODUCTS),
'description' => self::faker()->text(),
'image' => MediaObjectProductFactory::random(),
'createdAt' => \DateTimeImmutable::createFromMutable(self::faker()->dateTime()),
];
}

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#initialization
*/
protected function initialize(): self
{
return $this
// ->afterInstantiate(function(Product $product): void {})
;
}

protected static function getClass(): string
{
return Product::class;
}
}

+ 1
- 16
src/Factory/UserFactory.php Parādīt failu

@@ -31,22 +31,6 @@ use Zenstruck\Foundry\RepositoryProxy;
*/
final class UserFactory extends ModelFactory
{
const FIRST_NAMES = [
'Alice', 'Bob', 'Charlie', 'David', 'Emma',
'Frank', 'Grace', 'Henry', 'Ivy', 'Jack',
'Kate', 'Liam', 'Mia', 'Noah', 'Olivia',
'Paul', 'Quinn', 'Ryan', 'Sophia', 'Thomas',
'Ursula', 'Victor', 'Wendy', 'Xander', 'Yvonne'
];

const LAST_NAMES = [
'Smith', 'Johnson', 'Williams', 'Jones', 'Brown',
'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor',
'Anderson', 'Thomas', 'Jackson', 'White', 'Harris',
'Martin', 'Thompson', 'Garcia', 'Martinez', 'Robinson',
'Clark', 'Lewis', 'Lee', 'Walker', 'Hall'
];

/**
* @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories-as-services
*
@@ -68,6 +52,7 @@ final class UserFactory extends ModelFactory
'email' => self::faker()->email(),
'firstName' => self::faker()->firstName(),
'lastName' => self::faker()->lastName(),
'image' => MediaObjectUserFactory::random(),
'password' => "test",
'roles' => [],
];


+ 47
- 0
src/Mapper/ProductApiToEntityMapper.php Parādīt failu

@@ -0,0 +1,47 @@
<?php

namespace App\Mapper;

use App\ApiResource\ProductApi;
use App\Entity\Product;
use App\Repository\ProductRepository;
use Symfonycasts\MicroMapper\AsMapper;
use Symfonycasts\MicroMapper\MapperInterface;

#[AsMapper(from: ProductApi::class, to: Product::class)]
class ProductApiToEntityMapper implements MapperInterface
{
public function __construct(
private ProductRepository $repository
)
{

}

public function load(object $from, string $toClass, array $context): object
{
$dto = $from;
assert($dto instanceof ProductApi);

$entity = $dto->id ? $this->repository->find($dto->id) : new Product();
if (!$entity) {
throw new \Exception('Product not found');
}

return $entity;
}

public function populate(object $from, object $to, array $context): object
{
$dto = $from;
assert($dto instanceof ProductApi);
$entity = $to;
assert($entity instanceof Product);

$entity->setName($dto->name);
$entity->setDescription($dto->description);
$entity->setImage($dto->image);

return $entity;
}
}

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels

Notiek ielāde…
Atcelt
Saglabāt