diff --git a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/StoreRestController.java b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/StoreRestController.java index 5f4cda49..6718ddf3 100644 --- a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/StoreRestController.java +++ b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/StoreRestController.java @@ -1093,7 +1093,13 @@ public ResponseEntity respondToBid( String notifyStoreBidNotApproved = String.format( "Bid %s for product %s was approved by %s not approved yet, please reply to the bid", bid.getId(), product.getName(), owner.getEmail()); - notifyStoreBidNotApproved(storeId, notifyStoreBidNotApproved, bid.getOwnerApprovals()); + + String message = String.format( + "New bid placed for %s:\n - Price: %.2f\n - Bid ID: %s\n - Product ID: %s", + product.getName(), bid.getBidAmount(), bid.getId(), productId); + messageService.sendMessageToStoreBid(storeId, "System", message, "waiting for approval", bid.getId(), + bid.getOwnerApprovals(), true); + notifyStoreBidNotApproved(storeId, notifyStoreBidNotApproved, bid.getOwnerApprovals()); log.info("Bid {} approved by owner {}, still waiting for other owners", bidId, owner.getEmail()); @@ -1108,7 +1114,7 @@ public ResponseEntity respondToBid( "Bid for %s rejected by %s\n- Bid ID: %s\n- Product ID: %s", product.getName(), owner.getEmail(), bid.getId(), product.getId()); messageService.sendMessageToStoreBid(storeId, "System", message, "cancel", bid.getId(), - bid.getOwnerApprovals()); + bid.getOwnerApprovals(),false); log.info("Bid {} rejected by owner {}", bidId, owner.getEmail()); store.removePendingBid(productId, bidId); // remove the old bid storeService.save(store); diff --git a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/UserRestController.java b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/UserRestController.java index 4d4912b5..d0594d4b 100644 --- a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/UserRestController.java +++ b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/ApplicationLayer/restControllers/UserRestController.java @@ -1823,7 +1823,7 @@ public ResponseEntity respondToBidOffer( log.info("Counter offer accepted for product {} with id {} by user {}, awaiting approval from store managers", product.getName(), b.getProductID(), member.getEmail()); if(messageService.sendMessageToStoreBid(storeId, member.getEmail(), message, "waiting for approval", - bidId, b.getOwnerApprovals())) { + bidId, b.getOwnerApprovals(),false)) { log.info("Counter offer accepted for product {} with id {} by user {}, awaiting approval from store managers", product.getName(), product.getId(), member.getEmail()); return ResponseEntity.ok("Counter offer sent to store managers for approval"); diff --git a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/DomainLayer/User/Member/Messsages/MessageService.java b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/DomainLayer/User/Member/Messsages/MessageService.java index dd702aab..12bece57 100644 --- a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/DomainLayer/User/Member/Messsages/MessageService.java +++ b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/DomainLayer/User/Member/Messsages/MessageService.java @@ -176,7 +176,7 @@ public void finishMsg(String msgID, Member member) { } public boolean sendMessageToStoreBid(String storeId, String email, String message, String status, String bidId, - Set ownerApprovals) { + Set ownerApprovals, boolean newOwners) { List storeManagers = storeRepository.getBidManagersEmails(storeId); for(String owner: ownerApprovals) { if(storeManagers.contains(owner)) { @@ -191,22 +191,47 @@ public boolean sendMessageToStoreBid(String storeId, String email, String messag if (manager == null) { continue; // Manager not found } - for(DirectMessage dm : manager.getDMs().values()) { + if(!newOwners){ + for(DirectMessage dm : manager.getDMs().values()) { if (dm instanceof PurchaseDirectMessage&& extractBidIDandComp(dm.getMessage(), bidId)){ dm.setRead(true); // If the message already exists, skip sending it ((PurchaseDirectMessage)dm).setStatus("done"); // Update the message content } // If the message already exists, skip sending it + } - // Create a new DirectMessage object and add it to the manager's DMs - PurchaseDirectMessage directMessage = new PurchaseDirectMessage(storeId, managerEmail,storeId, message, + PurchaseDirectMessage directMessage = new PurchaseDirectMessage(storeId, managerEmail,storeId, message, new Date(System.currentTimeMillis()).toString(), false, UUID.randomUUID().toString(), status, bidId); manager.addDMs(directMessage); // Add the message to the manager's DMs userRepository.save(manager); // Save the manager to persist the message + + } + else{ + boolean oldMessageExists = false; + for(DirectMessage dm : manager.getDMs().values() ) { + + if (dm instanceof PurchaseDirectMessage&& + extractBidIDandComp(dm.getMessage(), bidId)&!dm.getMessage().startsWith("Bid for")){ + oldMessageExists = true; // If the message already exists, skip sending it + break; + } + } + // If the message already exists, skip sending it + if (!oldMessageExists) { + PurchaseDirectMessage directMessage = new PurchaseDirectMessage(storeId, managerEmail,storeId, message, + new Date(System.currentTimeMillis()).toString(), false, UUID.randomUUID().toString(), status, bidId); + manager.addDMs(directMessage); // Add the message to the manager's DMs + userRepository.save(manager); // Save the manager to persist the message + } + } + + // Create a new DirectMessage object and add it to the manager's DMs + } return true; // Message sent successfully } + private boolean extractBidIDandComp(String msg, String bidID) { // Extract the bid ID from the message // Extract bidId diff --git a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/UI/View/Bid/BidMessageActionDialog.java b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/UI/View/Bid/BidMessageActionDialog.java index 0acdf7f6..0f84cad0 100644 --- a/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/UI/View/Bid/BidMessageActionDialog.java +++ b/TradingSystem/src/main/java/com/TradingSystem/TradingSystem/UI/View/Bid/BidMessageActionDialog.java @@ -242,7 +242,11 @@ private void acceptBid() { close(); } else { - showError("Error: " + response); + if(response.contains("Approved")){ + showSuccess(response); + } + else + showError("Error: " + response); } }); });