Merge remote-tracking branch 'origin/develop' into develop
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-06-06 12:20:18 +02:00
4 changed files with 26 additions and 22 deletions

View File

@@ -2,6 +2,7 @@ package it.integry.firebase.dto;
import com.google.firebase.messaging.FcmOptions;
import com.google.firebase.messaging.Message;
import it.integry.ems_model.entity.WtbUserDeviceToken;
import it.integry.firebase.dto.android.AndroidConfigDTO;
import it.integry.firebase.dto.apns.ApnsConfigDTO;
import it.integry.firebase.dto.webpush.WebpushConfigDTO;
@@ -19,6 +20,7 @@ public class MessageDTO {
private String condition;
private String analyticsLabel;
private String userName;
private WtbUserDeviceToken.AppName appName;
public Message.Builder toBuilder() {
Message.Builder builder = Message.builder();
@@ -151,4 +153,13 @@ public class MessageDTO {
this.userName = userName;
return this;
}
public WtbUserDeviceToken.AppName getAppName() {
return appName;
}
public MessageDTO setAppName(WtbUserDeviceToken.AppName appName) {
this.appName = appName;
return this;
}
}

View File

@@ -7,6 +7,7 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.entity.WtbDeviceTokenTopic;
import it.integry.ems_model.entity.WtbUserDeviceToken;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.Query;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityHashMap;
import it.integry.firebase.enums.SubscribeOperation;
@@ -124,29 +125,19 @@ public class DeviceTokenService {
}
public List<WtbUserDeviceToken> getUserDevices(String userName) throws Exception {
String sql = "SELECT * from wtb_user_device_tokens where user_name = " + UtilityDB.valueToString(userName);
return getUserDevices(userName, null);
}
Connection connection = multiDBTransactionManager.getPrimaryConnection();
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
List<WtbUserDeviceToken> devices = new ArrayList<>();
public List<WtbUserDeviceToken> getUserDevices(String userName, WtbUserDeviceToken.AppName appName) throws Exception {
String sql = Query.format(
"SELECT *\n" +
"FROM wtb_user_device_tokens\n" +
"WHERE user_name = %s\n" +
" AND (%s IS NULL OR app_name = %s)",
userName, appName.getValue(), appName.getValue()
);
while (rs.next()) {
WtbUserDeviceToken device = new WtbUserDeviceToken();
device.setDeviceToken(rs.getString("device_token"));
device.setAppName(WtbUserDeviceToken.AppName.from(rs.getInt("app_name")));
device.setId(rs.getLong("id"));
device.setPlatform(rs.getString("platform"));
device.setUserName(rs.getString("user_name"));
devices.add(device);
}
rs.close();
ps.close();
return devices;
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, WtbUserDeviceToken.class);
}
public List<String> getUserAssociatedTopics(String userName) throws Exception {

View File

@@ -547,7 +547,7 @@ public class NotificationService {
throw new Exception("Username nullo in sendNotificationToUserDevices.");
}
for (WtbUserDeviceToken device : deviceTokenService.getUserDevices(messageDTO.getUserName())) {
for (WtbUserDeviceToken device : deviceTokenService.getUserDevices(messageDTO.getUserName(), messageDTO.getAppName())) {
try {
Message message = messageDTO.toBuilder()
.setToken(device.getDeviceToken())

View File

@@ -14,6 +14,7 @@ import it.integry.ems.user.service.UserService;
import it.integry.ems.utility.service.UtilityService;
import it.integry.ems_model.entity.JtbRLavr;
import it.integry.ems_model.entity.JtbRLavt;
import it.integry.ems_model.entity.WtbUserDeviceToken;
import it.integry.ems_model.exception.DataConverterNotFoundException;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
@@ -236,6 +237,7 @@ public class UserWorkHoursService {
notificationService.sendNotificationToUserDevices(new MessageDTO()
.setUserName(user.getUsername())
.setAppName(WtbUserDeviceToken.AppName.WINCLOCK)
.setNotification(new NotificationDTO()
.setTitle("Brav*")
.setBody("Hai completato le tue 8 ore di lavoro giornaliere 😁🙌"))