package fr.ippon.tatami.service; import fr.ippon.tatami.domain.User; import fr.ippon.tatami.domain.status.Status; import fr.ippon.tatami.repository.MentionlineRepository; import fr.ippon.tatami.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.inject.Inject; /** * Notifies a user when he is mentionned. */ @Service public class MentionService { @Inject private MentionlineRepository mentionlineRepository; @Inject private MailService mailService; @Autowired(required = false) private ApplePushService applePushService; @Inject private UserRepository userRepository; /** * A status that mentions a user is put in the user's mentionline and in his timeline. * The mentioned user can also be notified by email. */ public void mentionUser(String mentionedLogin, Status status) { mentionlineRepository.addStatusToMentionline(mentionedLogin, status.getStatusId()); User mentionnedUser = userRepository.findUserByLogin(mentionedLogin); if (mentionnedUser != null && (mentionnedUser.getPreferencesMentionEmail() == null || mentionnedUser.getPreferencesMentionEmail().equals(true))) { if (status.getStatusPrivate()) { // Private status mailService.sendUserPrivateMessageEmail(mentionnedUser, status); if (applePushService != null) { applePushService.notifyUser(mentionedLogin, status); } } else { mailService.sendUserMentionEmail(mentionnedUser, status); if (applePushService != null) { applePushService.notifyUser(mentionedLogin, status); } } } } }