Bläddra i källkod

Merge branch 'master' of ssh://gitea.spawntree.de:1122/spawntree/matsen-tool-be

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

+ 0
- 57
migrations/Version20240304164555.php Visa fil

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

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240304164555 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, owner_id INT NOT NULL, posting_id INT NOT NULL, message LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_9474526C7E3C61F9 (owner_id), INDEX IDX_9474526C9AE985F6 (posting_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE contact (id INT AUTO_INCREMENT NOT NULL, partner_id INT NOT NULL, image_id INT DEFAULT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, birthday DATE DEFAULT NULL, position VARCHAR(255) DEFAULT NULL, phone VARCHAR(255) DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_4C62E6389393F8FE (partner_id), INDEX IDX_4C62E6383DA5256D (image_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE media_object (id INT AUTO_INCREMENT NOT NULL, file_path VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE partner (id INT AUTO_INCREMENT NOT NULL, logo_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(255) NOT NULL, street VARCHAR(255) DEFAULT NULL, street_no VARCHAR(255) DEFAULT NULL, zip VARCHAR(255) DEFAULT NULL, city VARCHAR(255) DEFAULT NULL, country VARCHAR(255) DEFAULT NULL, website VARCHAR(255) DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_312B3E16F98F144A (logo_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE posting (id INT AUTO_INCREMENT NOT NULL, owner_id INT NOT NULL, partner_id INT NOT NULL, contact_id INT DEFAULT NULL, headline VARCHAR(255) NOT NULL, message LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_BD275D737E3C61F9 (owner_id), INDEX IDX_BD275D739393F8FE (partner_id), INDEX IDX_BD275D73E7A1254A (contact_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE `user` (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NULL, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, roles JSON NOT NULL COMMENT \'(DC2Type:json)\', password VARCHAR(255) NOT NULL, active TINYINT(1) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C7E3C61F9 FOREIGN KEY (owner_id) REFERENCES `user` (id)');
$this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C9AE985F6 FOREIGN KEY (posting_id) REFERENCES posting (id)');
$this->addSql('ALTER TABLE contact ADD CONSTRAINT FK_4C62E6389393F8FE FOREIGN KEY (partner_id) REFERENCES partner (id)');
$this->addSql('ALTER TABLE contact ADD CONSTRAINT FK_4C62E6383DA5256D FOREIGN KEY (image_id) REFERENCES media_object (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE partner ADD CONSTRAINT FK_312B3E16F98F144A FOREIGN KEY (logo_id) REFERENCES media_object (id) ON DELETE SET NULL');
$this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D737E3C61F9 FOREIGN KEY (owner_id) REFERENCES `user` (id)');
$this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D739393F8FE FOREIGN KEY (partner_id) REFERENCES partner (id)');
$this->addSql('ALTER TABLE posting ADD CONSTRAINT FK_BD275D73E7A1254A FOREIGN KEY (contact_id) REFERENCES contact (id)');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C7E3C61F9');
$this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C9AE985F6');
$this->addSql('ALTER TABLE contact DROP FOREIGN KEY FK_4C62E6389393F8FE');
$this->addSql('ALTER TABLE contact DROP FOREIGN KEY FK_4C62E6383DA5256D');
$this->addSql('ALTER TABLE partner DROP FOREIGN KEY FK_312B3E16F98F144A');
$this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D737E3C61F9');
$this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D739393F8FE');
$this->addSql('ALTER TABLE posting DROP FOREIGN KEY FK_BD275D73E7A1254A');
$this->addSql('DROP TABLE comment');
$this->addSql('DROP TABLE contact');
$this->addSql('DROP TABLE media_object');
$this->addSql('DROP TABLE partner');
$this->addSql('DROP TABLE posting');
$this->addSql('DROP TABLE `user`');
}
}

+ 39
- 0
migrations/Version20240305152901.php Visa fil

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

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305152901 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE product (id INT AUTO_INCREMENT NOT NULL, image_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, description LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_D34A04AD3DA5256D (image_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('ALTER TABLE product ADD CONSTRAINT FK_D34A04AD3DA5256D FOREIGN KEY (image_id) REFERENCES media_object (id)');
$this->addSql('ALTER TABLE user ADD image_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE user ADD CONSTRAINT FK_8D93D6493DA5256D FOREIGN KEY (image_id) REFERENCES media_object (id)');
$this->addSql('CREATE INDEX IDX_8D93D6493DA5256D ON user (image_id)');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE product DROP FOREIGN KEY FK_D34A04AD3DA5256D');
$this->addSql('DROP TABLE product');
$this->addSql('ALTER TABLE `user` DROP FOREIGN KEY FK_8D93D6493DA5256D');
$this->addSql('DROP INDEX IDX_8D93D6493DA5256D ON `user`');
$this->addSql('ALTER TABLE `user` DROP image_id');
}
}

+ 69
- 0
src/ApiResource/ProductApi.php Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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är
src/DataFixtures/images/products/06e2aeec-08dc-4bb5-92d9-3cda1a83f7c9.jpg Visa fil

Före Efter
Bredd: 750  |  Höjd: 500  |  Storlek: 40 KiB

Binär
src/DataFixtures/images/products/089-Ask-Bild1.jpg Visa fil

Före Efter
Bredd: 646  |  Höjd: 441  |  Storlek: 72 KiB

Binär
src/DataFixtures/images/products/145454_pIhFN2Ugm.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/171651_1XE80u3Zy.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/179210247-chemikalien-in-reagenzgläsern-und-symbolen-die-im-labor-oder-in-der-industrie-verwendet-werden.jpg Visa fil

Före Efter
Bredd: 450  |  Höjd: 300  |  Storlek: 24 KiB

Binär
src/DataFixtures/images/products/20230222_Fluorchemikalien-_adpic.jpg Visa fil

Före Efter
Bredd: 1080  |  Höjd: 721  |  Storlek: 93 KiB

Binär
src/DataFixtures/images/products/20368327-vektorsymbol-fur-chemikalien-vektor.jpg Visa fil

Före Efter
Bredd: 661  |  Höjd: 980  |  Storlek: 50 KiB

Binär
src/DataFixtures/images/products/297744-reagenzglaser-mit-chemikalien-kostenlos-vektor.jpg Visa fil

Före Efter
Bredd: 556  |  Höjd: 490  |  Storlek: 30 KiB

Binär
src/DataFixtures/images/products/36461009_Chemikalien_Schlierner_Header1-1220x610-1.jpg Visa fil

Före Efter
Bredd: 1220  |  Höjd: 610  |  Storlek: 115 KiB

Binär
src/DataFixtures/images/products/4954227.png Visa fil

Före Efter
Bredd: 512  |  Höjd: 512  |  Storlek: 24 KiB

Binär
src/DataFixtures/images/products/615hboYBEVL._AC_UF894,1000_QL80_.jpg Visa fil

Före Efter
Bredd: 894  |  Höjd: 877  |  Storlek: 43 KiB

Binär
src/DataFixtures/images/products/6364c360d3bb5_c-KGNqzCL.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/6581938872383176.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/71I8kTNrSsL._AC_UF1000,1000_QL80_.jpg Visa fil

Före Efter
Bredd: 761  |  Höjd: 1000  |  Storlek: 57 KiB

Binär
src/DataFixtures/images/products/94e44c75-cccb-474c-bd9c-1d821e6f368a.jpeg Visa fil

Före Efter
Bredd: 525  |  Höjd: 525  |  Storlek: 60 KiB

Binär
src/DataFixtures/images/products/Akemi-Chemikaliensilicon.jpg Visa fil

Före Efter
Bredd: 660  |  Höjd: 660  |  Storlek: 78 KiB

Binär
src/DataFixtures/images/products/Bild → emikalien.png Visa fil


Binär
src/DataFixtures/images/products/Bismuttrioxid.jpg Visa fil

Före Efter
Bredd: 650  |  Höjd: 500  |  Storlek: 98 KiB

Binär
src/DataFixtures/images/products/Chamikalien_1g-2.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/Chemicals.png Visa fil

Före Efter
Bredd: 610  |  Höjd: 350  |  Storlek: 26 KiB

Binär
src/DataFixtures/images/products/Chemikalien-freist__ScaleWidthWzgwMF0.png Visa fil

Före Efter
Bredd: 800  |  Höjd: 800  |  Storlek: 240 KiB

Binär
src/DataFixtures/images/products/Chemikalien.jpg Visa fil

Före Efter
Bredd: 360  |  Höjd: 477  |  Storlek: 8.0 KiB

Binär
src/DataFixtures/images/products/Chemikalien_Antoine2K.jpg Visa fil

Före Efter
Bredd: 770  |  Höjd: 420  |  Storlek: 32 KiB

Binär
src/DataFixtures/images/products/Haushaltsreiniger → tzmittel Visa fil


Binär
src/DataFixtures/images/products/IGB_6860.jpg Visa fil

Före Efter
Bredd: 1000  |  Höjd: 563  |  Storlek: 65 KiB

Binär
src/DataFixtures/images/products/Leitthema_Chemikalienrecycling_935674692_Fotograf-BlackJack3D_iStock.jpg Visa fil

Före Efter
Bredd: 1200  |  Höjd: 600  |  Storlek: 88 KiB

Binär
src/DataFixtures/images/products/Reagenzglas.jpg Visa fil

Före Efter
Bredd: 895  |  Höjd: 502  |  Storlek: 130 KiB

Binär
src/DataFixtures/images/products/Unternehmen_Umweltauflagen_Bezug_Metallvearbeitungflüssigkeiten, → sch_Reinigungsmittel_Polymerprodukte.jpg Visa fil


Binär
src/DataFixtures/images/products/Wasser_Umwelt_AdobeStock_285345543_Natali-3000x1687-637x358.jpeg Visa fil

Före Efter
Bredd: 637  |  Höjd: 358  |  Storlek: 179 KiB

Binär
src/DataFixtures/images/products/a34880.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 800  |  Storlek: 33 KiB

Binär
src/DataFixtures/images/products/a34885.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 800  |  Storlek: 41 KiB

Binär
src/DataFixtures/images/products/abfall_chemikalien.jpg Visa fil

Före Efter
Bredd: 900  |  Höjd: 300  |  Storlek: 121 KiB

Binär
src/DataFixtures/images/products/adea669d-9924-4909-9d79-9143cb010eef_w960_r1.778_fpx63_fpy52.jpg Visa fil

Före Efter
Bredd: 960  |  Höjd: 540  |  Storlek: 61 KiB

Binär
src/DataFixtures/images/products/adobestock_611392391_chemikalien.jpeg Visa fil

Före Efter
Bredd: 960  |  Höjd: 540  |  Storlek: 50 KiB

Binär
src/DataFixtures/images/products/angetrieben-von-chemikalien.jpg Visa fil

Före Efter
Bredd: 378  |  Höjd: 378  |  Storlek: 11 KiB

Binär
src/DataFixtures/images/products/becher-mit-den-reagenzgläsern-gefüllt-mit-chemikalien-58624587.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/bi2o3_chda_-2.jpg Visa fil

Före Efter
Bredd: 1920  |  Höjd: 1280  |  Storlek: 1.7 MiB

Binär
src/DataFixtures/images/products/bunte-chemikalien-12777275.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/cg_chemikalien_group_rexx_systems-1024x538.jpg Visa fil

Före Efter
Bredd: 1024  |  Höjd: 538  |  Storlek: 56 KiB

Binär
src/DataFixtures/images/products/chemikalien-1.jpg Visa fil

Före Efter
Bredd: 533  |  Höjd: 400  |  Storlek: 17 KiB

Binär
src/DataFixtures/images/products/chemikalien-artikel2.jpeg Visa fil

Före Efter
Bredd: 987  |  Höjd: 392  |  Storlek: 43 KiB

Binär
src/DataFixtures/images/products/chemikalien-im-labor-700-119730440.jpg Visa fil

Före Efter
Bredd: 700  |  Höjd: 467  |  Storlek: 66 KiB

Binär
src/DataFixtures/images/products/chemikalien-im-wasser.jpg Visa fil

Före Efter
Bredd: 640  |  Höjd: 360  |  Storlek: 46 KiB

Binär
src/DataFixtures/images/products/chemikalien.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/chemikalien_AdobeStock_116776874.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/csm_Fotolia_21280019_M_Gefahrstoffe_d82c07547d.jpg Visa fil

Före Efter
Bredd: 727  |  Höjd: 545  |  Storlek: 53 KiB

Binär
src/DataFixtures/images/products/csm_KI_Becherglas_bunt_84e57f1426.jpg Visa fil

Före Efter
Bredd: 828  |  Höjd: 621  |  Storlek: 65 KiB

Binär
src/DataFixtures/images/products/enghals-chemikalien-flaschen_00018802.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/enghals-chemikalien-flaschen_00026892.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/gefahrstoffe_a_bruno_fotolia_24886834_m.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 400  |  Storlek: 86 KiB

Binär
src/DataFixtures/images/products/greenpeace.avif Visa fil


Binär
src/DataFixtures/images/products/images.jpg Visa fil

Före Efter
Bredd: 299  |  Höjd: 168  |  Storlek: 5.4 KiB

Binär
src/DataFixtures/images/products/impact-story-Chemicals-cover.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/istock-1355779437.jpg Visa fil

Före Efter
Bredd: 730  |  Höjd: 460  |  Storlek: 56 KiB

Binär
src/DataFixtures/images/products/justrite-notfall-set-chemikalien--1032976--470x470--p.jpg Visa fil

Före Efter
Bredd: 470  |  Höjd: 470  |  Storlek: 30 KiB

Binär
src/DataFixtures/images/products/labor-120~_v-varm_88873b.jpg Visa fil

Före Efter
Bredd: 512  |  Höjd: 288  |  Storlek: 21 KiB

Binär
src/DataFixtures/images/products/leadImage.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 450  |  Storlek: 50 KiB

Binär
src/DataFixtures/images/products/pipettieren-einer-oelprobe-zur-erforschung-von-medizin-und-chemikalien-CAVF95337.jpg Visa fil

Före Efter
Bredd: 480  |  Höjd: 360  |  Storlek: 28 KiB

Binär
src/DataFixtures/images/products/pngtree-chemicals-icon-in-trendy-style-isolated-background-png-image_1554545.jpg Visa fil

Före Efter
Bredd: 360  |  Höjd: 360  |  Storlek: 6.8 KiB

Binär
src/DataFixtures/images/products/shutterstock_1561135202-800x450.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 450  |  Storlek: 34 KiB

Binär
src/DataFixtures/images/products/spicytruffel-AdobeStock_316542333-Konvertiert.jpg Visa fil

Före Efter
Bredd: 960  |  Höjd: 600  |  Storlek: 206 KiB

Binär
src/DataFixtures/images/products/streitfall-chemikalien-wer.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/products/symbol-fuer-die-linie-der-flasche-mit-chemikalien_116137-5518.avif Visa fil


Binär
src/DataFixtures/images/products/teaserbox_2419937771.jpg Visa fil

Före Efter
Bredd: 900  |  Höjd: 617  |  Storlek: 123 KiB

Binär
src/DataFixtures/images/products/teaserbox_2446472365.jpg Visa fil

Före Efter
Bredd: 781  |  Höjd: 554  |  Storlek: 189 KiB

Binär
src/DataFixtures/images/products/teaserbox_2449303018.jpg Visa fil

Före Efter
Bredd: 900  |  Höjd: 563  |  Storlek: 260 KiB

Binär
src/DataFixtures/images/products/teaserbox_2450499236.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 585  |  Storlek: 181 KiB

Binär
src/DataFixtures/images/products/teaserbox_2462792495.jpg Visa fil

Före Efter
Bredd: 900  |  Höjd: 675  |  Storlek: 178 KiB

Binär
src/DataFixtures/images/products/teaserbox_2462830751.JPG Visa fil

Före Efter
Bredd: 900  |  Höjd: 620  |  Storlek: 273 KiB

Binär
src/DataFixtures/images/products/teaserbox_2473428103.JPG Visa fil

Före Efter
Bredd: 900  |  Höjd: 672  |  Storlek: 86 KiB

Binär
src/DataFixtures/images/products/urinprobe_bildquelle_joergbeuge_fotolia_27589149_m.jpg Visa fil

Före Efter
Bredd: 800  |  Höjd: 550  |  Storlek: 81 KiB

Binär
src/DataFixtures/images/products/weithals-chemikalien-flaschen_00018762.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/users/4798951-smurfs_color_pictures_poet_smurf.jpg Visa fil

Före Efter
Bredd: 320  |  Höjd: 320  |  Storlek: 25 KiB

Binär
src/DataFixtures/images/users/4798991-schtroumpf-paresseux.jpg Visa fil

Före Efter
Bredd: 320  |  Höjd: 320  |  Storlek: 24 KiB

Binär
src/DataFixtures/images/users/5e354e4c73be4d0ef14e6b761b27e25e.png Visa fil

Före Efter
Bredd: 792  |  Höjd: 752  |  Storlek: 22 KiB

Binär
src/DataFixtures/images/users/819027-brainy.jpg Visa fil

Före Efter
Bredd: 320  |  Höjd: 320  |  Storlek: 8.9 KiB

Binär
src/DataFixtures/images/users/Gizmo_Smurf_Vic_George.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/users/Handy_Comic_Book.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/users/SmurfCovidCartoonCharacter.SMjpg.webp Visa fil

Före Efter

Binär
src/DataFixtures/images/users/c2c97f0614837c506b5d25820988f6dc.jpg Visa fil

Före Efter
Bredd: 564  |  Höjd: 800  |  Storlek: 50 KiB

Binär
src/DataFixtures/images/users/e5f648d978973e3db259226929789f1d.jpg Visa fil

Före Efter
Bredd: 340  |  Höjd: 406  |  Storlek: 21 KiB

Binär
src/DataFixtures/images/users/images.jpg Visa fil

Före Efter
Bredd: 246  |  Höjd: 205  |  Storlek: 11 KiB

Binär
src/DataFixtures/images/users/images.png Visa fil

Före Efter
Bredd: 221  |  Höjd: 228  |  Storlek: 9.6 KiB

Binär
src/DataFixtures/images/users/slouchy-smurfling-tv-characters-photo-u1.jpg Visa fil

Före Efter
Bredd: 250  |  Höjd: 250  |  Storlek: 5.5 KiB

Binär
src/DataFixtures/images/users/tailor-smurf-tv-characters-photo-u1.jpg Visa fil

Före Efter
Bredd: 250  |  Höjd: 250  |  Storlek: 5.6 KiB

Binär
src/DataFixtures/images/users/the-king-tv-characters-photo-u1.jpg Visa fil

Före Efter
Bredd: 250  |  Höjd: 250  |  Storlek: 7.5 KiB

Binär
src/DataFixtures/images/users/the-smurfette-brainy-smurf-papa-smurf-the-smurfs-blonde-hair-cartoon-characters.jpg Visa fil

Före Efter
Bredd: 621  |  Höjd: 849  |  Storlek: 47 KiB

+ 2
- 1
src/Entity/MediaObject.php Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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 Visa fil

@@ -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;
}
}

+ 71
- 0
src/Factory/ProductFactory.php Visa fil

@@ -0,0 +1,71 @@
<?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::createOne(),
];
}

/**
* @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;
}
}

Vissa filer visades inte eftersom för många filer har ändrats

Laddar…
Avbryt
Spara