diff --git a/src/main/java/com/example/clientproject/data/rewards/RewardsRepo.java b/src/main/java/com/example/clientproject/data/rewards/RewardsRepo.java index b145882b042e10fdde19934a5a2fa436f7379f30..c1ab9c191a5068e3377af33ae003e574d668cf06 100644 --- a/src/main/java/com/example/clientproject/data/rewards/RewardsRepo.java +++ b/src/main/java/com/example/clientproject/data/rewards/RewardsRepo.java @@ -26,7 +26,7 @@ public interface RewardsRepo extends JpaRepository<StampBoards, Long> { * @return - Optional object containing the Reward found, if it's present */ @Query("select r from Rewards r where r.rewardId = ?1") - Optional<Rewards> findByRewardId(int rewardId); + Optional<Rewards> findByRewardId(long rewardId); /** @@ -35,14 +35,6 @@ public interface RewardsRepo extends JpaRepository<StampBoards, Long> { * @return - Optional Integer containing the reward, if it's present */ @Query("select r.rewardStampLocation from Rewards r where r.rewardId = ?1") - Optional<Integer> getRewardValueFromId(int rewardId); - - /** - * Find relating stampBoardId by rewardId - * @param rewardId Id of relating stampBoardId to find - * @return - Optional Integer containing the Id, if it's present - */ - @Query("select r.stampBoards.stampBoardId from Rewards r where r.rewardId = ?1") - Optional<Integer> getStampBoardIdById(int rewardId); + Optional<Integer> getRewardValueFromId(long rewardId); } diff --git a/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java b/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java new file mode 100644 index 0000000000000000000000000000000000000000..ec93834e30a2164233f9f6c89ad9e7f95c3ff08c --- /dev/null +++ b/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java @@ -0,0 +1,29 @@ +package com.example.clientproject.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +@Service +public class GetStampBoardIdFromRewardId { + @Autowired + JdbcTemplate jdbc; + + /** + * @param rewardId the rewardId of the stampBoardId you want to retrieve + */ + public int getStampBoardId(Integer rewardId){ + String query = "SELECT Stamp_Board_Id FROM rewards WHERE Reward_Id = " + rewardId + ";"; + try{ + List<Map<String, Object>> rs = jdbc.queryForList(query); + + System.out.println((int) rs.get(0).get("Stamp_Board_Id")); + return (int) rs.get(0).get("Stamp_Board_Id"); + }catch (Exception e){ + return 0; + } + } +} diff --git a/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java b/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java index 10a0fb3d3ec34299b85d1690fd9e9b763e52e120..9497ff611b8bdc37090971cae86b1dc067842780 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java @@ -9,6 +9,7 @@ import com.example.clientproject.data.userStampBoards.UserStampBoards; import com.example.clientproject.data.users.Users; import com.example.clientproject.data.users.UsersRepo; import com.example.clientproject.service.Utils.JWTUtils; +import com.example.clientproject.services.GetStampBoardIdFromRewardId; import com.example.clientproject.services.StampboardUpdater; import com.example.clientproject.services.UserStampBoardService; import com.example.clientproject.web.forms.UpdateStampboardForm; @@ -29,15 +30,17 @@ public class UpdateUserStampPosition { UserPermissionsRepo userPermissionsRepo; RewardsRepo rewardsRepo; UsersRepo usersRepo; + GetStampBoardIdFromRewardId getStampBoardIdFromRewardId; public UpdateUserStampPosition(JWTUtils jwt, UserStampBoardService usbs, UserPermissionsRepo upr, RewardsRepo rr, - UsersRepo ur){ //need to add service for changing stamp pos + UsersRepo ur, GetStampBoardIdFromRewardId gsbifri){ //need to add service for changing stamp pos jwtUtils = jwt; userStampBoardService = usbs; userPermissionsRepo = upr; rewardsRepo = rr; usersRepo = ur; + getStampBoardIdFromRewardId = gsbifri; } @PostMapping("/changeUserPos") @@ -75,26 +78,24 @@ public class UpdateUserStampPosition { } } - @PostMapping + @PostMapping("/reedeemReward") public void reedeemStamps(@RequestParam(name="rewardId", required = true) int rewardId, HttpSession session){ - Optional<Rewards> reward = rewardsRepo.findByRewardId(rewardId); - Optional<Integer> stampBoardId = rewardsRepo.getStampBoardIdById(rewardId); + Optional<Rewards> reward = rewardsRepo.findByRewardId(Long.valueOf(rewardId)); + int stampBoardId = getStampBoardIdFromRewardId.getStampBoardId(rewardId); Optional<Users> user = usersRepo.findById(Long.valueOf(jwtUtils.getLoggedInUserId(session).get())); Set<UserStampBoards> userStampBoards = user.get().getUserStampBoards(); int userStampPos = 0; - long userStampBoardIdInLink = 0; boolean userIsLinkedToStampBoard = false; for(UserStampBoards u : userStampBoards){ - if(stampBoardId.get() == u.getStampBoard().getStampBoardId()){ - userStampBoardIdInLink = u.getStampBoard().getStampBoardId(); + if(stampBoardId == u.getStampBoard().getStampBoardId()){ userStampPos = u.getUserStampPosition(); userIsLinkedToStampBoard = true; } } if(userIsLinkedToStampBoard){ if(userStampPos >= reward.get().getRewardStampLocation()){ - userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -1, userStampPos); + userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -reward.get().getRewardStampLocation(), userStampPos); } } else { System.out.println("User is not linked to stampboard you are trying to claim a reward from"); diff --git a/src/main/resources/static/js/viewShop.js b/src/main/resources/static/js/viewShop.js index e769a5747194e59ca42137af4b6e5ad7c398555d..b62a6909ddb3c9541369b4823844028bcd62bb34 100644 --- a/src/main/resources/static/js/viewShop.js +++ b/src/main/resources/static/js/viewShop.js @@ -56,7 +56,7 @@ function changeUserStampPos(increment, shopId){ function claimReward(rewardId){ params = 'rewardId=' + rewardId; var xhttp = new XMLHttpRequest(); - xhttp.open("POST", '/changeUserPos', true); // true is asynchronous + xhttp.open("POST", '/reedeemReward', true); // true is asynchronous xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.onload = function () { if (xhttp.readyState === 4 && xhttp.status === 200) {