feat: forced teamer data verification after configured due dates
addresses #869b33c7p
This commit is contained in:
@@ -8,7 +8,7 @@ use App\BusProNet\Model\CrmAttributesResponse;
|
||||
use App\BusProNet\Model\ProfileResponse;
|
||||
use App\BusProNet\UserDataHandler;
|
||||
use App\Entity\User;
|
||||
use App\Security\RequiredCheck\RequiredTeamerCheckRegistry;
|
||||
use App\RequiredTeamerCheck\RequiredTeamerCheckRegistry;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Security\RequiredCheck;
|
||||
|
||||
use App\Entity\Teamer;
|
||||
use App\Entity\Upload;
|
||||
use App\Entity\User;
|
||||
|
||||
class DriverLicenseRequiredCheck implements RequiredTeamerCheckInterface
|
||||
{
|
||||
public function getCode(): string
|
||||
{
|
||||
return 'driver_license';
|
||||
}
|
||||
|
||||
public function appliesTo(User $user): bool
|
||||
{
|
||||
return true === $user->hasRole('ROLE_TEAMER');
|
||||
}
|
||||
|
||||
public function isSatisfied(User $user): bool
|
||||
{
|
||||
$teamer = $user->getTeamer();
|
||||
|
||||
if (null === $teamer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$declaration = $teamer->getDriverLicenseDeclaration();
|
||||
|
||||
if (null === $declaration) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (false === $declaration) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (true === $teamer->isDriverLicenseVerified()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Teamer::DRIVER_LICENSE_STATUS_APPROVED === $teamer->getDriverLicenseStatus()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$upload = $teamer->getDriverLicenseUpload();
|
||||
|
||||
if (null === $upload) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Upload::TYPE_DRIVER_LICENSE !== $upload->getType()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Teamer::DRIVER_LICENSE_STATUS_DENIED === $teamer->getDriverLicenseStatus()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Upload::STATUS_REJECTED === $upload->getStatus()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getRouteName(): string
|
||||
{
|
||||
return 'app_teamer_check_driver_license';
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Security\RequiredCheck;
|
||||
|
||||
use App\Entity\User;
|
||||
|
||||
interface RequiredTeamerCheckInterface
|
||||
{
|
||||
public function getCode(): string;
|
||||
|
||||
public function appliesTo(User $user): bool;
|
||||
|
||||
public function isSatisfied(User $user): bool;
|
||||
|
||||
public function getRouteName(): string;
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Security\RequiredCheck;
|
||||
|
||||
use App\Entity\User;
|
||||
|
||||
class RequiredTeamerCheckRegistry
|
||||
{
|
||||
/**
|
||||
* @param iterable<RequiredTeamerCheckInterface> $checks
|
||||
*/
|
||||
public function __construct(private readonly iterable $checks)
|
||||
{
|
||||
}
|
||||
|
||||
public function getFirstUnresolvedCheck(User $user): ?RequiredTeamerCheckInterface
|
||||
{
|
||||
foreach ($this->checks as $check) {
|
||||
if (false === $check->appliesTo($user)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (false === $check->isSatisfied($user)) {
|
||||
return $check;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user