From a42a6e7a9237644812b659a9c41d18e3d5138c04 Mon Sep 17 00:00:00 2001
From: Frank Zhang <fz2907@vt.edu>
Date: Sun, 27 Nov 2022 00:14:52 -0500
Subject: [PATCH] Fixed a match bug

---
 .../controllers/InteractiveController.java    | 12 ++++++----
 .../jobs/OfferWishlistMatchingJob.java        |  4 ++--
 .../MatchedWishlistRecordService.java         | 24 +++++++++++--------
 3 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/controllers/InteractiveController.java b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/controllers/InteractiveController.java
index b0addc22..69cdebbb 100644
--- a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/controllers/InteractiveController.java
+++ b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/controllers/InteractiveController.java
@@ -136,11 +136,13 @@ public class InteractiveController {
                 if("offer".equals(newData.get("see").toString())) {
                     MatchedWishlistRecordModel history = matchedWishlistRecordService.getHistoryFromDB(Long.parseLong(newData.get("offerId").toString()), Long.parseLong(newData.get("wishlistId").toString()));
                     history.setOfferResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
-                    matchedWishlistRecordService.updateToDB(history);
+                    MatchedWishlistRecordModel record = matchedWishlistRecordService.updateToDB(history);
+                    matchedWishlistRecordService.hostReject(record);
                 } else {
                     MatchedWishlistRecordModel history = matchedWishlistRecordService.getHistoryFromDB(Long.parseLong(newData.get("offerId").toString()), Long.parseLong(newData.get("wishlistId").toString()));
                     history.setWishlistResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
-                    matchedWishlistRecordService.updateToDB(history);
+                    MatchedWishlistRecordModel record = matchedWishlistRecordService.updateToDB(history);
+                    matchedWishlistRecordService.visitorReject(record);
                 }
             } else {
                 if(result.getPhone1() == null) {
@@ -155,11 +157,13 @@ public class InteractiveController {
                 if("offer".equals(newData.get("see").toString())) {
                     MatchedWishlistRecordModel history = matchedWishlistRecordService.getHistoryFromDB(Long.parseLong(newData.get("offerId").toString()), Long.parseLong(newData.get("wishlistId").toString()));
                     history.setOfferResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
-                    matchedWishlistRecordService.updateToDB(history);
+                    MatchedWishlistRecordModel record = matchedWishlistRecordService.updateToDB(history);
+                    matchedWishlistRecordService.hostReject(record);
                 } else {
                     MatchedWishlistRecordModel history = matchedWishlistRecordService.getHistoryFromDB(Long.parseLong(newData.get("offerId").toString()), Long.parseLong(newData.get("wishlistId").toString()));
                     history.setWishlistResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
-                    matchedWishlistRecordService.updateToDB(history);
+                    MatchedWishlistRecordModel record = matchedWishlistRecordService.updateToDB(history);
+                    matchedWishlistRecordService.visitorReject(record);
                 }
             }
             response.setMessage("Saved successfully");
diff --git a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/jobs/OfferWishlistMatchingJob.java b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/jobs/OfferWishlistMatchingJob.java
index 0f081723..8ab9f420 100644
--- a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/jobs/OfferWishlistMatchingJob.java
+++ b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/jobs/OfferWishlistMatchingJob.java
@@ -285,8 +285,8 @@ public class OfferWishlistMatchingJob {
         List<MatchedWishlistRecordModel> matchedRecordList = offerList.parallelStream()
                 .filter(offer-> isWithin(wishlistItem.getStartTime(),wishlistItem.getEndTime(),
                         offer.getStartTime(),offer.getEndTime()) && checkAgreedOfferTime(offer, wishlistItem))
-                .map(offer -> new MatchedWishlistRecordModel(wishlistItem.getWishlistItemId(),
-                        offer.getOfferId(), LookupTables.MATCHING_RECORD_USER_RESULT.Waiting,
+                .map(offer -> new MatchedWishlistRecordModel(offer.getOfferId(),
+                        wishlistItem.getWishlistItemId(), LookupTables.MATCHING_RECORD_USER_RESULT.Waiting,
                         LookupTables.MATCHING_RECORD_USER_RESULT.Waiting,
                         wishlistItem.getStartTime(), wishlistItem.getEndTime()))
                 .toList();
diff --git a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/services/MatchedWishlistRecordService.java b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/services/MatchedWishlistRecordService.java
index 583ad519..63c5974f 100644
--- a/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/services/MatchedWishlistRecordService.java
+++ b/BackendFolder/SwitchRoom/src/main/java/vt/CS5934/SwitchRoom/services/MatchedWishlistRecordService.java
@@ -58,7 +58,11 @@ public class MatchedWishlistRecordService {
     }
 
     public MatchedWishlistRecordModel updateToDB(MatchedWishlistRecordModel updateData) {
-        matchedWishlistRecordRepository.save(updateData);
+        updateData = matchedWishlistRecordRepository.save(updateData);
+        if(updateData.getOfferResult() == LookupTables.MATCHING_RECORD_USER_RESULT.Accepted &&
+                updateData.getWishlistResult() == LookupTables.MATCHING_RECORD_USER_RESULT.Accepted){
+            visitorAccepted(updateData);
+        }
         return updateData;
     }
 
@@ -76,9 +80,9 @@ public class MatchedWishlistRecordService {
         }
     }
 
-    public void hostReject(Long offerId, Long wishlistId){
-        MatchedWishlistRecordModel record = matchedWishlistRecordRepository
-                .findByOfferIdAndWishlistItemId(offerId, wishlistId);
+    public void hostReject(MatchedWishlistRecordModel record){
+        Long wishlistId = record.getWishlistItemId();
+        Long offerId = record.getOfferId();
         if(record != null){
             record.setOfferResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
             if(record.getAgreedRecordId() != null){
@@ -93,9 +97,9 @@ public class MatchedWishlistRecordService {
         }
     }
 
-    public void visitorReject(Long offerId, Long wishlistId){
-        MatchedWishlistRecordModel record = matchedWishlistRecordRepository
-                .findByOfferIdAndWishlistItemId(offerId, wishlistId);
+    public void visitorReject(MatchedWishlistRecordModel record){
+        Long wishlistId = record.getWishlistItemId();
+        Long offerId = record.getOfferId();
         if(record != null){
             record.setWishlistResult(LookupTables.MATCHING_RECORD_USER_RESULT.Declined);
             if(record.getAgreedRecordId() != null){
@@ -110,9 +114,9 @@ public class MatchedWishlistRecordService {
         }
     }
 
-    public void visitorAccepted(Long offerId, Long wishlistId){
-        MatchedWishlistRecordModel record = matchedWishlistRecordRepository
-                .findByOfferIdAndWishlistItemId(offerId, wishlistId);
+    public void visitorAccepted(MatchedWishlistRecordModel record){
+        Long offerId = record.getOfferId();
+        Long wishlistId = record.getWishlistItemId();
         if(record != null){
             record.setWishlistResult(LookupTables.MATCHING_RECORD_USER_RESULT.Accepted);
             UserOfferModel offerModel = userOfferRepository.findByUserId(offerId);
-- 
GitLab