feat: multiple hotelcodes assignable to users
This commit is contained in:
1 parent
5a07d95837
commit
c15188c43c
16 files changed
+256
-67
No files matched your search
@@ -32,16 +32,14 @@ class UserRepository extends ServiceEntityRepository
|
||||
$qb = $this->createQueryBuilder('u');
|
||||
|
||||
return $qb
|
||||
->where($qb->expr()->orX(
|
||||
$qb->expr()->like('u.roles', ':role_admin'),
|
||||
$qb->expr()->like('u.roles', ':role_manager'),
|
||||
$qb->expr()->like('u.roles', ':role_house_manager')
|
||||
))
|
||||
->where("JSON_CONTAINS(u.roles, :role_admin) = 1")
|
||||
->orWhere("JSON_CONTAINS(u.roles, :role_manager) = 1")
|
||||
->orWhere("JSON_CONTAINS(u.roles, :role_house_manager) = 1")
|
||||
->orderBy('u.lastName', 'ASC')
|
||||
->setParameters([
|
||||
'role_admin' => '%"ROLE_ADMIN"%',
|
||||
'role_manager' => '%"ROLE_MANAGER"%',
|
||||
'role_house_manager' => '%"ROLE_HOUSE_MANAGER"%',
|
||||
'role_admin' => json_encode('ROLE_ADMIN'),
|
||||
'role_manager' => json_encode('ROLE_MANAGER'),
|
||||
'role_house_manager' => json_encode('ROLE_HOUSE_MANAGER'),
|
||||
])
|
||||
->getQuery()
|
||||
->getResult()
|
||||
@@ -50,22 +48,29 @@ class UserRepository extends ServiceEntityRepository
|
||||
|
||||
/**
|
||||
* @param string $role
|
||||
* @param string $hotelCode
|
||||
* @param string[]|string $hotelCode
|
||||
* @return User[]
|
||||
*/
|
||||
public function getUsersByRoleAndHotelCode(string $role, string $hotelCode): array
|
||||
public function getUsersByRoleAndHotelCode(string $role, mixed $hotelCode): array
|
||||
{
|
||||
$hotelCodeBase = substr($hotelCode, 0, 3);
|
||||
$hotelCodes = (array) $hotelCode;
|
||||
|
||||
$hotelCodesBase = array_map(function ($code) {
|
||||
return substr($code, 0, 3);
|
||||
}, $hotelCodes);
|
||||
|
||||
$qb = $this->createQueryBuilder('user');
|
||||
|
||||
foreach ($hotelCodesBase as $index => $code) {
|
||||
$qb
|
||||
->orWhere('JSON_CONTAINS(user.hotelCodes, :hotelCode_'.$index.') = 1')
|
||||
->setParameter('hotelCode_'.$index, json_encode($code))
|
||||
;
|
||||
}
|
||||
|
||||
return $qb
|
||||
->where($qb->expr()->andX(
|
||||
$qb->expr()->eq('user.hotelCode', ':hotelCode'),
|
||||
$qb->expr()->like('user.roles', ':role')
|
||||
))
|
||||
->setParameter('hotelCode', $hotelCodeBase)
|
||||
->setParameter('role', '%"'.$role.'"%')
|
||||
->andWhere('JSON_CONTAINS(user.roles, :role) = 1')
|
||||
->setParameter('role', json_encode($role))
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
@@ -76,17 +81,15 @@ class UserRepository extends ServiceEntityRepository
|
||||
$qb = $this->createQueryBuilder('user');
|
||||
|
||||
$users = $qb
|
||||
->where($qb->expr()->andX(
|
||||
$qb->expr()->orX(
|
||||
$qb->expr()->like('user.lastName', ':search'),
|
||||
$qb->expr()->like('user.firstName', ':search'),
|
||||
)),
|
||||
$qb->expr()->like('user.roles', ':role')
|
||||
)
|
||||
->where($qb->expr()->orX(
|
||||
$qb->expr()->like('user.lastName', ':search'),
|
||||
$qb->expr()->like('user.firstName', ':search'),
|
||||
))
|
||||
->andWhere('JSON_CONTAINS(user.roles, :role) = 1')
|
||||
->orderBy('user.lastName', 'ASC')
|
||||
->addOrderBy('user.firstName', 'ASC')
|
||||
->setParameter('search', '%'.$this->escapeLikeWildcards($search).'%')
|
||||
->setParameter('role', '%"'.$this->escapeLikeWildcards($role).'"%')
|
||||
->setParameter('role', json_encode($role))
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
|
||||
Reference in new issue
Block a user