#3356 -- Remove media from upcoming queue if cleared from playlist.
This commit is contained in:
parent
98d3c2ccbd
commit
19a496a8ff
2 changed files with 39 additions and 2 deletions
|
@ -5,11 +5,29 @@ namespace App\Entity\Repository;
|
||||||
use App\Doctrine\Repository;
|
use App\Doctrine\Repository;
|
||||||
use App\Entity;
|
use App\Entity;
|
||||||
use App\Entity\StationPlaylist;
|
use App\Entity\StationPlaylist;
|
||||||
|
use App\Settings;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\NoResultException;
|
use Doctrine\ORM\NoResultException;
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
use RuntimeException;
|
use RuntimeException;
|
||||||
|
use Symfony\Component\Serializer\Serializer;
|
||||||
|
|
||||||
class StationPlaylistMediaRepository extends Repository
|
class StationPlaylistMediaRepository extends Repository
|
||||||
{
|
{
|
||||||
|
protected StationQueueRepository $queueRepo;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
EntityManagerInterface $em,
|
||||||
|
Serializer $serializer,
|
||||||
|
Settings $settings,
|
||||||
|
LoggerInterface $logger,
|
||||||
|
StationQueueRepository $queueRepo
|
||||||
|
) {
|
||||||
|
parent::__construct($em, $serializer, $settings, $logger);
|
||||||
|
|
||||||
|
$this->queueRepo = $queueRepo;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add the specified media to the specified playlist.
|
* Add the specified media to the specified playlist.
|
||||||
* Must flush the EntityManager after using.
|
* Must flush the EntityManager after using.
|
||||||
|
@ -96,6 +114,8 @@ class StationPlaylistMediaRepository extends Repository
|
||||||
|
|
||||||
$affectedPlaylists[$playlist->getId()] = $playlist;
|
$affectedPlaylists[$playlist->getId()] = $playlist;
|
||||||
|
|
||||||
|
$this->queueRepo->clearForMediaAndPlaylist($media, $playlist);
|
||||||
|
|
||||||
$this->em->remove($spmRow);
|
$this->em->remove($spmRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,19 @@ use Doctrine\ORM\QueryBuilder;
|
||||||
|
|
||||||
class StationQueueRepository extends Repository
|
class StationQueueRepository extends Repository
|
||||||
{
|
{
|
||||||
|
public function clearForMediaAndPlaylist(Entity\StationMedia $media, Entity\StationPlaylist $playlist): void
|
||||||
|
{
|
||||||
|
$this->em->createQuery(
|
||||||
|
<<<'DQL'
|
||||||
|
DELETE FROM App\Entity\StationQueue sq
|
||||||
|
WHERE sq.media = :media AND sq.playlist = :playlist
|
||||||
|
DQL
|
||||||
|
)
|
||||||
|
->setParameter('media', $media)
|
||||||
|
->setParameter('playlist', $playlist)
|
||||||
|
->execute();
|
||||||
|
}
|
||||||
|
|
||||||
public function getNextVisible(Entity\Station $station): ?Entity\StationQueue
|
public function getNextVisible(Entity\Station $station): ?Entity\StationQueue
|
||||||
{
|
{
|
||||||
$queue = $this->getUpcomingQueue($station);
|
$queue = $this->getUpcomingQueue($station);
|
||||||
|
@ -30,8 +43,12 @@ class StationQueueRepository extends Repository
|
||||||
$station = $queueRow->getStation();
|
$station = $queueRow->getStation();
|
||||||
|
|
||||||
// Remove all existing records that are marked as "sent to AutoDJ".
|
// Remove all existing records that are marked as "sent to AutoDJ".
|
||||||
$this->em->createQuery(/** @lang DQL */ 'DELETE FROM App\Entity\StationQueue sq
|
$this->em->createQuery(
|
||||||
WHERE sq.station = :station AND sq.sent_to_autodj = 1')
|
<<<'DQL'
|
||||||
|
DELETE FROM App\Entity\StationQueue sq
|
||||||
|
WHERE sq.station = :station AND sq.sent_to_autodj = 1
|
||||||
|
DQL
|
||||||
|
)
|
||||||
->setParameter('station', $station)
|
->setParameter('station', $station)
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue