diff --git a/.gitignore b/.gitignore index b52c7fba6ab4e0b68bba67d7e8844c469c2ba11d..69f2383d58307c2cf792b5b6d4961826a651ef5a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ config/secrets/prod/prod.decrypt.private.php public/bundles/ var/ vendor/ -docker/ .idea/ +docker/server migrations/ public/uploads \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..0e63ddeecd626fd30e476e754ff43f0f5f3fd263 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3.8" +services: + + db: + image: mysql:8.1.0 + container_name: db_docker_symfony + restart: always + volumes: + - ./server/mysql_data:/var/lib/mysql #this line maps the content of ./server/mysql_data in your pc to the /var/lib/mysql of the container + ports: + - 3306:3306 + environment: + MYSQL_ROOT_USER: 'root' + MYSQL_ROOT_PASSWORD: 'root' + networks: + - dev + + phpmyadmin: + image: phpmyadmin + container_name: phpmyadmin_docker_symfony + restart: always + depends_on: + - db + ports: + - 8080:80 + environment: + PMA_HOST: db + networks: + - dev + + maildev: + image: maildev/maildev + container_name: maildev_docker_symfony + command: bin/maildev --web 80 --smtp 25 --hide-extensions STARTTLS + ports: + - "8081:80" + restart: always + networks: + - dev + + www: + build: php + container_name: www_docker_symfony + ports: + - "8000:8000" + volumes: + - ./php/vhosts:/etc/apache2/sites-enabled + - ../:/var/www + restart: always + networks: + - dev + +networks: + dev: diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..feb00d622a4467a93c1b715b5fd5a91678344377 --- /dev/null +++ b/docker/php/Dockerfile @@ -0,0 +1,23 @@ +FROM php:8.2-apache + +RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + locales apt-utils git libicu-dev g++ libpng-dev libxml2-dev libzip-dev libonig-dev libxslt-dev unzip + +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen \ + && locale-gen + +RUN curl -sS https://getcomposer.org/installer | php -- \ + && mv composer.phar /usr/local/bin/composer + +RUN curl -sS https://get.symfony.com/cli/installer | bash \ + && mv /root/.symfony5/bin/symfony /usr/local/bin/symfony + +RUN docker-php-ext-configure intl +RUN docker-php-ext-install pdo pdo_mysql opcache intl zip calendar dom mbstring gd xsl +RUN pecl install apcu && docker-php-ext-enable apcu + +WORKDIR /var/www/ \ No newline at end of file diff --git a/docker/php/vhosts/vhosts.conf b/docker/php/vhosts/vhosts.conf new file mode 100644 index 0000000000000000000000000000000000000000..12be807ce7ceda2b0e70f2ced461ba508eeaf07e --- /dev/null +++ b/docker/php/vhosts/vhosts.conf @@ -0,0 +1,34 @@ +<VirtualHost *:80> + ServerName localhost + + DocumentRoot /var/www/project/public + DirectoryIndex /index.php + + <Directory /var/www/project/public> + AllowOverride None + Order Allow,Deny + Allow from All + + FallbackResource /index.php + </Directory> + + # uncomment the following lines if you install assets as symlinks + # or run into problems when compiling LESS/Sass/CoffeeScript assets + # <Directory /var/www/project> + # Options FollowSymlinks + # </Directory> + + # optionally disable the fallback resource for the asset directories + # which will allow Apache to return a 404 error when files are + # not found instead of passing the request to Symfony + <Directory /var/www/project/public/bundles> + FallbackResource disabled + </Directory> + ErrorLog /var/log/apache2/project_error.log + CustomLog /var/log/apache2/project_access.log combined + + # optionally set the value of the environment variables used in the application + #SetEnv APP_ENV prod + #SetEnv APP_SECRET <app-secret-id> + #SetEnv DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name" +</VirtualHost> diff --git a/src/Repository/WishlistRepository.php b/src/Repository/WishlistRepository.php index 543e6355e1e5b43770e58ccfb8ead23eccb5f6eb..93ae0c346f8f98da6aabcdbc5697fe72b343b3b6 100644 --- a/src/Repository/WishlistRepository.php +++ b/src/Repository/WishlistRepository.php @@ -3,6 +3,7 @@ namespace App\Repository; use App\Entity\Wishlist; +use DateTime; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; @@ -13,9 +14,49 @@ class WishlistRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { - parent::__construct($registry, Wishlist::class); + parent::__construct( $registry, Wishlist::class); + } + + + public function findByID($id) { + return $this->find($id); } + public function addWishlist(Wishlist $wishlist) { + $this->getEntityManager()->persist($wishlist) ; + $this->getEntityManager()->flush(); + } + + public function removeWishlist(int $wishlistId) { + $wishlist = $this->find($wishlistId); + if ($wishlist) { + $this->getEntityManager()->remove($wishlist); + $this->getEntityManager()->flush(); + } + } + + public function editWishList(int $wishlistId, string $name, DateTime $deadline) { + $wishlist = $this->find($wishlistId); + if ($wishlist) { + $wishlist->setName($name); + $wishlist->setDeadline($deadline); + $this->getEntityManager()->flush(); + } + } + + + + public function mostExpensiveList() { + $wishlists = $this->findAll() ; + + + foreach ($wishlists as $wishlist) { + $items = $wishlist->getItems(); + } + + + } + // /** // * @return Wishlist[] Returns an array of Wishlist objects // */