diff --git a/src/main/java/com/example/clientproject/data/misc/MiscQueries.java b/src/main/java/com/example/clientproject/data/misc/MiscQueries.java index 42737502dbc94e3df1345b84ce85ae31f1c62b9e..b172cc5dcc7e557c8857369a47a61253dcf8e677 100644 --- a/src/main/java/com/example/clientproject/data/misc/MiscQueries.java +++ b/src/main/java/com/example/clientproject/data/misc/MiscQueries.java @@ -4,12 +4,13 @@ import com.example.clientproject.data.tags.Tags; import com.example.clientproject.data.users.Users; import com.example.clientproject.service.dtos.UsersDTO; +import javax.servlet.http.HttpSession; import java.util.List; public interface MiscQueries { - void saveUserFavouriteTags(Users user, Tags tag); - void saveUser(Users user); - void updateUser(int userId, String field, Object value); - void saveTag(Tags tag); + void saveUserFavouriteTags(Users user, Tags tag, HttpSession session); + void saveUser(Users user, HttpSession session); + void updateUser(int userId, String field, Object value, HttpSession session); + void saveTag(Tags tag, HttpSession session); List<UserFavouriteTags> findAllUserFavouriteTags(); } diff --git a/src/main/java/com/example/clientproject/data/misc/MiscQueriesImpl.java b/src/main/java/com/example/clientproject/data/misc/MiscQueriesImpl.java index 3ada75eb155e922c8f88a8c1425e1b2477b95a52..d2354af451db842fb8a4b6798ff3e6a2f282075b 100644 --- a/src/main/java/com/example/clientproject/data/misc/MiscQueriesImpl.java +++ b/src/main/java/com/example/clientproject/data/misc/MiscQueriesImpl.java @@ -2,6 +2,7 @@ package com.example.clientproject.data.misc; import com.example.clientproject.data.tags.Tags; import com.example.clientproject.data.users.Users; +import com.example.clientproject.service.LoggingService; import com.example.clientproject.service.dtos.UsersDTO; import org.springframework.jdbc.core.JdbcOperations; import org.springframework.jdbc.core.JdbcTemplate; @@ -9,6 +10,7 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import org.springframework.stereotype.Repository; +import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,6 +22,7 @@ import java.util.Map; public class MiscQueriesImpl implements MiscQueries{ private final JdbcTemplate jdbcTemplate; private final RowMapper<UserFavouriteTags> userFavouriteTagsRowMapper; + LoggingService loggingService; /** * Constructor @@ -40,7 +43,7 @@ public class MiscQueriesImpl implements MiscQueries{ * @param user - the user * @param tag - the tag */ - public void saveUserFavouriteTags(Users user, Tags tag) { + public void saveUserFavouriteTags(Users user, Tags tag, HttpSession session) { SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate) .withTableName("User_Favourite_Tags") .usingGeneratedKeyColumns("User_Favourite_Tag_Id"); @@ -50,13 +53,21 @@ public class MiscQueriesImpl implements MiscQueries{ parameters.put("Tag_Id", tag.getTagId()); Number id = simpleJdbcInsert.execute(parameters); + // Log the changes + loggingService.logEvent( + "UserFavouriteTag Inserted", + session, + "UserFavouriteTag Inserted with User Id: " + user.getUserId() + + " and Tag Id: " + tag.getTagId() + + " in MiscQueriesImpl.saveUserFavouriteTags()" + ); } /** * Insert into "Users" table * @param user - the user to insert */ - public void saveUser(Users user) { + public void saveUser(Users user, HttpSession session) { SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate) .withTableName("Users") .usingGeneratedKeyColumns("User_Id"); @@ -73,58 +84,104 @@ public class MiscQueriesImpl implements MiscQueries{ parameters.put("User_Reset_Code_Expiry", user.getUserResetCodeExpiry()); Number id = simpleJdbcInsert.execute(parameters); + // Log the change + loggingService.logEvent( + "New User", + session, + "New User Inserted with Email: " + user.getUserEmail() + + " in MiscQueriesImpl.saveUser()" + ); } - public void updateUser(int userId, String field, Object value) { + public void updateUser(int userId, String field, Object value, HttpSession session) { switch (field) { case "User_First_Name": { - String sql = "UPDATE Users SET User_First_Name = ? WHERE User_Id = ?"; + String sql = "UPDATE mydb.Users SET User_First_Name = ? WHERE User_Id = ?"; jdbcTemplate.update( // Script sql, // Arguments value, userId ); + // Log the change + loggingService.logEvent( + "User Details Changed", + session, + "User Details Updated with User Id: " + userId + + " with field: User_First_Name and value: " + value + + " in MiscQueriesImpl.updateUser()" + ); break; } case "User_Last_Name": { - String sql = "UPDATE Users SET User_Last_Name = ? WHERE User_Id = ?"; + String sql = "UPDATE mydb.Users SET User_Last_Name = ? WHERE User_Id = ?"; jdbcTemplate.update( // Script sql, // Arguments value, userId ); + // Log the change + loggingService.logEvent( + "User Details Changed", + session, + "User Details Updated with User Id: " + userId + + " with field: User_Last_Name and value: " + value + + " in MiscQueriesImpl.updateUser()" + ); break; } case "User_Email": { - String sql = "UPDATE Users SET User_Email = ? WHERE User_Id = ?"; + String sql = "UPDATE mydb.Users SET User_Email = ? WHERE User_Id = ?"; jdbcTemplate.update( // Script sql, // Arguments value, userId ); + // Log the change + loggingService.logEvent( + "User Details Changed", + session, + "User Details Updated with User Id: " + userId + + " with field: User_Email and value: " + value + + " in MiscQueriesImpl.updateUser()" + ); break; } case "User_Profile_Picture": { - String sql = "UPDATE Users SET User_Profile_Picture = ? WHERE User_Id = ?"; + String sql = "UPDATE mydb.Users SET User_Profile_Picture = ? WHERE User_Id = ?"; jdbcTemplate.update( // Script sql, // Arguments value, userId ); + // Log the change + loggingService.logEvent( + "User Details Changed", + session, + "User Details Updated with User Id: " + userId + + " with field: User_Profile_Picture and value: " + value + + " in MiscQueriesImpl.updateUser()" + ); break; } case "User_Password": { - String sql = "UPDATE Users SET User_Password = ? WHERE User_Id = ?"; + String sql = "UPDATE mydb.Users SET User_Password = ? WHERE User_Id = ?"; jdbcTemplate.update( // Script sql, // Arguments value, userId ); + // Log the change + loggingService.logEvent( + "User Details Changed", + session, + "User Details Updated with User Id: " + userId + + " with field: User_Password in MiscQueriesImpl.updateUser()" + ); break; } } @@ -134,7 +191,7 @@ public class MiscQueriesImpl implements MiscQueries{ * Insert into the "Tags" table * @param tag - the tag to insert */ - public void saveTag(Tags tag) { + public void saveTag(Tags tag, HttpSession session) { SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate) .withTableName("Tags") .usingGeneratedKeyColumns("Tag_Id"); @@ -152,7 +209,7 @@ public class MiscQueriesImpl implements MiscQueries{ */ public List<UserFavouriteTags> findAllUserFavouriteTags() { return jdbcTemplate.query( - "select * from User_Favourite_Tags", + "select * from mydb.User_Favourite_Tags", userFavouriteTagsRowMapper, new Object[]{} ); diff --git a/src/main/java/com/example/clientproject/service/LoggingService.java b/src/main/java/com/example/clientproject/service/LoggingService.java index aa453854b260c560b6cfa466c2f51a590796ebf5..9d2461c36ca5fbdc785d365b593afc089f8ab86c 100644 --- a/src/main/java/com/example/clientproject/service/LoggingService.java +++ b/src/main/java/com/example/clientproject/service/LoggingService.java @@ -1,6 +1,7 @@ package com.example.clientproject.service; import com.example.clientproject.data.events.Events; +import com.example.clientproject.data.events.EventsRepo; import com.example.clientproject.data.logs.Logs; import com.example.clientproject.data.logs.LogsRepo; import com.example.clientproject.service.Utils.JWTUtils; @@ -9,13 +10,15 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpSession; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Optional; /** - * Service for all logging based methods + * Service for all logging related methods */ @Service public class LoggingService { LogsRepo logsRepo; + EventsRepo eventsRepo; JWTUtils jwtUtils; /** @@ -23,18 +26,23 @@ public class LoggingService { * @param aLogsRepo - object of type LogsRepo * @param aJWTUtils - object of type JWTUtils */ - public LoggingService(LogsRepo aLogsRepo, JWTUtils aJWTUtils) { + public LoggingService(LogsRepo aLogsRepo, EventsRepo aEventRepo, JWTUtils aJWTUtils) { jwtUtils = aJWTUtils; + eventsRepo = aEventRepo; logsRepo = aLogsRepo; } + public Optional<Events> findEventByName(String eventName) { + return eventsRepo.findByEventName(eventName); + } + /** * Method for logging an event * @param event - the event * @param session - the session * @param details - details of the event */ - public void logEvent(Events event, HttpSession session, String details) { + public void logEvent(String event, HttpSession session, String details) { // Instantiate a flagging variable boolean superAdminStatus; // If the session attribute "superAdmin" doesn't exist (super admin not logged in) @@ -56,7 +64,7 @@ public class LoggingService { LocalDateTime.now().format(formatter), superAdminStatus, jwtUtils.getLoggedInUserRow(session).get(), - event + findEventByName(event).get() ); // Save the new log diff --git a/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java b/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java index e2c5606b441a2d7b62132fd991873cdd6f07599f..27e6caed5aba966e3bed53a84a3c5b4d5e3fdb0c 100644 --- a/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java +++ b/src/main/java/com/example/clientproject/services/BusinessRegisterSaver.java @@ -14,10 +14,12 @@ import com.example.clientproject.data.tags.Tags; import com.example.clientproject.data.tags.TagsRepo; import com.example.clientproject.data.userStampBoards.UserStampBoards; import com.example.clientproject.data.userStampBoards.UserStampBoardsRepo; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; @@ -26,40 +28,62 @@ import java.util.Locale; @Service public class BusinessRegisterSaver { - @Autowired - ShopsRepo shopsRepo; - - @Autowired - StampBoardsRepo stampBoards; - - @Autowired - CategoriesRepo categoriesRepo; - - @Autowired - SocialsRepo socialsRepo; - - @Autowired - TagsRepo tagsRepo; - - @Autowired - JdbcTemplate jdbc; - - @Autowired - LinkUserShop linkShop; - - @Autowired - RewardsRepo rewardsRepo; + private ShopsRepo shopsRepo; + private StampBoardsRepo stampBoards; + private CategoriesRepo categoriesRepo; + private SocialsRepo socialsRepo; + private TagsRepo tagsRepo; + private JdbcTemplate jdbc; + private LinkUserShop linkShop; + private LoggingService loggingService; + + /** + * Constructor + * @param shopsRepo - shopsRepo + * @param stampBoards - stampBoards + * @param categoriesRepo - categoriesRepo + * @param socialsRepo - socialsRepo + * @param tagsRepo - tagsRepo + * @param jdbc - jdbc + * @param linkShop - linkShop + * @param rewardsRepo - rewardsRepo + * @param loggingService - loggingService + */ + public BusinessRegisterSaver(ShopsRepo shopsRepo, StampBoardsRepo stampBoards, CategoriesRepo categoriesRepo, SocialsRepo socialsRepo, TagsRepo tagsRepo, JdbcTemplate jdbc, LinkUserShop linkShop, RewardsRepo rewardsRepo, LoggingService loggingService) { + this.shopsRepo = shopsRepo; + this.stampBoards = stampBoards; + this.categoriesRepo = categoriesRepo; + this.socialsRepo = socialsRepo; + this.tagsRepo = tagsRepo; + this.jdbc = jdbc; + this.linkShop = linkShop; + this.loggingService = loggingService; + } - public void save(BusinessRegisterDTO business, long userId){ + public void save(BusinessRegisterDTO business, long userId, HttpSession session){ - String query = "INSERT INTO Stamp_Boards (Stamp_Board_Size, Stamp_Board_Colour, Stamp_Board_Icon) VALUES (8, '#ff0000', 'stamp.jpg')"; + String query = "INSERT INTO mydb.Stamp_Boards (Stamp_Board_Size, Stamp_Board_Colour, Stamp_Board_Icon) VALUES (8, '#ff0000', 'stamp.jpg')"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "New Stamp Board", + session, + "New StampBoard created for Shop: " + business.getBusiness_register_name() + + " in BusinessRegisterSaver.save()" + ); long currentStampId = stampBoards.findAll().get(stampBoards.findAll().size()-1).getStampBoardId(); - String rewardsQuery = "INSERT INTO Rewards (Reward_Name, Reward_Stamp_Location, Stamp_Board_Id) VALUES (\"10% off\", 4," + + String rewardsQuery = "INSERT INTO mydb.Rewards (Reward_Name, Reward_Stamp_Location, Stamp_Board_Id) VALUES (\"10% off\", 4," + currentStampId + ")"; //System.out.println(rewardsQuery); jdbc.execute(rewardsQuery); + // Log the change + loggingService.logEvent( + "New Reward", + session, + "New Reward created for StampBoard: " + currentStampId + + " in BusinessRegisterSaver.save()" + ); StampBoards stampBoard = stampBoards.findAll().get(stampBoards.findAll().size()-1); @@ -83,6 +107,14 @@ public class BusinessRegisterSaver { //System.out.println(shop.getStampBoard()); shopsRepo.save(shop); + // Log the change + loggingService.logEvent( + "New Shop", + session, + "New Shop created for User: " + userId + + " in BusinessRegisterSaver.save()" + ); + List<String> tagsList = new ArrayList<>(); List<String> tagsLowerList = new ArrayList<>(); tagsRepo.findAll().forEach(x -> tagsList.add(x.getTagName())); @@ -91,7 +123,7 @@ public class BusinessRegisterSaver { System.out.println(tagsLowerList); business.getBusinessTags().forEach(x-> System.out.println(x)); - linkShop.linkUserShop(shop.getShopId(), userId, 2L); + linkShop.linkUserShop(shop.getShopId(), userId, 2L, session); for(String t: business.getBusinessTags()){ Tags tag; @@ -100,20 +132,63 @@ public class BusinessRegisterSaver { }else{ tag = new Tags(t.toLowerCase()); tagsRepo.save(tag); + // Log the change + loggingService.logEvent( + "New Tag", + session, + "New Tag created with name: " + tag.getTagName() + + " in BusinessRegisterSaver.save()" + ); } - - query = "INSERT INTO Shop_Tag_Links (Shop_Id, Tag_Id) VALUES ("+ shop.getShopId() + + query = "INSERT INTO mydb.Shop_Tag_Links (Shop_Id, Tag_Id) VALUES ("+ shop.getShopId() + ","+tag.getTagId() + ")"; - jdbc.execute(query); - + // Log the change + loggingService.logEvent( + "New Shop Tag Link", + session, + "New Shop Tag Link created for shop: " + shop.getShopId() + + " and tag: " + tag.getTagId() + + " in BusinessRegisterSaver.save()" + ); } socialsRepo.save(new Socials(shop, "Facebook", business.getFacebook())); + // Log the change + loggingService.logEvent( + "New Social", + session, + "New Social created for shop: " + shop.getShopId() + + " in BusinessRegisterSaver.save()" + ); + socialsRepo.save(new Socials(shop, "Twitter", business.getTwitter())); + // Log the change + loggingService.logEvent( + "New Social", + session, + "New Social created for shop: " + shop.getShopId() + + " in BusinessRegisterSaver.save()" + ); + socialsRepo.save(new Socials(shop, "Instagram", business.getInstagram())); + // Log the change + loggingService.logEvent( + "New Social", + session, + "New Social created for shop: " + shop.getShopId() + + " in BusinessRegisterSaver.save()" + ); + socialsRepo.save(new Socials(shop, "TikTok", business.getTiktok())); + // Log the change + loggingService.logEvent( + "New Social", + session, + "New Social created for shop: " + shop.getShopId() + + " in BusinessRegisterSaver.save()" + ); //System.out.println(shop.getShopId()); diff --git a/src/main/java/com/example/clientproject/services/DashboardStampLoader.java b/src/main/java/com/example/clientproject/services/DashboardStampLoader.java index c2c264cbcd21d53a6a90a48e4e6da0d4fa609f11..9cb3e528fa8c3b2f8e807146e90dff1a7d2b2b23 100644 --- a/src/main/java/com/example/clientproject/services/DashboardStampLoader.java +++ b/src/main/java/com/example/clientproject/services/DashboardStampLoader.java @@ -14,13 +14,16 @@ import java.util.*; @Service public class DashboardStampLoader { - @Autowired UsersRepo userRepo; - @Autowired ShopsRepo shopsRepo; - @Autowired UserFavouriteToggle toggleFavourite; + public DashboardStampLoader(UsersRepo userRepo, ShopsRepo shopsRepo, UserFavouriteToggle toggleFavourite) { + this.userRepo = userRepo; + this.shopsRepo = shopsRepo; + this.toggleFavourite = toggleFavourite; + } + public Map<String, Object> getData(int userId) throws Exception { List<Map<String, Object>> combinedInfo = new ArrayList<>(); diff --git a/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java b/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java index ec93834e30a2164233f9f6c89ad9e7f95c3ff08c..0221bbef63f55121413340ace37d0cedec062322 100644 --- a/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java +++ b/src/main/java/com/example/clientproject/services/GetStampBoardIdFromRewardId.java @@ -9,14 +9,17 @@ import java.util.Map; @Service public class GetStampBoardIdFromRewardId { - @Autowired JdbcTemplate jdbc; + public GetStampBoardIdFromRewardId(JdbcTemplate jdbc) { + this.jdbc = 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 + ";"; + String query = "SELECT Stamp_Board_Id FROM mydb.rewards WHERE Reward_Id = " + rewardId + ";"; try{ List<Map<String, Object>> rs = jdbc.queryForList(query); diff --git a/src/main/java/com/example/clientproject/services/LinkUserShop.java b/src/main/java/com/example/clientproject/services/LinkUserShop.java index 66c3eee2ec61ee42351f89b4f5955fff4c1958fe..c458d7d0d6766888ee059246417e30ec13a8ae8b 100644 --- a/src/main/java/com/example/clientproject/services/LinkUserShop.java +++ b/src/main/java/com/example/clientproject/services/LinkUserShop.java @@ -8,8 +8,11 @@ import com.example.clientproject.data.userPermissions.UserPermissions; import com.example.clientproject.data.userPermissions.UserPermissionsRepo; import com.example.clientproject.data.users.Users; import com.example.clientproject.data.users.UsersRepo; +import com.example.clientproject.service.LoggingService; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + @Service public class LinkUserShop { @@ -17,18 +20,21 @@ public class LinkUserShop { ShopsRepo shopsRepo; AdminTypesRepo adminTypesRepo; UserPermissionsRepo userPermissionsRepo; + LoggingService loggingService; public LinkUserShop(UsersRepo aUsersRepo, ShopsRepo aShopsRepo, AdminTypesRepo anAdminTypesRepo, - UserPermissionsRepo aUserPermissionsRepo){ + UserPermissionsRepo aUserPermissionsRepo, + LoggingService aLoggingService){ userRepo = aUsersRepo; shopsRepo = aShopsRepo; adminTypesRepo = anAdminTypesRepo; userPermissionsRepo = aUserPermissionsRepo; + loggingService = aLoggingService; } - public void linkUserShop(long shopId, long userID, long adminTypeId){ + public void linkUserShop(long shopId, long userID, long adminTypeId, HttpSession session){ try { Users user = userRepo.findById(userID).get(); Shops shop = shopsRepo.getById(shopId); @@ -37,6 +43,15 @@ public class LinkUserShop { UserPermissions link = new UserPermissions(user, shop, adminType); userPermissionsRepo.save(link); + // Log the change + loggingService.logEvent( + "New User Permission", + session, + "New User Permission added for User: " + user.getUserId() + + " with Shop: " + shop.getShopId() + + " with Admin Type: " + adminType.getAdminTypeId() + + " in LinkUserShop.linkUserShop()" + ); }catch(Exception e){ e.printStackTrace(); } diff --git a/src/main/java/com/example/clientproject/services/RecommendationGenerator.java b/src/main/java/com/example/clientproject/services/RecommendationGenerator.java index 320f171c28fe0b91c0c44a29ce4912b9add86af2..1fc7207e6672e7a922b9b111aef1ee98b5a4718a 100644 --- a/src/main/java/com/example/clientproject/services/RecommendationGenerator.java +++ b/src/main/java/com/example/clientproject/services/RecommendationGenerator.java @@ -22,22 +22,20 @@ import java.util.*; @Service public class RecommendationGenerator { - public JWTUtils jwtUtils; - public UserFavouriteToggle favouriteToggle; - public StampBoardsRepo stampBoardsRepo; - public UserStampBoardsRepo userStampBoardsRepo; - - @Autowired + JWTUtils jwtUtils; + UserFavouriteToggle favouriteToggle; + StampBoardsRepo stampBoardsRepo; + UserStampBoardsRepo userStampBoardsRepo; UsersRepo usersRepo; - - @Autowired ShopsRepo shopsRepo; - public RecommendationGenerator(JWTUtils jwt, UserFavouriteToggle uft, StampBoardsRepo sbr, UserStampBoardsRepo usbr){ - jwtUtils = jwt; - favouriteToggle = uft; - stampBoardsRepo = sbr; - userStampBoardsRepo = usbr; + public RecommendationGenerator(JWTUtils jwtUtils, UserFavouriteToggle favouriteToggle, StampBoardsRepo stampBoardsRepo, UserStampBoardsRepo userStampBoardsRepo, UsersRepo usersRepo, ShopsRepo shopsRepo) { + this.jwtUtils = jwtUtils; + this.favouriteToggle = favouriteToggle; + this.stampBoardsRepo = stampBoardsRepo; + this.userStampBoardsRepo = userStampBoardsRepo; + this.usersRepo = usersRepo; + this.shopsRepo = shopsRepo; } public List<Shops> getRecommendations(HttpSession session, List<Shops> shopsToRecommend) throws Exception { diff --git a/src/main/java/com/example/clientproject/services/ShopActiveService.java b/src/main/java/com/example/clientproject/services/ShopActiveService.java index 9c7ed39f7d9a89735d8ac115058908508407bf1a..8ec00b70ce19b1a66c564ca6dad53ba0667d73d1 100644 --- a/src/main/java/com/example/clientproject/services/ShopActiveService.java +++ b/src/main/java/com/example/clientproject/services/ShopActiveService.java @@ -1,25 +1,31 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; import java.util.List; import java.util.Map; @Service public class ShopActiveService { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; + public ShopActiveService(JdbcTemplate jdbc, LoggingService loggingService) { + this.jdbc = jdbc; + this.loggingService = loggingService; + } /** * @param shopId - uses shopId to select which shop will have its active field checked * @return - an int of Shop activity 1 = active || 0 = not active */ public int isShopActive(Integer shopId){ - String query = "SELECT Shop_Active FROM shops WHERE Shop_Id = " + shopId + ";"; + String query = "SELECT Shop_Active FROM mydb.shops WHERE Shop_Id = " + shopId + ";"; try{ List<Map<String, Object>> rs = jdbc.queryForList(query); @@ -35,10 +41,18 @@ public class ShopActiveService { * @param active - will either be 1 or 0 and will update shops "Shop_Active" field accordingly */ - public void updateShopActive(Integer shopId, Integer active){ + public void updateShopActive(Integer shopId, Integer active, HttpSession session){ if(active == 0 || active == 1){ //only allows active values of 0 or 1 - String query = "UPDATE shops SET Shop_Active = " + active + " WHERE Shop_Id = " + shopId + ";"; + String query = "UPDATE mydb.shops SET Shop_Active = " + active + " WHERE Shop_Id = " + shopId + ";"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "Shop Update", + session, + "Update to Shop: " + shopId + + " with field: Shop_Active with value: " + active + + " in ShopActiveService.updateShopActive()" + ); } } diff --git a/src/main/java/com/example/clientproject/services/ShopDeleter.java b/src/main/java/com/example/clientproject/services/ShopDeleter.java index ced2b5979ec6b678eec33c230de8b956b8b9ffaf..2f7bf251a0e4e40d7ff8d820d1d06b63f3345d97 100644 --- a/src/main/java/com/example/clientproject/services/ShopDeleter.java +++ b/src/main/java/com/example/clientproject/services/ShopDeleter.java @@ -1,20 +1,31 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + @Service public class ShopDeleter { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; /** * @param shopId - the shopID of the shop that the stored procedure is going to delete */ - public void deleteShop(Integer shopId){ + public void deleteShop(Integer shopId, HttpSession session){ String query = "CALL `mydb`.`deleteShop`('" + shopId + "');"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "Deleted Shop", + session, + "Shop deleted with Shop Id: " + shopId + + " in ShopDeleter.deleteShop()" + ); + } } diff --git a/src/main/java/com/example/clientproject/services/StampboardUpdater.java b/src/main/java/com/example/clientproject/services/StampboardUpdater.java index a8d790ff6ac5b3cdbe7680748a5ca34aaf69dffa..a6bf36aab18319d343221b13c5111a9a6dfe622a 100644 --- a/src/main/java/com/example/clientproject/services/StampboardUpdater.java +++ b/src/main/java/com/example/clientproject/services/StampboardUpdater.java @@ -1,53 +1,93 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; import java.util.Map; @Service public class StampboardUpdater { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; + + public StampboardUpdater(JdbcTemplate jdbc, LoggingService loggingService) { + this.jdbc = jdbc; + this.loggingService = loggingService; + } //When using ensure you have validated authority first - public void updateColour(Integer shopId, String colour){ - String query = "UPDATE stamp_boards SET Stamp_Board_Colour = '"+ colour +"' WHERE Stamp_Board_Id = (" + + public void updateColour(Integer shopId, String colour, HttpSession session){ + String query = "UPDATE mydb.stamp_boards SET Stamp_Board_Colour = '"+ colour +"' WHERE Stamp_Board_Id = (" + "SELECT stamp_boards.Stamp_Board_Id FROM mydb.stamp_boards INNER JOIN " + - "shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; - + "mydb.shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "Stamp Board Updated", + session, + "Stamp Board updated for Shop: " + shopId + + " with field: Stamp_Board_Colour with value: " + colour + + " in StampboardUpdater.updateColour()" + ); } - public void updateRewards(Integer shopId, Map<String,Object> rewards){ - String deleteQuery = "delete from rewards where Stamp_Board_Id = (" + - "SELECT Stamp_Board_Id from shops where Shop_Id = "+shopId+");"; - + public void updateRewards(Integer shopId, Map<String,Object> rewards, HttpSession session){ + String deleteQuery = "delete from mydb.rewards where Stamp_Board_Id = (" + + "SELECT Stamp_Board_Id from mydb.shops where Shop_Id = "+shopId+");"; jdbc.execute(deleteQuery); + // Log the change + loggingService.logEvent( + "Reward Deleted", + session, + "Rewards deleted for StampBoard for Shop: " + shopId + + " in StampboardUpdater.updateRewards()" + ); rewards.entrySet().forEach(r -> { - String insertQuery = "INSERT into rewards (Reward_Name, Reward_Stamp_Location,Stamp_Board_Id) values (\""+r.getValue()+"\", " + - r.getKey()+",(SELECT Stamp_Board_Id from shops where Shop_Id = "+ shopId.toString() +"));"; - + String insertQuery = "INSERT into mydb.rewards (Reward_Name, Reward_Stamp_Location,Stamp_Board_Id) values (\""+r.getValue()+"\", " + + r.getKey()+",(SELECT Stamp_Board_Id from mydb.shops where Shop_Id = "+ shopId.toString() +"));"; jdbc.execute(insertQuery); + // Log the change + loggingService.logEvent( + "New Reward", + session, + "Reward inserted for StampBoard for Shop: " + shopId + + " in StampboardUpdater.updateRewards()" + ); }); } - public void updateStampboardSize(Integer shopId, Integer size){ - String query = "UPDATE stamp_boards SET Stamp_Board_Size = "+ size +" WHERE Stamp_Board_Id = (" + + public void updateStampboardSize(Integer shopId, Integer size, HttpSession session){ + String query = "UPDATE mydb.stamp_boards SET Stamp_Board_Size = "+ size +" WHERE Stamp_Board_Id = (" + "SELECT stamp_boards.Stamp_Board_Id FROM mydb.stamp_boards INNER JOIN " + - "shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; - + "mydb.shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "StampBoard Updated", + session, + "StampBoard updated for Shop: " + shopId + + " with: field Stamp_BoardSize with value:" + size + + " in StampboardUpdater.updateStampboardSize()" + ); } - public void updateIconURL(Integer shopId, String url){ - String query = "UPDATE stamp_boards SET Stamp_Board_Icon = '"+ url +"' WHERE Stamp_Board_Id = (" + + public void updateIconURL(Integer shopId, String url, HttpSession session){ + String query = "UPDATE mydb.stamp_boards SET Stamp_Board_Icon = '"+ url +"' WHERE Stamp_Board_Id = (" + "SELECT stamp_boards.Stamp_Board_Id FROM mydb.stamp_boards INNER JOIN " + - "shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; - + "mydb.shops on shops.Stamp_Board_Id = stamp_boards.Stamp_Board_Id where shops.Shop_Id = "+ shopId +" limit 1);"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "StampBoard Updated", + session, + "StampBoard updated for Shop: " + shopId + + " with: field Stamp_Board_Icon with value:" + url + + " in StampboardUpdater.updateIconURL()" + ); } } diff --git a/src/main/java/com/example/clientproject/services/UpdateKeyInfo.java b/src/main/java/com/example/clientproject/services/UpdateKeyInfo.java index 6903dc97958553b7f9f7b6ce72c2cb29b09b4263..fe28be7d600da4466bd2ab3f4ab38039044d9382 100644 --- a/src/main/java/com/example/clientproject/services/UpdateKeyInfo.java +++ b/src/main/java/com/example/clientproject/services/UpdateKeyInfo.java @@ -2,16 +2,24 @@ package com.example.clientproject.services; import com.example.clientproject.data.shops.Shops; import com.example.clientproject.data.shops.ShopsRepo; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + @Service public class UpdateKeyInfo { - @Autowired ShopsRepo shopsRepo; + LoggingService loggingService; + + public UpdateKeyInfo(ShopsRepo shopsRepo, LoggingService loggingService) { + this.shopsRepo = shopsRepo; + this.loggingService = loggingService; + } - public void updateInfo(KeyInfoDTO kiDTO){ + public void updateInfo(KeyInfoDTO kiDTO, HttpSession session){ Shops shop = shopsRepo.getById((long) kiDTO.getShopId()); shop.setShopName(kiDTO.getShopName()); @@ -25,6 +33,13 @@ public class UpdateKeyInfo { } shopsRepo.save(shop); + // Log the change + loggingService.logEvent( + "Shop Updated", + session, + "Shop updated with Shop Id: " + kiDTO.getShopId() + + " in UpdateKeyInfo.updateInfo()" + ); } } diff --git a/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java b/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java index 5743db7eaf71b981e26f2e588d5b11f427a8281e..d5876161b094aed13f41c5830d8309fd8ea2354e 100644 --- a/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java +++ b/src/main/java/com/example/clientproject/services/UserFavouriteDeleter.java @@ -1,28 +1,41 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + @Service public class UserFavouriteDeleter { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; + + public UserFavouriteDeleter(JdbcTemplate jdbc, LoggingService loggingService) { + this.jdbc = jdbc; + this.loggingService = loggingService; + } /** * Takes a userfavourite DTO and removes it from the database. - * @param usfDTO + * @param usfDTO - usfDTO + * @param session - session */ - public void delete(UserFavouriteDTO usfDTO){ + public void delete(UserFavouriteDTO usfDTO, HttpSession session){ - String query = "DELETE FROM User_Shop_Links WHERE (Shop_Id = " + + String query = "DELETE FROM mydb.User_Shop_Links WHERE (Shop_Id = " + usfDTO.getShopId() +" AND User_Id = " + usfDTO.getUserId() +")"; - - //System.out.println(query); - jdbc.execute(query); - + // Log the change + loggingService.logEvent( + "UserShopLink Deleted", + session, + "UserShopLink deleted with Shop Id: " + usfDTO.getShopId() + + " and User Id: " + usfDTO.getUserId() + + " in UserFavouriteDeleter.delete()" + ); } } diff --git a/src/main/java/com/example/clientproject/services/UserFavouriteSaver.java b/src/main/java/com/example/clientproject/services/UserFavouriteSaver.java index df390f2d75aabdc3953d256eccf611f9a6d19079..da7687d0fc8edcf26566f50a3d9eee23024a9ff5 100644 --- a/src/main/java/com/example/clientproject/services/UserFavouriteSaver.java +++ b/src/main/java/com/example/clientproject/services/UserFavouriteSaver.java @@ -1,28 +1,40 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + //This can be deleted, class "UserFavouriteTagSaver" is being used @Service public class UserFavouriteSaver { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; + + public UserFavouriteSaver(JdbcTemplate jdbc, LoggingService loggingService) { + this.jdbc = jdbc; + this.loggingService = loggingService; + } /** * Takes a user dto and saves it to the DB with jdbc - * @param urfDTO UserfavouriteDTO + * @param urfDTO UserFavouriteDTO + * @param session - session */ - public void save(UserFavouriteDTO urfDTO){ - - String query = "INSERT INTO User_Shop_Links (Shop_Id, User_Id) VALUES ("+ urfDTO.getShopId() + + public void save(UserFavouriteDTO urfDTO, HttpSession session){ + String query = "INSERT INTO mydb.User_Shop_Links (Shop_Id, User_Id) VALUES ("+ urfDTO.getShopId() + ","+urfDTO.getUserId() + ")"; - - //System.out.println(query); - jdbc.execute(query); - + // Log the change + loggingService.logEvent( + "UserShopLink Inserted", + session, + "UserShopLink inserted with Shop Id: " + urfDTO.getShopId() + + " and User Id: " + urfDTO.getUserId() + + " in UserFavouriteSaver.save()" + ); } } diff --git a/src/main/java/com/example/clientproject/services/UserFavouriteTagSaver.java b/src/main/java/com/example/clientproject/services/UserFavouriteTagSaver.java index 80e5ea3b968cdb981bf35fb024bba9e7a6520335..dd6429d407d54f13d4c8e4dfbb86a7804694c81b 100644 --- a/src/main/java/com/example/clientproject/services/UserFavouriteTagSaver.java +++ b/src/main/java/com/example/clientproject/services/UserFavouriteTagSaver.java @@ -1,26 +1,41 @@ package com.example.clientproject.services; +import com.example.clientproject.service.LoggingService; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; +import javax.servlet.http.HttpSession; + @Service public class UserFavouriteTagSaver { - @Autowired JdbcTemplate jdbc; + LoggingService loggingService; + + public UserFavouriteTagSaver(JdbcTemplate jdbc, LoggingService loggingService) { + this.jdbc = jdbc; + this.loggingService = loggingService; + } - public void saveUserFavTag(int UserID, String TagID){ + public void saveUserFavTag(int userID, String tagID, HttpSession session){ String disableFKeyChecks = "SET FOREIGN_KEY_CHECKS=0;"; String enableFKeyChecks = "SET FOREIGN_KEY_CHECKS=1;"; jdbc.execute(disableFKeyChecks); - String query = "INSERT INTO user_favourite_tags (User_Id, Tag_Id) VALUES ("+ UserID + ","+TagID + ")"; + String query = "INSERT INTO mydb.user_favourite_tags (User_Id, Tag_Id) VALUES ("+ userID + ","+tagID + ")"; jdbc.execute(query); jdbc.execute(enableFKeyChecks); + // Log the changes + loggingService.logEvent( + "UserFavouriteTag Inserted", + session, + "UserFavouriteTag Inserted with User Id: " + userID + + "and Tag Id: " + tagID + + " in UserFavouriteTagSaver.saveUserFavTag()" + ); } - } diff --git a/src/main/java/com/example/clientproject/services/UserSocialSave.java b/src/main/java/com/example/clientproject/services/UserSocialSave.java index 29c82b26748575f063151e7af84b1a1e638a561e..b9813831e66e50606b14e8715207c08e2c4979e4 100644 --- a/src/main/java/com/example/clientproject/services/UserSocialSave.java +++ b/src/main/java/com/example/clientproject/services/UserSocialSave.java @@ -1,18 +1,25 @@ package com.example.clientproject.services; import com.example.clientproject.data.socials.SocialsRepo; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; + @Service public class UserSocialSave { - @Autowired JdbcTemplate jdbc; - - @Autowired SocialsRepo socialRepo; + LoggingService loggingService; + + public UserSocialSave(JdbcTemplate jdbc, SocialsRepo socialRepo, LoggingService loggingService) { + this.jdbc = jdbc; + this.socialRepo = socialRepo; + this.loggingService = loggingService; + } private String queryGenerator(int shopId, String socialPlatform, String socialName){ String query; @@ -23,23 +30,59 @@ public class UserSocialSave { return query; } - public void updateSocials(UserSocialDTO usDTO){ + public void updateSocials(UserSocialDTO usDTO, HttpSession session){ int shopId = usDTO.getShopId(); String query; query = queryGenerator(shopId, "Instagram", usDTO.getInstagram()); jdbc.execute(query); + // Log the changes + loggingService.logEvent( + "Social Updated", + session, + "Social updated for Shop Id: " + shopId + + " in UserSocialSave.updateSocials()" + ); + query = queryGenerator(shopId, "Facebook", usDTO.getFacebook()); jdbc.execute(query); + // Log the changes + loggingService.logEvent( + "Social Updated", + session, + "Social updated for Shop Id: " + shopId + + " in UserSocialSave.updateSocials()" + ); + query = queryGenerator(shopId, "Twitter", usDTO.getTwitter()); jdbc.execute(query); + // Log the changes + loggingService.logEvent( + "Social Updated", + session, + "Social updated for Shop Id: " + shopId + + " in UserSocialSave.updateSocials()" + ); + query = queryGenerator(shopId, "TikTok", usDTO.getTiktok()); jdbc.execute(query); - query = "UPDATE Shops SET Shop_Website = '" + + // Log the changes + loggingService.logEvent( + "Social Updated", + session, + "Social updated for Shop Id: " + shopId + + " in UserSocialSave.updateSocials()" + ); + + query = "UPDATE mydb.Shops SET Shop_Website = '" + usDTO.getShopUrl() + "' WHERE Shop_Id = " + shopId; - jdbc.execute(query); - + // Log the changes + loggingService.logEvent( + "ShopWebsite Updated", + session, + "Shop Website updated for Shop Id: " + shopId + + " in UserSocialSave.updateSocials()" + ); } - } diff --git a/src/main/java/com/example/clientproject/services/UserStampBoardService.java b/src/main/java/com/example/clientproject/services/UserStampBoardService.java index b5391f7c6b490d671c8852b9554256065941b1e5..f29f93d80e17d806e259294e822123dd06f803d9 100644 --- a/src/main/java/com/example/clientproject/services/UserStampBoardService.java +++ b/src/main/java/com/example/clientproject/services/UserStampBoardService.java @@ -3,10 +3,12 @@ package com.example.clientproject.services; import com.example.clientproject.data.userStampBoards.UserStampBoards; import com.example.clientproject.data.userStampBoards.UserStampBoardsRepo; import com.example.clientproject.data.users.UsersRepo; +import com.example.clientproject.service.LoggingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpSession; import java.sql.ResultSet; import java.util.List; import java.util.Map; @@ -15,11 +17,15 @@ import java.util.Objects; @Service public class UserStampBoardService { - @Autowired JdbcTemplate jdbc; - - @Autowired UserStampBoardsRepo userRepo; + LoggingService loggingService; + + public UserStampBoardService(JdbcTemplate jdbc, UserStampBoardsRepo userRepo, LoggingService loggingService) { + this.jdbc = jdbc; + this.userRepo = userRepo; + this.loggingService = loggingService; + } /** * Select user stamp position by userId and stampBoardId @@ -28,7 +34,7 @@ public class UserStampBoardService { */ public int getUserStampPos(int userID, int stampBoardID){ - String query = "SELECT User_Stamp_Position FROM user_stamp_boards WHERE User_Id = " + userID + " AND Stamp_Board_Id = " + stampBoardID + ";"; + String query = "SELECT User_Stamp_Position FROM mydb.user_stamp_boards WHERE User_Id = " + userID + " AND Stamp_Board_Id = " + stampBoardID + ";"; try{ List<Map<String, Object>> rs = jdbc.queryForList(query); @@ -40,14 +46,32 @@ public class UserStampBoardService { } - public void changeUserStampPosition(int userID, int incrementValue, int currentUserStampPos, int stampBoardId){ + public void changeUserStampPosition(int userID, int incrementValue, int currentUserStampPos, int stampBoardId, HttpSession session){ int newStampPos = currentUserStampPos + incrementValue; - String query = "UPDATE user_stamp_boards SET User_Stamp_Position = " + newStampPos + " WHERE User_Id = " + userID + " AND Stamp_Board_Id = " + stampBoardId + ";"; + String query = "UPDATE mydb.user_stamp_boards SET User_Stamp_Position = " + newStampPos + " WHERE User_Id = " + userID + " AND Stamp_Board_Id = " + stampBoardId + ";"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "UserStampBoard Updated", + session, + "UserStampBoard updated for StampBoard Id: " + stampBoardId + + " where User Id: " + userID + + " where field: User_Stamp_Position and value: " + newStampPos + + " in UserStampBoardService.changeUserStampPosition()" + ); } - public void createStampRecord(int userID, int stampPosition, int stampBoardId){ - String query = "INSERT INTO user_stamp_boards (User_Id, Stamp_Board_Id, User_Stamp_Position) VALUES ("+userID+", "+stampBoardId+", "+ stampPosition +");"; + public void createStampRecord(int userID, int stampPosition, int stampBoardId, HttpSession session){ + String query = "INSERT INTO mydb.user_stamp_boards (User_Id, Stamp_Board_Id, User_Stamp_Position) VALUES ("+userID+", "+stampBoardId+", "+ stampPosition +");"; jdbc.execute(query); + // Log the change + loggingService.logEvent( + "UserStampBoard Inserted", + session, + "UserStampBoard Inserted where User Id: " + userID + + " StampBoard Id: " + stampBoardId + + " and Stamp Position: " + stampPosition + + " in UserStampBoardService.createStampRecord()" + ); } } diff --git a/src/main/java/com/example/clientproject/web/controllers/AdminController.java b/src/main/java/com/example/clientproject/web/controllers/AdminController.java index 21efc8fde9057fea8d69543833cfd2b46bdca4a2..b21f430099856ec56b1a77fa7ff59c499f41b896 100644 --- a/src/main/java/com/example/clientproject/web/controllers/AdminController.java +++ b/src/main/java/com/example/clientproject/web/controllers/AdminController.java @@ -195,7 +195,7 @@ public class AdminController { } if (shopPermissionLevel == 2 || shopPermissionLevel == 3) { System.out.println("shop is being deleted"); - shopDeleter.deleteShop(shopId); + shopDeleter.deleteShop(shopId, session); } return "redirect:/settings"; } diff --git a/src/main/java/com/example/clientproject/web/controllers/SaveUserFavouriteTagController.java b/src/main/java/com/example/clientproject/web/controllers/SaveUserFavouriteTagController.java index 54c2554f43063ec6690ea67a8e2241a1c1657c64..56aa5d29587c516f6cdcabb8c33d9fd616a8d009 100644 --- a/src/main/java/com/example/clientproject/web/controllers/SaveUserFavouriteTagController.java +++ b/src/main/java/com/example/clientproject/web/controllers/SaveUserFavouriteTagController.java @@ -38,7 +38,7 @@ public class SaveUserFavouriteTagController { //System.out.println(TagID_List.size()); //System.out.println(TagID); int UserID = jwtUtils.getLoggedInUserId(session).get(); - FavTagService.saveUserFavTag(UserID,TagID); + FavTagService.saveUserFavTag(UserID,TagID, session); } return("redirect:/"); } diff --git a/src/main/java/com/example/clientproject/web/controllers/userSettingsPage/UserSettingsController.java b/src/main/java/com/example/clientproject/web/controllers/userSettingsPage/UserSettingsController.java index a228ad4a908c40674ac2a010004353fda8f53788..55be605a1cca6e20c91843fc517c8e081f003f5a 100644 --- a/src/main/java/com/example/clientproject/web/controllers/userSettingsPage/UserSettingsController.java +++ b/src/main/java/com/example/clientproject/web/controllers/userSettingsPage/UserSettingsController.java @@ -64,7 +64,8 @@ public class UserSettingsController { miscQueries.updateUser( userId, "User_First_Name", - nameEmailProfileChangeForm.getNewFirstName() + nameEmailProfileChangeForm.getNewFirstName(), + httpSession ); } @@ -74,7 +75,8 @@ public class UserSettingsController { miscQueries.updateUser( userId, "User_Last_Name", - nameEmailProfileChangeForm.getNewLastName() + nameEmailProfileChangeForm.getNewLastName(), + httpSession ); } @@ -84,7 +86,8 @@ public class UserSettingsController { miscQueries.updateUser( userId, "User_Email", - nameEmailProfileChangeForm.getNewEmail().toLowerCase() + nameEmailProfileChangeForm.getNewEmail().toLowerCase(), + httpSession ); } @@ -94,7 +97,8 @@ public class UserSettingsController { miscQueries.updateUser( userId, "User_Profile_Picture", - nameEmailProfileChangeForm.getNewProfilePic() + nameEmailProfileChangeForm.getNewProfilePic(), + httpSession ); } @@ -165,7 +169,8 @@ public class UserSettingsController { "User_Password", passwordEncoder.encode( passwordChangeForm.getNewPassword() - ) + ), + httpSession ); // Add an attribute to the model model.addAttribute("passwordChangeSuccess", true); diff --git a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java index 9841b2c5a5a4ac0ebd60269d2cd5a561b2186bd5..ba7207cae18b0f026f774a3f66c5d68e03d0bebd 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java +++ b/src/main/java/com/example/clientproject/web/restControllers/BusinessFavouriter.java @@ -25,11 +25,6 @@ public class BusinessFavouriter { } - /** - * - * @param submitted form, contains a UserID and ShopID - * @return ERROR or OK depending on whether it any errors are thrown. - */ @PostMapping("/favouriteBusiness") public String favouriteBusiness(UserFavouriteForm uff, HttpSession session){ UserFavouriteDTO ufDTO; @@ -40,7 +35,7 @@ public class BusinessFavouriter { } try{ if(toggleFavourite.alreadyInDb(ufDTO)){ - deleteFavourite.delete(ufDTO); + deleteFavourite.delete(ufDTO, session); }else{ saveFavourite.save(ufDTO); } diff --git a/src/main/java/com/example/clientproject/web/restControllers/ToggleShopActive.java b/src/main/java/com/example/clientproject/web/restControllers/ToggleShopActive.java index 49629f6948e99e57d90e8b7dd3e1ef0a31d64938..8ee236a6b88f20a08f027e45ff990c7ae4048955 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/ToggleShopActive.java +++ b/src/main/java/com/example/clientproject/web/restControllers/ToggleShopActive.java @@ -45,9 +45,9 @@ public class ToggleShopActive { if (shopPermissionLevel == 2 || shopPermissionLevel == 3) { System.out.println("shop is being deleted"); if(shopActiveService.isShopActive(shopId) == 0){//if shop is currently un-active - shopActiveService.updateShopActive(shopId, 1);//enables shop + shopActiveService.updateShopActive(shopId, 1, session);//enables shop } else if(shopActiveService.isShopActive(shopId) == 1){//if shop is currently active - shopActiveService.updateShopActive(shopId, 0);//disables shop + shopActiveService.updateShopActive(shopId, 0, session);//disables shop } else { System.out.println("an error has occured updating shop activity, shop may potentially have an active value other than 1 or 0"); } diff --git a/src/main/java/com/example/clientproject/web/restControllers/UpdateKeyInformation.java b/src/main/java/com/example/clientproject/web/restControllers/UpdateKeyInformation.java index e975033706122c37e1028047c7b43474439fed99..b8d4401197ffb70a93758831eb95dcdd70d9a099 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UpdateKeyInformation.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UpdateKeyInformation.java @@ -28,7 +28,7 @@ public class UpdateKeyInformation { return "BAD SESSION"; } try{ - updateInfo.updateInfo(new KeyInfoDTO(keyInformationForm)); + updateInfo.updateInfo(new KeyInfoDTO(keyInformationForm), session); return "OK"; }catch (Exception e){ e.printStackTrace(); diff --git a/src/main/java/com/example/clientproject/web/restControllers/UpdateSocials.java b/src/main/java/com/example/clientproject/web/restControllers/UpdateSocials.java index 21d09d0a97766772da9917d84a6ffadefd23537c..b934bff59fc9f04b1cb29c30b45c065f082a77cd 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UpdateSocials.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UpdateSocials.java @@ -46,7 +46,7 @@ public class UpdateSocials { if(!isLinked){ throw new ForbiddenErrorException("User not authenticated"); } - save.updateSocials(userSocialDTO); + save.updateSocials(userSocialDTO, session); return "OK"; } } diff --git a/src/main/java/com/example/clientproject/web/restControllers/UpdateStaff.java b/src/main/java/com/example/clientproject/web/restControllers/UpdateStaff.java index 943c7b272c448699f58d0605e084b5258e6f82f4..aa6226c72c411294711d3dc26fa867da1ef60e04 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UpdateStaff.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UpdateStaff.java @@ -63,7 +63,7 @@ public class UpdateStaff { userPermRepo.delete(userPerm); return "USER REMOVED"; }else{ - linkUser.linkUserShop(usf.getShopId(),userId, 1L); + linkUser.linkUserShop(usf.getShopId(),userId, 1L, session); return "OK"; } } 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 3b517f939a069bce3e0c169b5bf43e4f81b3ba64..b9d6eca589b69c9635e9df0892ca03b2a8084cef 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UpdateUserStampPosition.java @@ -70,16 +70,16 @@ public class UpdateUserStampPosition { StampBoards stampBoard = shop.getStampBoard(); if(Objects.equals(direction, "subtract")){ if(currentUserStampPos != 0){ - userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -1, currentUserStampPos, (int) stampBoard.getStampBoardId()); + userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -1, currentUserStampPos, (int) stampBoard.getStampBoardId(), session); } } else if(Objects.equals(direction, "add")){ if(currentUserStampPos != shopStampBoardSize){ - userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), 1, currentUserStampPos, (int) stampBoard.getStampBoardId()); + userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), 1, currentUserStampPos, (int) stampBoard.getStampBoardId(), session); currentUserStampPos = userStampBoardService.getUserStampPos(jwtUtils.getLoggedInUserId(session).get(), (int) shopStampBoardId ); } if(currentUserStampPos == 0){ System.out.println("Attempting to create record for user"); - userStampBoardService.createStampRecord(jwtUtils.getLoggedInUserId(session).get(), 1, (int) shopStampBoardId); + userStampBoardService.createStampRecord(jwtUtils.getLoggedInUserId(session).get(), 1, (int) shopStampBoardId, session); } } } @@ -102,7 +102,7 @@ public class UpdateUserStampPosition { } if(userIsLinkedToStampBoard){ if(userStampPos >= reward.get().getRewardStampLocation()){ - userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -reward.get().getRewardStampLocation(), userStampPos, stampBoardId); + userStampBoardService.changeUserStampPosition(jwtUtils.getLoggedInUserId(session).get(), -reward.get().getRewardStampLocation(), userStampPos, stampBoardId, session); //credit to www.programiz.com for code generator String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";//creates a string of all characters StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/com/example/clientproject/web/restControllers/UserSettings.java b/src/main/java/com/example/clientproject/web/restControllers/UserSettings.java index e611e2e748765775174d4b6a39faa5e554bc9992..a26473fecf099033f4ee5a82d81334166b1f66c7 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/UserSettings.java +++ b/src/main/java/com/example/clientproject/web/restControllers/UserSettings.java @@ -48,7 +48,8 @@ public class UserSettings { miscQueries.updateUser( userId, "User_First_Name", - nameEmailProfileChangeForm.getNewFirstName() + nameEmailProfileChangeForm.getNewFirstName(), + httpSession ); } @@ -59,7 +60,8 @@ public class UserSettings { miscQueries.updateUser( userId, "User_Last_Name", - nameEmailProfileChangeForm.getNewLastName() + nameEmailProfileChangeForm.getNewLastName(), + httpSession ); } @@ -70,7 +72,8 @@ public class UserSettings { miscQueries.updateUser( userId, "User_Email", - nameEmailProfileChangeForm.getNewEmail().toLowerCase() + nameEmailProfileChangeForm.getNewEmail().toLowerCase(), + httpSession ); } @@ -81,7 +84,8 @@ public class UserSettings { miscQueries.updateUser( userId, "User_Profile_Picture", - nameEmailProfileChangeForm.getNewProfilePic() + nameEmailProfileChangeForm.getNewProfilePic(), + httpSession ); } @@ -130,7 +134,8 @@ public class UserSettings { "User_Password", passwordEncoder.encode( passwordChangeForm.getNewPassword() - ) + ), + httpSession ); // Return a success message to the settings page diff --git a/src/main/java/com/example/clientproject/web/restControllers/loginAPI.java b/src/main/java/com/example/clientproject/web/restControllers/loginAPI.java index 530d6a95fc4261ab7ed1a168406778d32b7001ff..3107abc086e79a82e892df0c7f072d9c4418f204 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/loginAPI.java +++ b/src/main/java/com/example/clientproject/web/restControllers/loginAPI.java @@ -1,6 +1,7 @@ package com.example.clientproject.web.restControllers; import com.example.clientproject.exceptions.ForbiddenErrorException; +import com.example.clientproject.service.LoggingService; import com.example.clientproject.service.Utils.JWTUtils; import com.example.clientproject.service.dtos.UsersDTO; import com.example.clientproject.service.searches.UsersSearch; @@ -20,6 +21,7 @@ import java.util.Optional; public class loginAPI { private UsersSearch usersSearch; private JWTUtils jwtUtils; + LoggingService loggingService; public loginAPI(UsersSearch aUsersSearch, JWTUtils jwt) { usersSearch = aUsersSearch; @@ -51,14 +53,32 @@ public class loginAPI { jwtUtils.makeUserJWT( (int) usersDTOOptional.get().getUserId(), session); - // Otherwise, throw an exception with the correct error message + // Log the successful login + loggingService.logEvent( + "Successful Login", + session, + "Successful login for User with Id: " + usersDTOOptional.get().getUserId() + ); } else { + // Log the Failed login + loggingService.logEvent( + "Failed Login", + session, + "Failed login for User with Id: " + usersDTOOptional.get().getUserId() + ); //Changed this as it is a security risk exposing which field is incorrect //throw new ForbiddenErrorException("Password Incorrect"); throw new ForbiddenErrorException("Details Incorrect"); + } // Else - assumes that the email is incorrect } else { + // Log the Failed login + loggingService.logEvent( + "Failed Login", + session, + "Failed login for User with Email: " + loginForm.getLoginEmail() + ); //Changed this as it is a security risk exposing which field is incorrect //throw new ForbiddenErrorException("Email Incorrect"); throw new ForbiddenErrorException("Details Incorrect"); diff --git a/src/main/java/com/example/clientproject/web/restControllers/updateStampboard.java b/src/main/java/com/example/clientproject/web/restControllers/updateStampboard.java index 8c1bdde7b59262864e3edacf3a017fa82bef78f0..b65577bbafbe6251693afe213c5c5f026c0b463b 100644 --- a/src/main/java/com/example/clientproject/web/restControllers/updateStampboard.java +++ b/src/main/java/com/example/clientproject/web/restControllers/updateStampboard.java @@ -56,11 +56,11 @@ public class updateStampboard { throw new ForbiddenErrorException("Invalid Colour value"); } - stampboardUpdater.updateColour(usf.getShopId(), usf.getColour()); - stampboardUpdater.updateStampboardSize(usf.getShopId(), usf.getStampboardSize()); - stampboardUpdater.updateRewards(usf.getShopId(), rewardsMap); + stampboardUpdater.updateColour(usf.getShopId(), usf.getColour(), session); + stampboardUpdater.updateStampboardSize(usf.getShopId(), usf.getStampboardSize(), session); + stampboardUpdater.updateRewards(usf.getShopId(), rewardsMap, session); if(usf.getIconFilePath().length() > 0){ - stampboardUpdater.updateIconURL(usf.getShopId(), usf.getIconFilePath()); + stampboardUpdater.updateIconURL(usf.getShopId(), usf.getIconFilePath(), session); } return "OK"; } diff --git a/src/main/resources/database/schema.sql b/src/main/resources/database/schema.sql index 3d7f0735aed3f3845ab1764376e4d115af7d8b35..f573223b291e6dff42214f78ae656f4dd627b4ae 100644 --- a/src/main/resources/database/schema.sql +++ b/src/main/resources/database/schema.sql @@ -331,7 +331,7 @@ INSERT INTO Tags (Tag_Name) VALUES ('eco-friendly'); INSERT INTO Tags (Tag_Name) VALUES ('decorations'); INSERT INTO Tags (Tag_Name) VALUES ('photography'); -INSERT INTO Events (Event_Name) VALUES ('New Account Created'); +INSERT INTO Events (Event_Name) VALUES ('New User'); INSERT INTO Events (Event_Name) VALUES ('Failed Login'); INSERT INTO Events (Event_Name) VALUES ('Successful Login'); INSERT INTO Events (Event_Name) VALUES ('User Details Changed'); @@ -342,4 +342,19 @@ INSERT INTO Events (Event_Name) VALUES ('New Favourite Business'); INSERT INTO Events (Event_Name) VALUES ('New Shop User'); INSERT INTO Events (Event_Name) VALUES ('Shop Details Changed'); INSERT INTO Events (Event_Name) VALUES ('Shop Activity Toggled'); -INSERT INTO Events (Event_Name) VALUES ('Image Inserted'); \ No newline at end of file +INSERT INTO Events (Event_Name) VALUES ('Image Inserted'); +INSERT INTO Events (Event_Name) VALUES ('New Stamp Board'); +INSERT INTO Events (Event_Name) VALUES ('New Reward'); +INSERT INTO Events (Event_Name) VALUES ('New Tag'); +INSERT INTO Events (Event_Name) VALUES ('New Shop Tag Link'); +INSERT INTO Events (Event_Name) VALUES ('New Social'); +INSERT INTO Events (Event_Name) VALUES ('New User Permission'); +INSERT INTO Events (Event_Name) VALUES ('Stamp Board Updated'); +INSERT INTO Events (Event_Name) VALUES ('Reward Deleted'); +INSERT INTO Events (Event_Name) VALUES ('Shop Updated'); +INSERT INTO Events (Event_Name) VALUES ('UserShopLink Deleted'); +INSERT INTO Events (Event_Name) VALUES ('UserShopLink Inserted'); +INSERT INTO Events (Event_Name) VALUES ('ShopWebsite Updated'); +INSERT INTO Events (Event_Name) VALUES ('UserStampBoard Updated'); +INSERT INTO Events (Event_Name) VALUES ('UserStampBoard Inserted'); +INSERT INTO Events (Event_Name) VALUES ('UserFavouriteTag Inserted'); \ No newline at end of file diff --git a/src/test/java/com/example/clientproject/data/ShopActivityTests.java b/src/test/java/com/example/clientproject/data/ShopActivityTests.java index 0bcd3f054ff2799950772ecc7870561c5023785e..32ebb627dc0cfbf1bde6989bcfc89804c2b33d45 100644 --- a/src/test/java/com/example/clientproject/data/ShopActivityTests.java +++ b/src/test/java/com/example/clientproject/data/ShopActivityTests.java @@ -37,7 +37,7 @@ public class ShopActivityTests { @Test public void activeShopsDecreasedBy1AfterMethodCalled(){ List<Shops> activeShopsListBeforeChange = shopsRepo.findActiveShops(); - shopActiveService.updateShopActive(6, 0); + shopActiveService.updateShopActive(6, 0, null); List<Shops> activeShopsListAfterChange = shopsRepo.findActiveShops(); assertEquals(activeShopsListBeforeChange.size()-1, activeShopsListAfterChange.size()); //size after change should be equal to size before change minus one diff --git a/src/test/java/com/example/clientproject/web/controllers/DeleteShopTests.java b/src/test/java/com/example/clientproject/web/controllers/DeleteShopTests.java index 265fe5e281f6586436e679f2fb94a6d27497eec0..8579b7df8c5360c733f968e0b9d3d8d1f0f99581 100644 --- a/src/test/java/com/example/clientproject/web/controllers/DeleteShopTests.java +++ b/src/test/java/com/example/clientproject/web/controllers/DeleteShopTests.java @@ -31,7 +31,7 @@ public class DeleteShopTests { //in future make a jdbc service that will do the exact same thing as the stored procedure @Test public void shouldDeleteAllShopData() throws Exception{ - shopDeleter.deleteShop(12); + shopDeleter.deleteShop(12, null); List<Shops> shopsList = shopsRepo.findAll(); assertEquals(11, shopsList.size()); } diff --git a/src/test/java/com/example/clientproject/web/controllers/SelectCategoriesTests.java b/src/test/java/com/example/clientproject/web/controllers/SelectCategoriesTests.java index 1f1a5a9c8f9e57ec4d7e36a5a543e27e04653ac0..e8750b067d826f6e981ab3f5e89246326f9bca6f 100644 --- a/src/test/java/com/example/clientproject/web/controllers/SelectCategoriesTests.java +++ b/src/test/java/com/example/clientproject/web/controllers/SelectCategoriesTests.java @@ -58,7 +58,7 @@ public class SelectCategoriesTests { "", "", LocalDateTime.now().format(formatter), twoFactorMethods); // Save the user - miscQueries.saveUser(newUser); + miscQueries.saveUser(newUser, null); // Get the user as a DTO object Optional<Users> usersOptional = usersRepo.findByUserEmail(newUser.getUserEmail()); @@ -69,11 +69,11 @@ public class SelectCategoriesTests { // Create a new "Tags" object with that name Tags newTag = new Tags(tagName); // Save a new tag with that name - miscQueries.saveTag(newTag); + miscQueries.saveTag(newTag, null); // Get the newly saved tag Optional<Tags> tagsOptional = tagsRepo.findByTagName(tagName); // Add a row to the "User_Favourite_Tags" table - miscQueries.saveUserFavouriteTags(usersOptional.get(), tagsOptional.get()); + miscQueries.saveUserFavouriteTags(usersOptional.get(), tagsOptional.get(), null); } // Get the size of the table at the beginning