From 96b57519fbe6f243653049b662e2026946bf89fd Mon Sep 17 00:00:00 2001 From: piyushkag Date: Tue, 24 Dec 2024 16:07:42 +0530 Subject: [PATCH] Updated Apis, Code, Configurations for Notification. --- .../TendermanagementApplication.java | 5 +- .../config/WebSocketConfig.java | 24 ++- .../constants/GepafinConstant.java | 5 +- .../gepafin/tendermanagement/dao/CallDao.java | 4 +- .../tendermanagement/dao/NotificationDao.java | 155 ++++++++++-------- .../entities/NotificationEntity.java | 22 ++- .../entities/NotificationTypeEntity.java | 7 +- .../model/request/NotificationReq.java | 12 +- .../model/response/NotificationResponse.java | 19 ++- .../repositories/NotificationRepository.java | 6 +- .../UserWithCompanyRepository.java | 19 ++- .../service/NotificationService.java | 6 +- .../service/impl/NotificationServiceImpl.java | 22 ++- .../gepafin/tendermanagement/util/Utils.java | 5 - .../web/rest/api/NotificationApi.java | 84 +++++----- .../api/impl/NotificationApiController.java | 26 +-- src/main/resources/application-dev.properties | 9 +- .../resources/application-local.properties | 6 +- .../application-production.properties | 9 +- .../resources/application-testing.properties | 16 +- .../db/changelog/db.changelog-1.0.0.xml | 14 +- src/main/resources/message_en.properties | 1 + src/main/resources/message_it.properties | 3 +- 23 files changed, 278 insertions(+), 201 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/TendermanagementApplication.java b/src/main/java/net/gepafin/tendermanagement/TendermanagementApplication.java index 1465ad7e..c220b176 100644 --- a/src/main/java/net/gepafin/tendermanagement/TendermanagementApplication.java +++ b/src/main/java/net/gepafin/tendermanagement/TendermanagementApplication.java @@ -23,10 +23,7 @@ public class TendermanagementApplication { @Override public void addCorsMappings(CorsRegistry registry) { - //remove after testing -//add url for a demo html and js project created on Vs code and ran it from go live on right bottim corner user gepafin_dev_local backup DB for gettng notification on FE. - registry.addMapping("/**").allowedOrigins("http://127.0.0.1:5500", "http://localhost:3000", "http://localhost:5500") - .allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD").allowCredentials(true); + registry.addMapping("/**").allowedOrigins("http://localhost:3000").allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD").allowCredentials(true); } } diff --git a/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java b/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java index b12207e6..8aa01986 100644 --- a/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java +++ b/src/main/java/net/gepafin/tendermanagement/config/WebSocketConfig.java @@ -1,5 +1,6 @@ package net.gepafin.tendermanagement.config; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.config.MessageBrokerRegistry; import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; @@ -10,23 +11,28 @@ import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerCo @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer { + @Value("${spring.rabbitmq.host}") + private String relayHost; + + @Value("${spring.rabbitmq.port}") + private int relayPort; + + @Value("${spring.rabbitmq.username}") + private String clientUserName; + + @Value("${spring.rabbitmq.password}") + private String clientPassword; + @Override public void configureMessageBroker(MessageBrokerRegistry config) { - // Enable a simple broker for both /topic (broadcast messages) and /queue (user-specific messages) - config.enableStompBrokerRelay("/topic") - .setRelayHost("localhost") - .setRelayPort(61613) // RabbitMQ is running on port 61613 - .setClientLogin("guest") - .setClientPasscode("guest"); - // Prefix for application messages (user sends messages to /app endpoints) + config.enableStompBrokerRelay("/topic").setRelayHost(relayHost).setRelayPort(relayPort).setClientLogin(clientUserName).setClientPasscode(clientPassword); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/gs-guide-websocket").setAllowedOrigins("http://127.0.0.1:5501/", "http://localhost:5500", "http://localhost:5501", "http://127.0.0.1:5500/") - .withSockJS(); + registry.addEndpoint("/wss").setAllowedOrigins("http://localhost:3000").withSockJS(); } } diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index d7b8e6a7..f0ebabeb 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -1,7 +1,5 @@ package net.gepafin.tendermanagement.constants; -import com.amazonaws.services.dynamodbv2.xspec.S; - public class GepafinConstant { public static final String USER_CREATED_SUCCESS_MSG = "user.created.success"; @@ -353,8 +351,7 @@ public class GepafinConstant { public static final String NOTIFICATION_ALREADY_IN_THAT_STATE="notification.already.in.state"; public static final String NOTIFICATION_DELETED_SUCCESSFULLY="notification.deleted.successfully"; public static final String NOTIFICATION_UPDATED_SUCCESSFULLY="notification.updated.successfully"; - - + public static final String USER_WITH_COMPANY_NOT_FOUND = "user.with.company.not.found"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 45d81d9c..7382f1c6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -51,6 +51,7 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status; import static net.gepafin.tendermanagement.enums.RoleStatusEnum.ROLE_SUPER_ADMIN; import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; +import static org.hibernate.internal.util.collections.CollectionHelper.listOf; @Component public class CallDao { @@ -845,7 +846,8 @@ public class CallDao { Map placeholders = new HashMap<>(); placeholders.put("{{call_name}}", callEntity.getName()); userIds.forEach(userId -> { - NotificationReq notificationReq = notificationDao.createNotificationReq(NotificationTypeEnum.CALL_CREATED.getValue(), placeholders, userId); + List companyIds = notificationDao.getAllCompanyIdsForUser(userId); + NotificationReq notificationReq = notificationDao.createNotificationReq(NotificationTypeEnum.CALL_CREATED.getValue(), placeholders, userId, null, companyIds); notificationDao.sendNotification(notificationReq); }); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/NotificationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/NotificationDao.java index 97e9b568..5f7d700f 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/NotificationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/NotificationDao.java @@ -1,6 +1,5 @@ package net.gepafin.tendermanagement.dao; -import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; @@ -19,6 +18,7 @@ import net.gepafin.tendermanagement.repositories.NotificationRepository; import net.gepafin.tendermanagement.repositories.NotificationTypeRepository; import net.gepafin.tendermanagement.repositories.UserRepository; import net.gepafin.tendermanagement.repositories.UserWithCompanyRepository; +import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; @@ -34,6 +34,8 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import static org.hibernate.internal.util.collections.CollectionHelper.listOf; + @Component @Slf4j public class NotificationDao { @@ -56,6 +58,9 @@ public class NotificationDao { @Autowired private CompanyDao companyDao; + @Autowired + private ApplicationService applicationService; + public NotificationResponse sendNotification(NotificationReq notificationReq) { // Ensure userId is properly set in notificationReq if not already @@ -68,7 +73,7 @@ public class NotificationDao { log.info("Sending notification to user {} with content: {}", userId, notificationReq.getMessage()); List companyIds = notificationReq.getCompanyIds(); - if (companyIds==null || companyIds.isEmpty()) { + if (companyIds == null || companyIds.isEmpty()) { sendToUser(userId, notificationEntity); } else { sendToCompanies(userId, companyIds, notificationEntity); @@ -79,40 +84,50 @@ public class NotificationDao { private NotificationEntity saveNotification(NotificationReq notificationReq) { - NotificationEntity notificationEntity = convertToNotificationEntity(notificationReq); - return notificationRepository.save(notificationEntity); + return notificationRepository.save(convertNotificationRequestToNotificationEntity(notificationReq)); } private void sendToUser(Long userId, NotificationEntity notificationEntity) { String userChannel = GepafinConstant.COMMON_SINGLE_CHANNEL_PREFIX + userId; log.info("Channel for User {}", userChannel); - messagingTemplate.convertAndSend(userChannel, notificationEntity); + NotificationResponse notificationResponse = convertNotificationEntityToNotificationResponse(notificationEntity); + messagingTemplate.convertAndSend(userChannel, notificationResponse); } private void sendToCompanies(Long userId, List companyIds, NotificationEntity notificationEntity) { // Send notification to each company provided in the companyIds list companyIds.forEach(companyId -> { + UserWithCompanyEntity userWithCompany = userWithCompanyRepository.findByUserIdAndCompanyIdAndIsDeletedFalseForNotification(userId, companyId); String companyChannel = Utils.createChannelForUserAndCompany(userId, companyId); log.info("Channel for User and Company {}, {}", userId, companyChannel); - messagingTemplate.convertAndSend(companyChannel, notificationEntity); + if (userWithCompany == null) { + throw new CustomValidationException(Status.BAD_REQUEST, GepafinConstant.USER_WITH_COMPANY_NOT_FOUND); + } + notificationEntity.setUserWithCompany(userWithCompany); + notificationRepository.save(notificationEntity); + NotificationResponse notificationResponse = convertNotificationEntityToNotificationResponse(notificationEntity); + messagingTemplate.convertAndSend(companyChannel, notificationResponse); }); } - private NotificationReq convertToNotificationReq(NotificationEntity notificationEntity) { - - NotificationReq notificationReq = new NotificationReq(); - notificationReq.setId(notificationEntity.getId()); - notificationReq.setUserId(notificationEntity.getUserId()); - notificationReq.setStatus(NotificationEnum.UNREAD.getValue()); - notificationReq.setMessage(notificationEntity.getMessage()); - notificationReq.setCreatedDate(notificationEntity.getCreatedDate()); - notificationReq.setUpdatedDate(notificationEntity.getUpdatedDate()); - return notificationReq; + private NotificationResponse convertNotificationEntityToNotificationResponse(NotificationEntity notificationEntity) { + NotificationResponse notificationResponse = new NotificationResponse(); + notificationResponse.setId(notificationEntity.getId()); + notificationResponse.setUserId(notificationEntity.getUserId()); + notificationResponse.setStatus(notificationEntity.getStatus()); + notificationResponse.setMessage(notificationEntity.getMessage()); + notificationResponse.setCreatedDate(notificationEntity.getCreatedDate()); + notificationResponse.setUpdatedDate(notificationEntity.getUpdatedDate()); + notificationResponse.setRedirectUrl(notificationEntity.getNotificationType()); + notificationResponse.setCompanyId(notificationEntity.getUserWithCompany() != null ? notificationEntity.getUserWithCompany().getCompanyId() : null); + notificationResponse.setNotificationType(notificationEntity.getNotificationType()); + notificationResponse.setTitle(notificationEntity.getTitle()); + return notificationResponse; } - private NotificationEntity convertToNotificationEntity(NotificationReq notificationReq) { + private NotificationEntity convertNotificationRequestToNotificationEntity(NotificationReq notificationReq) { NotificationEntity notificationEntity = new NotificationEntity(); String message = notificationReq.getMessage(); @@ -120,108 +135,107 @@ public class NotificationDao { notificationEntity.setUserId(notificationReq.getUserId()); notificationEntity.setStatus(NotificationEnum.UNREAD.getValue()); notificationEntity.setIsDeleted(Boolean.FALSE); + notificationEntity.setUserWithCompany(notificationReq.getUserWithCompanyEntity() != null ? notificationReq.getUserWithCompanyEntity() : null); notificationEntity.setMessage(message); + notificationEntity.setTitle(notificationReq.getTitle()); return notificationEntity; } - public NotificationReq createNotificationReq(String notificationType, Map placeholders, Long userId) { + public NotificationReq createNotificationReq(String notificationType, Map placeholders, Long userId, UserWithCompanyEntity userWithCompanyEntity, + List companyIds) { // Create NotificationReq object NotificationReq notificationReq = new NotificationReq(); - List companyIds = userWithCompanyRepository.findActiveCompanyIdsByUserId(notificationReq.getUserId()); - notificationReq.setCompanyIds(companyIds); NotificationTypeEntity notificationTypeEntity = notificationTypeRepository.findByNotificationNameAndIsDeletedFalse(notificationType); notificationReq.setNotificationType(notificationType); String message = Utils.replacePlaceholders(notificationTypeEntity.getJsonTemplate(), placeholders); notificationReq.setMessage(message); notificationReq.setUserId(userId); + notificationReq.setCompanyIds(companyIds); + String title = Utils.replacePlaceholders(notificationTypeEntity.getTitle(), placeholders); + notificationReq.setTitle(title); + notificationReq.setUserWithCompanyEntity(userWithCompanyEntity); return notificationReq; } + public Map sendNotificationToBeneficiary(ApplicationEntity application, NotificationTypeEnum notificationTypeEnum) { + Map placeHolders = new HashMap<>(); placeHolders.put("{{call_name}}", application.getCall().getName()); placeHolders.put("{{protocol_number}}", String.valueOf(application.getProtocol().getProtocolNumber())); - NotificationReq notificationReq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders, application.getUserId()); + NotificationReq notificationReq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders, application.getUserId(), application.getUserWithCompany(), + listOf(application.getCompanyId())); sendNotification(notificationReq); return placeHolders; } public void sendNotificationToInstructor(Map placeHolders, ApplicationEvaluationEntity applicationEvaluationEntity, NotificationTypeEnum notificationTypeEnum) { - Long instructorId=applicationEvaluationEntity.getUserId(); - if(instructorId != null){ - NotificationReq notificationreq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders,instructorId); + + Long instructorId = applicationEvaluationEntity.getUserId(); + ApplicationEntity application = applicationService.validateApplication(applicationEvaluationEntity.getApplicationId()); + if (instructorId != null) { + NotificationReq notificationreq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders, instructorId, application.getUserWithCompany(), + listOf(application.getCompanyId())); sendNotification(notificationreq); } } - public void sendNotificationToSuperUser(ApplicationEntity application,Map placeHolders,NotificationTypeEnum notificationTypeEnum) { - List user=userRepository.findByRoleEntity_RoleTypeAndHubId(RoleStatusEnum.ROLE_SUPER_ADMIN.getValue(), application.getHubId()); - UserEntity userEntity1=user.get(0); - if(userEntity1 != null) { - NotificationReq notificationreq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders,userEntity1.getId()); + public void sendNotificationToSuperUser(ApplicationEntity application, Map placeHolders, NotificationTypeEnum notificationTypeEnum) { + + List user = userRepository.findByRoleEntity_RoleTypeAndHubId(RoleStatusEnum.ROLE_SUPER_ADMIN.getValue(), application.getHubId()); + UserEntity userEntity1 = user.get(0); + if (userEntity1 != null) { + NotificationReq notificationreq = createNotificationReq(notificationTypeEnum.getValue(), placeHolders, userEntity1.getId(), application.getUserWithCompany(), + listOf(application.getCompanyId())); sendNotification(notificationreq); } } + + public List getAllCompanyIdsForUser(Long userId) { + + return userWithCompanyRepository.findActiveCompanyIdsByUserId(userId); + } + public NotificationResponse getNotificationById(Long id) { + NotificationEntity notificationEntity = validateNotificationEntity(id); - NotificationResponse notificationReq=convertNotificationEntityToNotificationResponse(notificationEntity); - return notificationReq; + return convertNotificationEntityToNotificationResponse(notificationEntity); } private NotificationEntity validateNotificationEntity(Long id) { - NotificationEntity notificationEntity=notificationRepository.findByIdAndIsDeletedFalse(id); - if(notificationEntity ==null){ + + NotificationEntity notificationEntity = notificationRepository.findByIdAndIsDeletedFalse(id); + if (notificationEntity == null) { throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.NOTIFICATION_NOT_FOUND)); } return notificationEntity; } public List getNotificationByUserId(Long userId, Long companyId, List statuses) { + List notificationEntities = notificationRepository.findByUserIdAndIsDeletedFalse(userId); - UserWithCompanyEntity userWithCompany=null; - List statusStrings=new ArrayList<>(); - if(companyId!=null){ - userWithCompany=companyDao.validateUserWithCompny(userId,companyId); + UserWithCompanyEntity userWithCompany = null; + List statusStrings = new ArrayList<>(); + if (companyId != null) { + userWithCompany = companyDao.validateUserWithCompny(userId, companyId); } - if (statuses != null ) { - statusStrings = statuses.stream() - .map(NotificationEnum::name) // Convert enum to its name as String + if (statuses != null) { + statusStrings = statuses.stream().map(NotificationEnum::name) // Convert enum to its name as String .toList(); - notificationEntities = notificationRepository.findByUserIdAndIsDeletedFalseAndStatusIn(userId,statusStrings); + notificationEntities = notificationRepository.findByUserIdAndIsDeletedFalseAndStatusIn(userId, statusStrings); - if(userWithCompany != null){ + if (userWithCompany != null) { notificationEntities = notificationRepository.findByUserIdAndUserWithCompanyIdAndIsDeletedFalseAndStatusIn(userId, userWithCompany.getId(), statusStrings); } } - List notificationReq= notificationEntities.stream() - .map(this::convertNotificationEntityToNotificationResponse) - .collect(Collectors.toList()); - - return notificationReq; + return notificationEntities.stream().map(this::convertNotificationEntityToNotificationResponse).collect(Collectors.toList()); } - public NotificationResponse convertNotificationEntityToNotificationResponse(NotificationEntity entity) { - if (entity == null) { - return null; // Handle null entity gracefully - } + public NotificationResponse updateNotificationStatus(Long id, NotificationEnum status) { - NotificationResponse response = new NotificationResponse(); - response.setId(entity.getId()); - response.setUserId(entity.getUserId()); - response.setMessage(entity.getMessage()); - response.setNotificationType(entity.getNotificationType()); - response.setStatus(entity.getStatus()); - response.setCreatedDate(entity.getCreatedDate()); - response.setUpdatedDate(entity.getUpdatedDate()); - response.setRedirectUrl(entity.getRedirectLink()); - response.setCompanyId(entity.getUserWithCompanyId()); - - return response; - } - public NotificationResponse updateNotificationStatus(Long id,NotificationEnum status){ - NotificationEntity notificationEntity=validateNotificationEntity(id); - if(notificationEntity.getStatus().equals(status.getValue())){ - throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.NOTIFICATION_ALREADY_IN_THAT_STATE)); + NotificationEntity notificationEntity = validateNotificationEntity(id); + if (notificationEntity.getStatus().equals(status.getValue())) { + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.NOTIFICATION_ALREADY_IN_THAT_STATE)); } notificationEntity.setStatus(status.getValue()); notificationEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); @@ -229,8 +243,9 @@ public class NotificationDao { return convertNotificationEntityToNotificationResponse(notificationEntity); } - public void deleteNotification(Long id){ - NotificationEntity notificationEntity=validateNotificationEntity(id); + public void deleteNotification(Long id) { + + NotificationEntity notificationEntity = validateNotificationEntity(id); notificationEntity.setIsDeleted(true); notificationRepository.save(notificationEntity); } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/NotificationEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/NotificationEntity.java index c0571fab..718a7367 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/NotificationEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/NotificationEntity.java @@ -2,6 +2,8 @@ package net.gepafin.tendermanagement.entities; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; import jakarta.persistence.Table; import lombok.Data; @@ -11,23 +13,27 @@ import lombok.Data; public class NotificationEntity extends BaseEntity { @Column(name = "USER_ID") - Long userId; + private Long userId; @Column(name = "MESSAGE") - String message; + private String message; + + @Column(name = "TITLE") + private String title; @Column(name = "STATUS") - String status; + private String status; @Column(name = "IS_DELETED") - Boolean isDeleted; + private Boolean isDeleted; @Column(name = "NOTIFICATION_TYPE") - String notificationType; + private String notificationType; @Column(name = "REDIRECT_LINK") - String redirectLink; + private String redirectLink; - @Column(name = "USER_WITH_COMPANY_ID") - Long userWithCompanyId; + @ManyToOne + @JoinColumn(name = "USER_WITH_COMPANY_ID") + private UserWithCompanyEntity userWithCompany; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/NotificationTypeEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/NotificationTypeEntity.java index 5202c97a..40d3f220 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/NotificationTypeEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/NotificationTypeEntity.java @@ -11,10 +11,13 @@ import lombok.Data; public class NotificationTypeEntity extends BaseEntity { @Column(name = "NOTIFICATION_NAME") - String notificationName; + private String notificationName; @Column(name = "JSON_TEMPLATE") - String jsonTemplate; + private String jsonTemplate; + + @Column(name = "TITLE") + private String title; @Column(name="IS_DELETED") private Boolean isDeleted; diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/NotificationReq.java b/src/main/java/net/gepafin/tendermanagement/model/request/NotificationReq.java index 8506694a..9582d700 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/NotificationReq.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/NotificationReq.java @@ -1,7 +1,9 @@ package net.gepafin.tendermanagement.model.request; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import net.gepafin.tendermanagement.entities.UserWithCompanyEntity; import java.time.LocalDateTime; import java.util.List; @@ -30,8 +32,14 @@ public class NotificationReq { private LocalDateTime updatedDate; @JsonProperty(access = JsonProperty.Access.READ_ONLY) - String redirectUrl; + private String redirectUrl; @JsonProperty(access = JsonProperty.Access.READ_ONLY) - List companyIds; + private String title; + + @JsonProperty(access = JsonProperty.Access.READ_ONLY) + private List companyIds; + + @JsonIgnore + private UserWithCompanyEntity userWithCompanyEntity; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/NotificationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/NotificationResponse.java index 655fa905..0383cd25 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/NotificationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/NotificationResponse.java @@ -1,18 +1,21 @@ package net.gepafin.tendermanagement.model.response; import lombok.Data; - -import java.time.LocalDateTime; +import net.gepafin.tendermanagement.model.BaseBean; @Data -public class NotificationResponse { - private Long id; +public class NotificationResponse extends BaseBean { private Long userId; + + private String title; + private String message; - private String notificationType; + private String status; - private LocalDateTime createdDate; - private LocalDateTime updatedDate; - private String redirectUrl; + private Long companyId; + + private String redirectUrl; + + private String notificationType; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/NotificationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/NotificationRepository.java index 91374bf7..f3c1d037 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/NotificationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/NotificationRepository.java @@ -1,19 +1,17 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.NotificationEntity; -import net.gepafin.tendermanagement.enums.NotificationTypeEnum; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface NotificationRepository extends JpaRepository { - NotificationEntity findByIdAndIsDeletedFalse(Long id); + NotificationEntity findByIdAndIsDeletedFalse(Long id); List findByUserIdAndIsDeletedFalse(Long userId); - List findByUserIdAndUserWithCompanyIdAndIsDeletedFalseAndStatusIn(Long userId,Long - userWithCompanyId,List statuses); + List findByUserIdAndUserWithCompanyIdAndIsDeletedFalseAndStatusIn(Long userId, Long userWithCompanyId, List statuses); List findByUserIdAndIsDeletedFalseAndStatusIn(Long userId, List statuses); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java index ec93f2f6..13a197f1 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java @@ -1,22 +1,23 @@ package net.gepafin.tendermanagement.repositories; -import java.util.List; -import java.util.Optional; - +import net.gepafin.tendermanagement.entities.UserWithCompanyEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import net.gepafin.tendermanagement.entities.UserWithCompanyEntity; - +import java.util.List; +import java.util.Optional; public interface UserWithCompanyRepository extends JpaRepository { - void deleteByCompanyIdAndIsDeletedFalse(Long companyId); + void deleteByCompanyIdAndIsDeletedFalse(Long companyId); - @Query("SELECT u.companyId FROM UserWithCompanyEntity u WHERE u.userId = :userId AND u.isDeleted = false") - List findActiveCompanyIdsByUserId(@Param("userId") Long userId); + @Query("SELECT u.companyId FROM UserWithCompanyEntity u WHERE u.userId = :userId AND u.isDeleted = false") + List findActiveCompanyIdsByUserId(@Param("userId") Long userId); - Optional findByUserIdAndCompanyIdAndIsDeletedFalse(Long userId, Long companyId); + Optional findByUserIdAndCompanyIdAndIsDeletedFalse(Long userId, Long companyId); + + @Query("SELECT u FROM UserWithCompanyEntity u WHERE u.userId = :userId AND u.companyId = :companyId AND u.isDeleted = false") + UserWithCompanyEntity findByUserIdAndCompanyIdAndIsDeletedFalseForNotification(Long userId, Long companyId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/NotificationService.java b/src/main/java/net/gepafin/tendermanagement/service/NotificationService.java index 7dd37193..4657883d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/NotificationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/NotificationService.java @@ -8,13 +8,13 @@ import net.gepafin.tendermanagement.model.response.NotificationResponse; import java.util.List; public interface NotificationService { - NotificationResponse sendNotification(Long userId, NotificationReq notificationReq); + NotificationResponse sendNotification(Long userId, NotificationReq notificationReq, Long companyId); - public NotificationResponse getNotificationById(HttpServletRequest servletRequest,Long id); + public NotificationResponse getNotificationById(HttpServletRequest servletRequest, Long id); public List getNotificationByUserId(HttpServletRequest servletRequest, Long userId, Long companyId, List statuses); - public NotificationResponse updateNotificationStatus(HttpServletRequest request,Long id,NotificationEnum status); + public NotificationResponse updateNotificationStatus(HttpServletRequest request, Long id, NotificationEnum status); public void deleteNotification(HttpServletRequest request, Long id); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/NotificationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/NotificationServiceImpl.java index 99c35092..2a725935 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/NotificationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/NotificationServiceImpl.java @@ -12,6 +12,8 @@ import org.springframework.stereotype.Service; import java.util.List; +import static org.hibernate.internal.util.collections.CollectionHelper.listOf; + @Service @Slf4j public class NotificationServiceImpl implements NotificationService { @@ -20,33 +22,37 @@ public class NotificationServiceImpl implements NotificationService { private NotificationDao notificationDao; @Override - public NotificationResponse sendNotification(Long userId, NotificationReq notificationReq) { + public NotificationResponse sendNotification(Long userId, NotificationReq notificationReq, Long companyId) { log.info("Sending notification to user {} with content: {}", userId, notificationReq.getMessage()); notificationReq.setUserId(userId); - NotificationResponse notificationResponse = notificationDao.sendNotification(notificationReq); - return notificationResponse; + notificationReq.setCompanyIds(listOf(companyId)); + return notificationDao.sendNotification(notificationReq); } @Override public NotificationResponse getNotificationById(HttpServletRequest servletRequest, Long id) { + return notificationDao.getNotificationById(id); } @Override public List getNotificationByUserId(HttpServletRequest servletRequest, Long userId, Long companyId, List statuses) { - return notificationDao.getNotificationByUserId(userId,companyId,statuses); + + return notificationDao.getNotificationByUserId(userId, companyId, statuses); } @Override - public NotificationResponse updateNotificationStatus(HttpServletRequest request, Long id,NotificationEnum status) { - return notificationDao.updateNotificationStatus(id,status); + public NotificationResponse updateNotificationStatus(HttpServletRequest request, Long id, NotificationEnum status) { + + return notificationDao.updateNotificationStatus(id, status); } @Override public void deleteNotification(HttpServletRequest request, Long id) { - notificationDao.deleteNotification(id); - return; + + notificationDao.deleteNotification(id); + return; } } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/util/Utils.java b/src/main/java/net/gepafin/tendermanagement/util/Utils.java index 4290bfff..486ddd02 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Utils.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Utils.java @@ -19,19 +19,15 @@ import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.node.ObjectNode; -import io.jsonwebtoken.Claims; import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.OneToOne; import jakarta.servlet.http.HttpServletRequest; -import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; -import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import org.apache.commons.collections4.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import com.fasterxml.jackson.core.JsonProcessingException; @@ -48,7 +44,6 @@ import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientForbiddenExce import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientUnauthorizedException; import net.gepafin.tendermanagement.web.rest.api.errors.FeignClientValidationException; -import org.springframework.http.MediaType; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/NotificationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/NotificationApi.java index 7e3c4caa..739a1516 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/NotificationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/NotificationApi.java @@ -7,10 +7,7 @@ import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.enums.NotificationEnum; -import net.gepafin.tendermanagement.enums.NotificationTypeEnum; import net.gepafin.tendermanagement.model.request.NotificationReq; -import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; -import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.response.NotificationResponse; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; @@ -36,56 +33,55 @@ public interface NotificationApi { ErrorConstants.BADREQUEST_ERROR_EXAMPLE))) }) @PostMapping(value = "/user/{userId}/sent", consumes = "application/json", produces = "application/json") ResponseEntity> sendNotification(HttpServletRequest request, @RequestBody NotificationReq notificationReq, + @Parameter(description = "The company id", required = false) @RequestParam(value = "companyId", required = false) Long companyId, @Parameter(description = "The user id", required = true) @PathVariable("userId") Long userId); - @Operation(summary = "Api to get notification by id", - responses = { - @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @Operation(summary = "Api to get notification by id", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{id}", produces = "application/json") - ResponseEntity> getNotificationById(HttpServletRequest request, @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id); + ResponseEntity> getNotificationById(HttpServletRequest request, + @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id); - @Operation(summary = "Api to get notification by user id", - responses = { - @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @Operation(summary = "Api to get notification by user id", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/user/{userId}", produces = "application/json") - ResponseEntity>> getNotificationByUserId(HttpServletRequest request, @Parameter(description = "The user id", required = true) @PathVariable(value = "userId", required = true) Long userId,@Parameter(description = "The company id", required = false) @RequestParam(value = "companyId",required = false) Long companyId,@Parameter(description = "The notification status", required = false) @RequestParam(value = "status",required = false) List statuses); + ResponseEntity>> getNotificationByUserId(HttpServletRequest request, + @Parameter(description = "The user id", required = true) @PathVariable(value = "userId", required = true) Long userId, + @Parameter(description = "The company id", required = false) @RequestParam(value = "companyId", required = false) Long companyId, + @Parameter(description = "The notification status", required = false) @RequestParam(value = "status", required = false) List statuses); - @Operation(summary = "Api to update notification status", - responses = { - @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @Operation(summary = "Api to update notification status", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @PutMapping(value = "/{id}", produces = "application/json") - ResponseEntity> updateNotificationStatus(HttpServletRequest request, @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id,@Parameter(description = "The notification status", required = true) @RequestParam(value = "status",required = true) NotificationEnum status); + ResponseEntity> updateNotificationStatus(HttpServletRequest request, + @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id, + @Parameter(description = "The notification status", required = true) @RequestParam(value = "status", required = true) NotificationEnum status); - - @Operation(summary = "Api to delete notification", - responses = { - @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { - @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @Operation(summary = "Api to delete notification", responses = { @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @DeleteMapping(value = "/{id}", produces = "application/json") - ResponseEntity> deleteNotification(HttpServletRequest request, @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id); + ResponseEntity> deleteNotification(HttpServletRequest request, + @Parameter(description = "The notification id", required = true) @PathVariable(value = "id", required = true) Long id); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/NotificationApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/NotificationApiController.java index 7b065b8c..11c61f23 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/NotificationApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/NotificationApiController.java @@ -19,6 +19,8 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +import static org.hibernate.internal.util.collections.CollectionHelper.listOf; + @RestController @RequestMapping("${openapi.gepafin.base-path:/v1/notification}") public class NotificationApiController implements NotificationApi { @@ -26,41 +28,43 @@ public class NotificationApiController implements NotificationApi { @Autowired private NotificationService notificationService; - public ResponseEntity> sendNotification(HttpServletRequest request, NotificationReq notificationReq, Long userId) { + public ResponseEntity> sendNotification(HttpServletRequest request, NotificationReq notificationReq, Long userId, Long companyId) { - NotificationResponse notificationData = notificationService.sendNotification(userId, notificationReq); + NotificationResponse notificationData = notificationService.sendNotification(userId, notificationReq, companyId); - return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(notificationData, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_SENT_SUCCESSFULLY))); + return ResponseEntity.status(HttpStatus.OK).body(new Response<>(notificationData, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_SENT_SUCCESSFULLY))); } @Override public ResponseEntity> getNotificationById(HttpServletRequest request, Long id) { - NotificationResponse notificationResponse=notificationService.getNotificationById(request,id); + + NotificationResponse notificationResponse = notificationService.getNotificationById(request, id); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(notificationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_FETCHED_SUCCESSFULLY))); } @Override public ResponseEntity>> getNotificationByUserId(HttpServletRequest request, Long userId, Long companyId, List statuses) { - List notificationResponses=notificationService.getNotificationByUserId(request,userId,companyId,statuses); + + List notificationResponses = notificationService.getNotificationByUserId(request, userId, companyId, statuses); return ResponseEntity.status(HttpStatus.OK) .body(new Response>(notificationResponses, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_FETCHED_SUCCESSFULLY))); } @Override - public ResponseEntity> updateNotificationStatus(HttpServletRequest request, Long id,NotificationEnum notificationEnums) { - NotificationResponse notificationResponse=notificationService.updateNotificationStatus(request,id,notificationEnums); + public ResponseEntity> updateNotificationStatus(HttpServletRequest request, Long id, NotificationEnum notificationEnums) { + + NotificationResponse notificationResponse = notificationService.updateNotificationStatus(request, id, notificationEnums); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(notificationResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_UPDATED_SUCCESSFULLY))); } @Override public ResponseEntity> deleteNotification(HttpServletRequest request, Long id) { - notificationService.deleteNotification(request,id); - return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_DELETED_SUCCESSFULLY))); + + notificationService.deleteNotification(request, id); + return ResponseEntity.status(HttpStatus.OK).body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.NOTIFICATION_DELETED_SUCCESSFULLY))); } } \ No newline at end of file diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index f99634bc..1a74fc78 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -22,4 +22,11 @@ appointment.portal.user=UtenzaAPIPortal@621 appointment.portal.password=u13nzaAP1P0rtal appointment.portal.source=GEPAFINPORTAL appointment.portal.context=GEPAFINPORTAL -flagDaFirmare=false \ No newline at end of file +flagDaFirmare=false + +# RabbitMQ properties for STOMP broker relay for Notification +spring.rabbitmq.host=localhost +spring.rabbitmq.port=61613 +spring.rabbitmq.username=guest +spring.rabbitmq.password=guest +spring.rabbitmq.virtual-host=/ \ No newline at end of file diff --git a/src/main/resources/application-local.properties b/src/main/resources/application-local.properties index 11f3d75e..7e78b539 100644 --- a/src/main/resources/application-local.properties +++ b/src/main/resources/application-local.properties @@ -1,6 +1,6 @@ # DataSource Configuration spring.datasource.url=jdbc:postgresql://localhost:5432/gepafin_dev_local -spring.datasource.username=root +spring.datasource.username=postgres spring.datasource.password=root spring.datasource.driver-class-name=org.postgresql.Driver @@ -22,9 +22,9 @@ appointment.portal.source=GEPAFINPORTAL appointment.portal.context=GEPAFINPORTAL flagDaFirmare=false -# RabbitMQ properties for STOMP broker relay +# RabbitMQ properties for STOMP broker relay for Notification spring.rabbitmq.host=localhost -spring.rabbitmq.port=5672 +spring.rabbitmq.port=61613 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/ \ No newline at end of file diff --git a/src/main/resources/application-production.properties b/src/main/resources/application-production.properties index 2007e166..e137691f 100644 --- a/src/main/resources/application-production.properties +++ b/src/main/resources/application-production.properties @@ -29,4 +29,11 @@ appointment.portal.user=UtenzaAPIPortal@621 appointment.portal.password=u13nzaAP1P0rtal appointment.portal.source=GEPAFINPORTAL appointment.portal.context=GEPAFINPORTAL -flagDaFirmare=true \ No newline at end of file +flagDaFirmare=true + +# RabbitMQ properties for STOMP broker relay for Notification +spring.rabbitmq.host=localhost +spring.rabbitmq.port=61613 +spring.rabbitmq.username=guest +spring.rabbitmq.password=guest +spring.rabbitmq.virtual-host=/ \ No newline at end of file diff --git a/src/main/resources/application-testing.properties b/src/main/resources/application-testing.properties index 1dbc41cc..0617f3cd 100644 --- a/src/main/resources/application-testing.properties +++ b/src/main/resources/application-testing.properties @@ -11,4 +11,18 @@ default_System_Receiver_Email=test@test.test gepafin_email=test@test.test rinaldo_email=test@test.test carlo_email=test@test.test -default.hub.uuid=p4lk3bcx1RStqTaIVVbXs \ No newline at end of file +default.hub.uuid=p4lk3bcx1RStqTaIVVbXs + +appointment.base.url=https://demo.galileonetwork.it/gateway/rest +appointment.portal.user=UtenzaAPIPortal@621 +appointment.portal.password=u13nzaAP1P0rtal +appointment.portal.source=GEPAFINPORTAL +appointment.portal.context=GEPAFINPORTAL +flagDaFirmare=false + +# RabbitMQ properties for STOMP broker relay for Notification +spring.rabbitmq.host=localhost +spring.rabbitmq.port=61613 +spring.rabbitmq.username=guest +spring.rabbitmq.password=guest +spring.rabbitmq.virtual-host=/ \ No newline at end of file diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 61ba0949..816716ad 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -2030,9 +2030,19 @@ - + + - + + + + + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 966358df..a1a01272 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -343,3 +343,4 @@ notification.not.found=Notification not found. notification.sent.successfully=Notification sent successfully. notification.deleted.successfully=Notification deleted successfully. notification.updated.successfully=Notification updated successfully. +user.with.company.not.found = User with company not found for user or company. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index da111f9f..03cf99d7 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -332,4 +332,5 @@ notification.fetched.successfully=Notifica recuperata con successo. notification.not.found=Notifica non trovata. notification.sent.successfully=Notifica inviata con successo. notification.deleted.successfully=Notifica eliminata con successo. -notification.updated.successfully=Notifica aggiornata con successo. \ No newline at end of file +notification.updated.successfully=Notifica aggiornata con successo. +user.with.company.not.found = Utente con azienda non trovato per utente o azienda. \ No newline at end of file