<?php

namespace Repository;

use Doctrine\ORM\EntityRepository;
use Entity\Werbenetzwerk;

class WerbenetzwerkRepository extends EntityRepository
{
    /**
     * Findet ein Werbenetzwerk anhand der ID
     */
    public function findById(int $id): ?Werbenetzwerk
    {
        return $this->find($id);
    }

    /**
     * Findet ein Werbenetzwerk anhand der User-ID
     */
    public function findByUserId(string $userId): ?Werbenetzwerk
    {
        return $this->findOneBy(['user_id' => $userId]);
    }

    /**
     * Findet ein Werbenetzwerk anhand des Users
     */
    public function findByUser(\Entity\User $user): ?Werbenetzwerk
    {
        return $user->getWerbenetzwerk();
    }

    /**
     * Findet alle Werbenetzwerke
     */
    public function findAllWerbenetzwerke(): array
    {
        return $this->findAll();
    }

    /**
     * Zählt alle Werbenetzwerke
     */
    public function countWerbenetzwerke(): int
    {
        return $this->createQueryBuilder('w')
            ->select('COUNT(w.id)')
            ->getQuery()
            ->getSingleScalarResult();
    }

    /**
     * Speichert ein Werbenetzwerk
     */
    public function save(Werbenetzwerk $werbenetzwerk): void
    {
        $this->getEntityManager()->persist($werbenetzwerk);
        $this->getEntityManager()->flush();
    }

    /**
     * Löscht ein Werbenetzwerk
     */
    public function delete(Werbenetzwerk $werbenetzwerk): void
    {
        $this->getEntityManager()->remove($werbenetzwerk);
        $this->getEntityManager()->flush();
    }
}
