feat: check for email duplication when create or update membre
This commit is contained in:
parent
f75e805cc0
commit
7bd5e7baa5
@ -78,7 +78,8 @@ public class MembreService {
|
|||||||
final static String FIND_NAME_REQUEST = "unaccent(fname) ILIKE unaccent(?1) OR unaccent(lname) ILIKE unaccent(?1) " +
|
final static String FIND_NAME_REQUEST = "unaccent(fname) ILIKE unaccent(?1) OR unaccent(lname) ILIKE unaccent(?1) " +
|
||||||
"OR unaccent(fname || ' ' || lname) ILIKE unaccent(?1) OR unaccent(lname || ' ' || fname) ILIKE unaccent(?1)";
|
"OR unaccent(fname || ' ' || lname) ILIKE unaccent(?1) OR unaccent(lname || ' ' || fname) ILIKE unaccent(?1)";
|
||||||
|
|
||||||
public Uni<PageResult<SimpleMembre>> searchAdmin(int limit, int page, String search, String club, int licenceRequest) {
|
public Uni<PageResult<SimpleMembre>> searchAdmin(int limit, int page, String search, String club,
|
||||||
|
int licenceRequest) {
|
||||||
if (search == null)
|
if (search == null)
|
||||||
search = "";
|
search = "";
|
||||||
search = "%" + search.replaceAll(" ", "% %") + "%";
|
search = "%" + search.replaceAll(" ", "% %") + "%";
|
||||||
@ -91,9 +92,11 @@ public class MembreService {
|
|||||||
else if (licenceRequest == 2)
|
else if (licenceRequest == 2)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE", Utils.getSaison());
|
||||||
else if (licenceRequest == 5)
|
else if (licenceRequest == 5)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) >= 3", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) >= 3",
|
||||||
|
Utils.getSaison());
|
||||||
else if (licenceRequest == 6)
|
else if (licenceRequest == 6)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) <= 2", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) <= 2",
|
||||||
|
Utils.getSaison());
|
||||||
else if (licenceRequest == 3)
|
else if (licenceRequest == 3)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = TRUE", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = TRUE", Utils.getSaison());
|
||||||
else
|
else
|
||||||
@ -128,7 +131,8 @@ public class MembreService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uni<PageResult<SimpleMembre>> search(int limit, int page, String search, int licenceRequest, String subject) {
|
public Uni<PageResult<SimpleMembre>> search(int limit, int page, String search, int licenceRequest,
|
||||||
|
String subject) {
|
||||||
if (search == null)
|
if (search == null)
|
||||||
search = "";
|
search = "";
|
||||||
search = "%" + search.replaceAll(" ", "% %") + "%";
|
search = "%" + search.replaceAll(" ", "% %") + "%";
|
||||||
@ -141,9 +145,11 @@ public class MembreService {
|
|||||||
else if (licenceRequest == 2)
|
else if (licenceRequest == 2)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE", Utils.getSaison());
|
||||||
else if (licenceRequest == 5)
|
else if (licenceRequest == 5)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) >= 3", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) >= 3",
|
||||||
|
Utils.getSaison());
|
||||||
else if (licenceRequest == 6)
|
else if (licenceRequest == 6)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) <= 2", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = FALSE AND LENGTH(certificate) <= 2",
|
||||||
|
Utils.getSaison());
|
||||||
else if (licenceRequest == 3)
|
else if (licenceRequest == 3)
|
||||||
baseUni = licenceRepository.list("saison = ?1 AND validate = TRUE", Utils.getSaison());
|
baseUni = licenceRepository.list("saison = ?1 AND validate = TRUE", Utils.getSaison());
|
||||||
else
|
else
|
||||||
@ -317,6 +323,11 @@ public class MembreService {
|
|||||||
|
|
||||||
public Uni<String> update(long id, FullMemberForm membre) {
|
public Uni<String> update(long id, FullMemberForm membre) {
|
||||||
return update(repository.findById(id)
|
return update(repository.findById(id)
|
||||||
|
.call(__ -> repository.count("email LIKE ?1 AND id != ?2", membre.getEmail(), id)
|
||||||
|
.invoke(Unchecked.consumer(c -> {
|
||||||
|
if (c > 0)
|
||||||
|
throw new DBadRequestException("Email déjà utiliser");
|
||||||
|
})))
|
||||||
.chain(membreModel -> clubRepository.findById(membre.getClub())
|
.chain(membreModel -> clubRepository.findById(membre.getClub())
|
||||||
.map(club -> new Pair<>(membreModel, club)))
|
.map(club -> new Pair<>(membreModel, club)))
|
||||||
.onItem().transform(pair -> {
|
.onItem().transform(pair -> {
|
||||||
@ -334,6 +345,11 @@ public class MembreService {
|
|||||||
|
|
||||||
public Uni<String> update(long id, FullMemberForm membre, SecurityCtx securityCtx) {
|
public Uni<String> update(long id, FullMemberForm membre, SecurityCtx securityCtx) {
|
||||||
return update(repository.findById(id)
|
return update(repository.findById(id)
|
||||||
|
.call(__ -> repository.count("email LIKE ?1 AND id != ?2", membre.getEmail(), id)
|
||||||
|
.invoke(Unchecked.consumer(c -> {
|
||||||
|
if (c > 0)
|
||||||
|
throw new DBadRequestException("Email déjà utiliser");
|
||||||
|
})))
|
||||||
.invoke(Unchecked.consumer(membreModel -> {
|
.invoke(Unchecked.consumer(membreModel -> {
|
||||||
if (!securityCtx.isInClubGroup(membreModel.getClub().getId()))
|
if (!securityCtx.isInClubGroup(membreModel.getClub().getId()))
|
||||||
throw new DForbiddenException();
|
throw new DForbiddenException();
|
||||||
@ -420,6 +436,10 @@ public class MembreService {
|
|||||||
|
|
||||||
public Uni<Long> add(FullMemberForm input) {
|
public Uni<Long> add(FullMemberForm input) {
|
||||||
return clubRepository.findById(input.getClub())
|
return clubRepository.findById(input.getClub())
|
||||||
|
.call(__ -> repository.count("email LIKE ?1", input.getEmail())
|
||||||
|
.invoke(Unchecked.consumer(c -> {
|
||||||
|
if (c > 0) throw new DBadRequestException("Email déjà utiliser");
|
||||||
|
})))
|
||||||
.chain(clubModel -> {
|
.chain(clubModel -> {
|
||||||
MembreModel model = getMembreModel(input, clubModel);
|
MembreModel model = getMembreModel(input, clubModel);
|
||||||
return Panache.withTransaction(() -> repository.persist(model));
|
return Panache.withTransaction(() -> repository.persist(model));
|
||||||
@ -432,6 +452,10 @@ public class MembreService {
|
|||||||
|
|
||||||
public Uni<Long> add(FullMemberForm input, String subject) {
|
public Uni<Long> add(FullMemberForm input, String subject) {
|
||||||
return repository.find("userId = ?1", subject).firstResult()
|
return repository.find("userId = ?1", subject).firstResult()
|
||||||
|
.call(__ -> repository.count("email LIKE ?1", input.getEmail())
|
||||||
|
.invoke(Unchecked.consumer(c -> {
|
||||||
|
if (c > 0) throw new DBadRequestException("Email déjà utiliser");
|
||||||
|
})))
|
||||||
.call(membreModel ->
|
.call(membreModel ->
|
||||||
repository.count(
|
repository.count(
|
||||||
"unaccent(lname) ILIKE unaccent(?2) AND unaccent(fname) ILIKE unaccent(?2) AND club = ?3",
|
"unaccent(lname) ILIKE unaccent(?2) AND unaccent(fname) ILIKE unaccent(?2) AND club = ?3",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user