Skip to content
Snippets Groups Projects
WishListFixtures.php 2.72 KiB
<?php

namespace App\DataFixtures;

use App\Entity\User;
use App\Entity\WishList;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Doctrine\Common\DataFixtures\DependentFixtureInterface;

class WishListFixtures extends Fixture implements DependentFixtureInterface
{
    public function load(ObjectManager $manager): void
    {
        // Retrieve all users
        $users = $manager->getRepository(User::class)->findAll();

        if (empty($users)) {
            throw new \Exception('No users found. Please load UserFixtures first.');
        }

        $wishListsData = [
            [
                'name' => 'John\'s Birthday Wishlist',
                'description' => 'Birthday Wishlist',
                'user' => $users[0],  // Assuming at least one user exists
                'expiration_date' => new \DateTime('+30 days'),
                'is_active' => true,
                'url_view_mode' => 'http://url_view_mode.com',
                'url_edit_mode' => 'http://url_edit_mode.com',
            ],
            [
                'name' => 'Tech Gadgets Wishlist',
                'description' => 'Gadgets Wishlist',
                'user' => $users[1],  // Use second user if available, else first user
                'expiration_date' => new \DateTime('+60 days'),
                'is_active' => true,
                'url_view_mode' => 'http://url_view_mode.com',
                'url_edit_mode' => 'http://url_edit_mode.com',
            ],
            [
                'name' => 'Home Essentials Wishlist',
                'description' => 'Essentials Wishlist',
                'user' => $users[2],  // Use third user if available, else first user
                'expiration_date' => new \DateTime('+90 days'),
                'is_active' => false,
                'url_view_mode' => 'http://url_view_mode.com',
                'url_edit_mode' => 'http://url_edit_mode.com',
            ],
        ];

        foreach ($wishListsData as $wishListData) {
            $wishList = new WishList();
            $wishList->setName($wishListData['name']);
            $wishList->setDescription($wishListData['description']);
            $wishList->setUser($wishListData['user']);
            $wishList->setExpirationDate($wishListData['expiration_date']);
            $wishList->setIsActive($wishListData['is_active']);
            $wishList->setUrlViewMode($wishListData['url_view_mode']);
            $wishList->setUrlEditMode($wishListData['url_edit_mode']);
            $wishList->setCreatedAt(new \DateTimeImmutable());

            $manager->persist($wishList);
        }

        $manager->flush();
    }

    public function getDependencies(): array
    {
        return [
            UserFixtures::class
        ];
    }
}