Skip to content

Commit cf0e420

Browse files
fix repo methods
1 parent 7834ea1 commit cf0e420

4 files changed

Lines changed: 32 additions & 3 deletions

File tree

src/Entity/MollieSubscription.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,18 @@ public function getMigratedAt(): ?\DateTime
130130
return $this->migratedAt;
131131
}
132132

133-
public function setMigratedAt(?\DateTime $migratedAt): void
133+
public function setMigratedAt(?\DateTimeInterface $migratedAt): void
134134
{
135-
$this->migratedAt = $migratedAt;
135+
if ($migratedAt instanceof \DateTimeImmutable) {
136+
$this->migratedAt = \DateTime::createFromImmutable($migratedAt);
137+
} else {
138+
$this->migratedAt = $migratedAt;
139+
}
140+
}
141+
142+
public function isMigrated(): bool
143+
{
144+
return null !== $this->migratedAt;
136145
}
137146

138147
public function getLastOrder(): ?SyliusOrder

src/Entity/MollieSubscriptionInterface.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ public function setStartedAt(?\DateTime $startedAt = null): void;
8484

8585
public function getMigratedAt(): ?\DateTime;
8686

87-
public function setMigratedAt(?\DateTime $migratedAt): void;
87+
public function setMigratedAt(?\DateTimeInterface $migratedAt): void;
88+
89+
public function isMigrated(): bool;
8890

8991
/** @return Collection<int, MollieSubscriptionScheduleInterface> */
9092
public function getSchedules(): Collection;

src/Repository/MollieSubscriptionRepository.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,19 @@ public function findScheduledSubscriptions(): array
7171
return $qb->getQuery()->getResult();
7272
}
7373

74+
public function findScheduledSubscriptionsForMigration(): array
75+
{
76+
$qb = $this->createQueryBuilder('q');
77+
$qb->andWhere('q.state IN (:states)');
78+
$qb->setParameter('states', [MollieSubscriptionInterface::STATE_ACTIVE, MollieSubscriptionInterface::STATE_PROCESSING]);
79+
$qb->leftJoin('q.schedules', 's');
80+
$qb->andWhere('s.scheduledDate < :date');
81+
$qb->setParameter('date', new \DateTime());
82+
$qb->andWhere('s.fulfilledDate IS NULL');
83+
84+
return $qb->getQuery()->getResult();
85+
}
86+
7487
public function findProcessableSubscriptions(): array
7588
{
7689
$qb = $this->createQueryBuilder('q');
@@ -86,6 +99,8 @@ public function iterateToMigrate(int $batchSize): iterable
8699
{
87100
$qb = $this->createQueryBuilder('q');
88101
$qb->andWhere('q.migratedAt IS NULL');
102+
$qb->andWhere('q.state != :paused');
103+
$qb->setParameter('paused', MollieSubscriptionInterface::STATE_PAUSED);
89104
$qb->setMaxResults($batchSize);
90105

91106
return $qb->getQuery()->toIterable();

src/Repository/MollieSubscriptionRepositoryInterface.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ public function findByPayment(PaymentInterface $payment): array;
3030
/** @return MollieSubscriptionInterface[] */
3131
public function findScheduledSubscriptions(): array;
3232

33+
/** @return MollieSubscriptionInterface[] */
34+
public function findScheduledSubscriptionsForMigration(): array;
35+
3336
/** @return MollieSubscriptionInterface[] */
3437
public function findProcessableSubscriptions(): array;
3538

0 commit comments

Comments
 (0)