Skip to content

Commit

Permalink
feat(tenant): Send mail after revoking partner access
Browse files Browse the repository at this point in the history
  • Loading branch information
juliette-derancourt committed Dec 7, 2023
1 parent 7f5987d commit f2c828d
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public ResponseEntity<List<PartnerAccessModel>> getPartnerAccesses() {
@DeleteMapping("/{id}")
public ResponseEntity<Void> revokePartnerAccess(@PathVariable("id") Long userApiId) {
Tenant tenant = authenticationFacade.getLoggedTenant();
partnerAccessService.deleteAccess(tenant.getApartmentSharing(), userApiId);
partnerAccessService.deleteAccess(tenant, userApiId);
return ok().build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
import java.util.List;
import java.util.Map;

import static fr.dossierfacile.common.enums.ApplicationType.*;

@Service
@RequiredArgsConstructor
@Slf4j
Expand Down Expand Up @@ -64,10 +66,6 @@ public class MailServiceImpl implements MailService {
private Long templateEmailWhenTenantNOTAssociatedToPartnersAndValidated;
@Value("${sendinblue.template.id.account.satisf.yes.assoc.to.partners}")
private Long templateEmailWhenTenantYESAssociatedToPartnersAndValidated;
@Value("${sendinblue.template.id.first.warning.for.deletion.of.documents}")
private Long templateFirstWarningForDeletionOfDocuments;
@Value("${sendinblue.template.id.second.warning.for.deletion.of.documents}")
private Long templateSecondWarningForDeletionOfDocuments;
@Value("${sendinblue.template.id.contact.support}")
private Long templateIdContactSupport;
@Value("${link.after.completed.default}")
Expand All @@ -76,7 +74,8 @@ public class MailServiceImpl implements MailService {
private String defaultCreatedUrl;
@Value("${sendinblue.template.id.share.file}")
private Long templateIdShareFile;

@Value("${sendinblue.template.id.partner.access.revoked}")
private Long templateIDPartnerAccessRevoked;
@Value("${sendinblue.domains.blacklist:example.com}")
private List<String> blackListedDomains;

Expand Down Expand Up @@ -133,7 +132,7 @@ public void sendEmailForFlatmates(User flatmate, User guest, PasswordRecoveryTok
variables.put("PRENOM", flatmate.getFirstName());
variables.put("confirmToken", passwordRecoveryToken.getToken());
variables.put("sendinBlueUrlDomain", sendinBlueUrlDomain);
if (applicationType == ApplicationType.GROUP) {
if (applicationType == GROUP) {
variables.put("NOM", Strings.isNullOrEmpty(flatmate.getPreferredName()) ? flatmate.getLastName() : flatmate.getPreferredName());
templateId = templateIdGroupApplication;
}
Expand Down Expand Up @@ -293,4 +292,28 @@ public void sendFileByMail(String url, String email, String tenantName, String f
log.error("Email Api Exception" + Sentry.captureException(e), e);
}
}

@Override
public void sendEmailPartnerAccessRevoked(Tenant receiver, UserApi userApi, Tenant revocationRequester) {
Map<String, String> variables = new HashMap<>();
variables.put("PRENOM", receiver.getFirstName());
variables.put("partnerName", userApi.getName2());
variables.put("requestOrigin", new RevocationRequest(revocationRequester, receiver).getOrigin());

sendEmailToTenant(receiver, variables, templateIDPartnerAccessRevoked);
}

private record RevocationRequest(Tenant requester, Tenant emailReceiver) {

String getOrigin() {
if (requester.getId().equals(emailReceiver.getId())) {
return "votre demande";
}
ApplicationType applicationType = requester.getApartmentSharing().getApplicationType();
String requesterType = applicationType == COUPLE ? "conjoint(e)" : "colocataire";
return String.format("la demande de votre %s %s", requesterType, requester.getFirstName());
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import fr.dossierfacile.api.front.mapper.PartnerAccessMapper;
import fr.dossierfacile.api.front.model.tenant.PartnerAccessModel;
import fr.dossierfacile.api.front.service.interfaces.KeycloakService;
import fr.dossierfacile.api.front.service.interfaces.MailService;
import fr.dossierfacile.api.front.service.interfaces.PartnerAccessService;
import fr.dossierfacile.common.entity.ApartmentSharing;
import fr.dossierfacile.common.entity.Tenant;
import fr.dossierfacile.common.entity.TenantUserApi;
import fr.dossierfacile.common.entity.UserApi;
Expand All @@ -23,15 +23,16 @@ public class PartnerAccessServiceImpl implements PartnerAccessService {
private final PartnerCallBackService partnerCallBackService;
private final PartnerAccessMapper partnerAccessMapper;
private final KeycloakService keycloakService;
private final MailService mailService;

@Override
public List<PartnerAccessModel> getAllPartners(Tenant tenant) {
return partnerAccessMapper.toModel(tenant.getTenantsUserApi());
}

@Override
public void deleteAccess(ApartmentSharing apartmentSharing, Long userApiId) {
tenantUserApiRepository.findAllByApartmentSharingAndUserApi(apartmentSharing.getId(), userApiId)
public void deleteAccess(Tenant tenant, Long userApiId) {
tenantUserApiRepository.findAllByApartmentSharingAndUserApi(tenant.getApartmentSharing().getId(), userApiId)
.forEach(this::deleteAccess);
}

Expand All @@ -42,6 +43,7 @@ private void deleteAccess(TenantUserApi tenantUserApi) {
tenantUserApiRepository.delete(tenantUserApi);
partnerCallBackService.sendRevokedAccessCallback(tenant, userApi);
keycloakService.revokeUserConsent(tenant, userApi);
mailService.sendEmailPartnerAccessRevoked(tenant, userApi, tenant);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,7 @@ public interface MailService {
void sendEmailWelcomeForPartnerUser(User user, UserApi userApi);

void sendFileByMail(String url, String email, String tenantName, String fullName, String tenantEmail);

void sendEmailPartnerAccessRevoked(Tenant receiver, UserApi userApi, Tenant revocationRequester);

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package fr.dossierfacile.api.front.service.interfaces;

import fr.dossierfacile.api.front.model.tenant.PartnerAccessModel;
import fr.dossierfacile.common.entity.ApartmentSharing;
import fr.dossierfacile.common.entity.Tenant;

import java.util.List;
Expand All @@ -10,6 +9,6 @@ public interface PartnerAccessService {

List<PartnerAccessModel> getAllPartners(Tenant tenant);

void deleteAccess(ApartmentSharing apartmentSharing, Long userApiId);
void deleteAccess(Tenant tenant, Long userApiId);

}

0 comments on commit f2c828d

Please sign in to comment.