NotificationServiceImpl.java
package com.is.findyourplace.service.gestioneAmministratori;
import com.is.findyourplace.persistence.dto.NotificaDto;
import com.is.findyourplace.persistence.entity.Notifica;
import com.is.findyourplace.persistence.entity.NotificaRicevuta;
import com.is.findyourplace.persistence.entity.Utente;
import com.is.findyourplace.persistence.repository.NotificaRepository;
import com.is.findyourplace.persistence.repository.UtenteRepository;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class NotificationServiceImpl implements NotificationService {
/**
* Repository Utente.
*/
private final UtenteRepository utenteRepository;
/**
* Repository Notifica.
*/
private final NotificaRepository notificaRepository;
/**
* Costruttore del service.
* @param utenteRepository UtenteRepository
* @param notificaRepository NotificaRepository
*/
public NotificationServiceImpl(
final UtenteRepository utenteRepository,
final NotificaRepository notificaRepository) {
this.utenteRepository = utenteRepository;
this.notificaRepository = notificaRepository;
}
@Override
@Transactional
public void saveNotifica(final NotificaDto notificaDto) {
Notifica notifica = new Notifica();
notifica.setAutore(notificaDto.getAutore());
notifica.setTesto(notificaDto.getTesto());
notifica.setDataInvio(notificaDto.getDataInvio());
notifica.setExpireDate(notificaDto.getDataScadenza());
notificaRepository.save(notifica);
Utente utente = utenteRepository.findByUsername(
notificaDto.getDestinatario()
);
NotificaRicevuta notificaRicevuta =
new NotificaRicevuta(utente, notifica);
utente.getNotificheRicevute().add(notificaRicevuta);
notifica.getNotificheRicevute().add(notificaRicevuta);
}
@Override
@Transactional
public void saveNotificaBroadcast(final NotificaDto notificaDto) {
Notifica notifica = new Notifica();
notifica.setAutore(notificaDto.getAutore());
notifica.setTesto(notificaDto.getTesto());
notifica.setDataInvio(notificaDto.getDataInvio());
notifica.setExpireDate(notificaDto.getDataScadenza());
notificaRepository.save(notifica);
for (Utente utente: utenteRepository.findAll()) {
NotificaRicevuta notificaRicevuta =
new NotificaRicevuta(utente, notifica);
utente.getNotificheRicevute().add(notificaRicevuta);
notifica.getNotificheRicevute().add(notificaRicevuta);
}
}
}