CancelPasswordRequestsByUserQueryObject   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 0
dl 0
loc 32
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A createQuery() 0 13 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SixtyEightPublishers\User\ForgotPassword\Query;
6
7
use DateTime;
8
use DateTimeZone;
9
use Doctrine\ORM\QueryBuilder;
10
use SixtyEightPublishers\DoctrineQueryObjects\AbstractQueryObject;
11
use SixtyEightPublishers\User\ForgotPassword\Entity\UserInterface;
12
use SixtyEightPublishers\User\ForgotPassword\Entity\PasswordRequestInterface;
13
use SixtyEightPublishers\DoctrineQueryObjects\QueryFactory\QueryFactoryInterface;
14
15
final class CancelPasswordRequestsByUserQueryObject extends AbstractQueryObject
16
{
17
	/** @var \SixtyEightPublishers\User\ForgotPassword\Entity\UserInterface  */
18
	private $user;
19
20
	/**
21
	 * @param \SixtyEightPublishers\User\ForgotPassword\Entity\UserInterface $user
22
	 */
23
	public function __construct(UserInterface $user)
24
	{
25
		$this->user = $user;
26
	}
27
28
	/**
29
	 * {@inheritDoc}
30
	 *
31
	 * @throws \Exception
32
	 */
33
	public function createQuery(QueryFactoryInterface $queryFactory): QueryBuilder
34
	{
35
		return $queryFactory->createQueryBuilder()
36
			->update(PasswordRequestInterface::class, 'pr')
37
			->set('pr.status', ':newStatus')
38
			->set('pr.updated', ':now')
39
			->where('pr.user = :user')
40
			->andWhere('pr.status = :status')
41
			->setParameter('user', $this->user->getId())
42
			->setParameter('status', PasswordRequestInterface::STATUS_CREATED)
43
			->setParameter('newStatus', PasswordRequestInterface::STATUS_CANCELED)
44
			->setParameter('now', new DateTime('now', new DateTimeZone('UTC')));
45
	}
46
}
47