Skip to content
Snippets Groups Projects
Commit 3fb63b44 authored by John Watkins's avatar John Watkins
Browse files

Merge branch 'develop' into 'issueSeventeen'

User is now authenticated on post request, all fields functional on client...

See merge request !74
parents 43368f8e 57f93f9a
No related branches found
No related tags found
1 merge request!74User is now authenticated on post request, all fields functional on client...
Showing
with 330 additions and 25 deletions
package com.example.clientproject.data.categories; package com.example.clientproject.data.categories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Repository for the "Categories" Entity * Repository for the "Categories" Entity
...@@ -14,4 +16,7 @@ public interface CategoriesRepo extends JpaRepository<Categories, Long> { ...@@ -14,4 +16,7 @@ public interface CategoriesRepo extends JpaRepository<Categories, Long> {
* @return - the category * @return - the category
*/ */
Categories save(Categories category); Categories save(Categories category);
@Query("select c from Categories c where c.categoryName = ?1")
public Categories findByName(String categoryName);
} }
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.dtos.UsersDTO;
import java.util.List;
public interface MiscQueries {
void saveUserFavouriteTags(Users user, Tags tag);
void saveUser(Users user);
void saveTag(Tags tag);
List<UserFavouriteTags> findAllUserFavouriteTags();
}
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.dtos.UsersDTO;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Class for any misc queries, JDBC will be used instead of JPA for more customization
*/
@Repository
public class MiscQueriesImpl implements MiscQueries{
private final JdbcTemplate jdbcTemplate;
private final RowMapper<UserFavouriteTags> userFavouriteTagsRowMapper;
/**
* Constructor
* @param aJdbcTemplate - the JDBC Template to pass in
*/
public MiscQueriesImpl(JdbcTemplate aJdbcTemplate) {
this.jdbcTemplate = aJdbcTemplate;
userFavouriteTagsRowMapper = (rs, i) -> new UserFavouriteTags(
rs.getLong("User_Favourite_Tag_Id"),
rs.getLong("User_Id"),
rs.getLong("Tag_Id")
);
}
/**
* Insert into "User_Favourite_Tags"
* @param user - the user
* @param tag - the tag
*/
public void saveUserFavouriteTags(Users user, Tags tag) {
SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("User_Favourite_Tags")
.usingGeneratedKeyColumns("User_Favourite_Tag_Id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("User_Id", user.getUserId());
parameters.put("Tag_Id", tag.getTagId());
Number id = simpleJdbcInsert.execute(parameters);
}
/**
* Insert into "Users" table
* @param user - the user to insert
*/
public void saveUser(Users user) {
SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("Users")
.usingGeneratedKeyColumns("User_Id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("User_Id", user.getUserId());
parameters.put("User_First_Name", user.getUserFirstName());
parameters.put("User_Last_Name", user.getUserLastName());
parameters.put("User_Email", user.getUserEmail());
parameters.put("User_Password", user.getUserPassword());
parameters.put("User_Profile_Picture", user.getUserProfilePicture());
parameters.put("Two_Factor_Method_Id", user.getTwoFactorMethod().getTwoFactorMethodId());
parameters.put("User_Reset_Code", user.getUserResetCode());
parameters.put("User_Reset_Code_Expiry", user.getUserResetCodeExpiry());
Number id = simpleJdbcInsert.execute(parameters);
}
/**
* Insert into the "Tags" table
* @param tag - the tag to insert
*/
public void saveTag(Tags tag) {
SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("Tags")
.usingGeneratedKeyColumns("Tag_Id");
Map<String, Object> parameters = new HashMap<>();
parameters.put("Tag_Id", tag.getTagId());
parameters.put("Tag_Name", tag.getTagName());
Number id = simpleJdbcInsert.execute(parameters);
}
/**
* Find all entries into the "User_Favourite_Tags" table
* @return - list of all entries found
*/
public List<UserFavouriteTags> findAllUserFavouriteTags() {
return jdbcTemplate.query(
"select * from User_Favourite_Tags",
userFavouriteTagsRowMapper,
new Object[]{}
);
}
}
package com.example.clientproject.data.misc;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserFavouriteTags {
private long userFavouriteTagId;
private long userId;
private long tagId;
}
...@@ -24,8 +24,9 @@ public class Rewards { ...@@ -24,8 +24,9 @@ public class Rewards {
private String rewardName; private String rewardName;
private int rewardStampLocation; private int rewardStampLocation;
public Rewards(String rewardName, int rewardStampLocation){ public Rewards(String aRewardName, int rewardLocation){
this.rewardName = rewardName; rewardName = aRewardName;
this.rewardStampLocation = rewardStampLocation; rewardStampLocation = rewardLocation;
} }
} }
...@@ -3,8 +3,10 @@ package com.example.clientproject.data.shops; ...@@ -3,8 +3,10 @@ package com.example.clientproject.data.shops;
import com.example.clientproject.data.categories.Categories; import com.example.clientproject.data.categories.Categories;
import com.example.clientproject.data.converters.TinyIntToBoolean; import com.example.clientproject.data.converters.TinyIntToBoolean;
import com.example.clientproject.data.rewards.Rewards; import com.example.clientproject.data.rewards.Rewards;
import com.example.clientproject.data.socials.Socials;
import com.example.clientproject.data.stampBoards.StampBoards; import com.example.clientproject.data.stampBoards.StampBoards;
import com.example.clientproject.data.tags.Tags; import com.example.clientproject.data.tags.Tags;
import com.example.clientproject.data.userStampBoards.UserStampBoards;
import com.example.clientproject.data.users.Users; import com.example.clientproject.data.users.Users;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -12,6 +14,7 @@ import lombok.NoArgsConstructor; ...@@ -12,6 +14,7 @@ import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Shops Entity * Shops Entity
...@@ -70,11 +73,12 @@ public class Shops { ...@@ -70,11 +73,12 @@ public class Shops {
) )
private List<Tags> shopTags; private List<Tags> shopTags;
@OneToOne @OneToOne(cascade=CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name="Stamp_Board_Id") @JoinColumn(name="Stamp_Board_Id")
private StampBoards stampBoard; private StampBoards stampBoard;
@ManyToOne @ManyToOne
@JoinColumn(name="Category_Id") @JoinColumn(name="Category_Id")
private Categories category; private Categories category;
} }
package com.example.clientproject.data.socials;
import com.example.clientproject.data.shops.Shops;
import com.example.clientproject.data.users.Users;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Socials{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Social_Id", nullable = false)
private Integer socialId;
@ManyToOne
@JoinColumn(name="Shop_Id", nullable = false)
private Shops shop;
@Column(name = "Social_Platform", length = 45)
private String socialPlatform;
@Column(name = "Social_Name", length = 45)
private String socialName;
public Socials(Shops aShop, String aSocialPlatform, String aSocialName){
shop = aShop;
socialPlatform = aSocialPlatform;
socialName = aSocialName;
}
}
package com.example.clientproject.data.socials;
import com.example.clientproject.data.shops.Shops;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
public interface SocialsRepo extends JpaRepository<Socials, Long> {
/**
* Search by stampBoardId
* @param shopId - the id of the Shop to search by
* @return - an optional containing the Socials found
*/
@Query("select s from Socials s where s.shop.shopId = ?1")
List<Socials> findByShopId(long shopId);
}
...@@ -6,6 +6,9 @@ import lombok.Data; ...@@ -6,6 +6,9 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
/** /**
...@@ -18,7 +21,7 @@ import java.util.Set; ...@@ -18,7 +21,7 @@ import java.util.Set;
@Entity @Entity
public class StampBoards { public class StampBoards {
@Id @Id
@GeneratedValue @GeneratedValue(strategy = GenerationType.IDENTITY)
private long stampBoardId; private long stampBoardId;
private int stampBoardSize; private int stampBoardSize;
private String stampBoardColour; private String stampBoardColour;
...@@ -26,5 +29,11 @@ public class StampBoards { ...@@ -26,5 +29,11 @@ public class StampBoards {
@OneToMany @OneToMany
@JoinColumn(name="Stamp_Board_Id") @JoinColumn(name="Stamp_Board_Id")
private Set<Rewards> rewards; private List<Rewards> rewards = new ArrayList<>();
public StampBoards(int aStampBoardId, int aBoardSize){
this.stampBoardId = aStampBoardId;
this.stampBoardSize = aBoardSize;
}
} }
...@@ -25,4 +25,5 @@ public interface StampBoardsRepo extends JpaRepository<StampBoards, Long> { ...@@ -25,4 +25,5 @@ public interface StampBoardsRepo extends JpaRepository<StampBoards, Long> {
*/ */
@Query("SELECT s from StampBoards s where s.stampBoardId = ?1") @Query("SELECT s from StampBoards s where s.stampBoardId = ?1")
Optional<StampBoards> findById(long id); Optional<StampBoards> findById(long id);
} }
...@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
import java.util.Optional;
/** /**
* JPA Repository for the "Tags" Entity * JPA Repository for the "Tags" Entity
...@@ -20,4 +21,7 @@ public interface TagsRepo extends JpaRepository<Tags, Long> { ...@@ -20,4 +21,7 @@ public interface TagsRepo extends JpaRepository<Tags, Long> {
@Query("select t.tagId from Tags t where t.tagId = (select max(t.tagId) from Tags t)") @Query("select t.tagId from Tags t where t.tagId = (select max(t.tagId) from Tags t)")
int findMostRecent(); int findMostRecent();
@Query("select t from Tags t where t.tagName = ?1")
Optional<Tags> findByTagName(String tagName);
} }
...@@ -19,4 +19,5 @@ public interface UserStampBoardsRepo extends JpaRepository<UserStampBoards, Long ...@@ -19,4 +19,5 @@ public interface UserStampBoardsRepo extends JpaRepository<UserStampBoards, Long
UserStampBoards save(UserStampBoards userStampBoards); UserStampBoards save(UserStampBoards userStampBoards);
} }
...@@ -3,7 +3,6 @@ package com.example.clientproject.data.users; ...@@ -3,7 +3,6 @@ package com.example.clientproject.data.users;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional; import java.util.Optional;
/** /**
......
package com.example.clientproject.service.Utils;
import com.example.clientproject.data.socials.Socials;
import org.springframework.stereotype.Component;
import java.net.URI;
import java.util.List;
import java.util.regex.Pattern;
@Component
public class LoadSocials {
public String getSocial(List<Socials> socialList, String socialPlatform){
for(Socials s:socialList){
if(s.getSocialPlatform().equalsIgnoreCase(socialPlatform)){
return s.getSocialName();
}
}return "ERROR";
}
public String removeHttps(String url) throws Exception{
URI uri = new URI(url);
//System.out.println(uri.getHost());
String host = uri.getHost();
return host;
}
/**
* Method for accessing the login page
* @param socialList, socialPlatform - Model object which contains all of a shops socials, and socialPatform is used to search/filter
* @return - retuns true/false based on whether the shop has a social media for that platform
*/
public boolean doesShopHaveSocialPlatform(List<Socials> socialList, String socialPlatform){
for(Socials s:socialList){
if(s.getSocialPlatform().equalsIgnoreCase(socialPlatform)){
return true;
}
}return false;
}
}
...@@ -20,14 +20,22 @@ public class ThymeMath { ...@@ -20,14 +20,22 @@ public class ThymeMath {
} }
return rewardLocs; return rewardLocs;
} }
public String getRewardTextFromId(List<Rewards> rewardsList, int position){ public String getRewardTextFromId(List<Rewards> rewardsList, int position){
for (Rewards r : rewardsList){ for (Rewards r : rewardsList){
if(r.getRewardStampLocation() == position){ if(r.getRewardStampLocation() == position){
return r.getRewardName(); return r.getRewardName();
} }
} }
return ""; return "";
} }
public String getRewardTextFromObject(Rewards reward){
return reward.getRewardName();
}
public int getRewardValueFromObject(Rewards reward){
return reward.getRewardStampLocation();
}
} }
package com.example.clientproject.service.searches; package com.example.clientproject.service.searches;
import com.example.clientproject.data.users.Users;
import com.example.clientproject.service.dtos.UsersDTO; import com.example.clientproject.service.dtos.UsersDTO;
import java.util.List; import java.util.List;
...@@ -9,4 +10,6 @@ public interface UsersSearch { ...@@ -9,4 +10,6 @@ public interface UsersSearch {
List<UsersDTO> findAll(); List<UsersDTO> findAll();
Optional<UsersDTO> findByEmail(String email); Optional<UsersDTO> findByEmail(String email);
Users save(Users user);
} }
...@@ -37,5 +37,10 @@ public class UsersSearchImpl implements UsersSearch { ...@@ -37,5 +37,10 @@ public class UsersSearchImpl implements UsersSearch {
return Optional.empty(); return Optional.empty();
} }
} }
@Override
public Users save(Users user) {
return usersRepo.save(user);
}
} }
...@@ -12,12 +12,12 @@ public class BusinessRegisterDTO { ...@@ -12,12 +12,12 @@ public class BusinessRegisterDTO {
String business_register_url; String business_register_url;
String business_register_name; String business_register_name;
String business_register_desc; String business_register_desc;
//String businessCategory; String businessCategory;
ArrayList<String> businessTags; ArrayList<String> businessTags;
//String instagram; String instagram;
//String facebook; String facebook;
//String twitter; String twitter;
//String tiktok; String tiktok;
int earnings; int earnings;
public BusinessRegisterDTO(BusinessRegisterForm brf){ public BusinessRegisterDTO(BusinessRegisterForm brf){
...@@ -25,12 +25,12 @@ public class BusinessRegisterDTO { ...@@ -25,12 +25,12 @@ public class BusinessRegisterDTO {
brf.getBusiness_register_url(), brf.getBusiness_register_url(),
brf.getBusiness_register_name(), brf.getBusiness_register_name(),
brf.getBusiness_register_desc(), brf.getBusiness_register_desc(),
//brf.getBusinessCategory(), brf.getBusinessCategory(),
brf.getBusinessTags(), brf.getBusinessTags(),
//brf.getInstagram(), brf.getInstagram(),
//brf.getFacebook(), brf.getFacebook(),
//brf.getTwitter(), brf.getTwitter(),
//brf.getTiktok(), brf.getTiktok(),
brf.getEarnings() brf.getEarnings()
); );
} }
......
...@@ -2,8 +2,12 @@ package com.example.clientproject.services; ...@@ -2,8 +2,12 @@ package com.example.clientproject.services;
import com.example.clientproject.data.categories.Categories; import com.example.clientproject.data.categories.Categories;
import com.example.clientproject.data.categories.CategoriesRepo; import com.example.clientproject.data.categories.CategoriesRepo;
import com.example.clientproject.data.rewards.Rewards;
import com.example.clientproject.data.rewards.RewardsRepo;
import com.example.clientproject.data.shops.Shops; import com.example.clientproject.data.shops.Shops;
import com.example.clientproject.data.shops.ShopsRepo; import com.example.clientproject.data.shops.ShopsRepo;
import com.example.clientproject.data.socials.Socials;
import com.example.clientproject.data.socials.SocialsRepo;
import com.example.clientproject.data.stampBoards.StampBoards; import com.example.clientproject.data.stampBoards.StampBoards;
import com.example.clientproject.data.stampBoards.StampBoardsRepo; import com.example.clientproject.data.stampBoards.StampBoardsRepo;
import com.example.clientproject.data.tags.Tags; import com.example.clientproject.data.tags.Tags;
...@@ -15,6 +19,7 @@ import org.springframework.jdbc.core.JdbcTemplate; ...@@ -15,6 +19,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Service @Service
...@@ -29,6 +34,9 @@ public class BusinessRegisterSaver { ...@@ -29,6 +34,9 @@ public class BusinessRegisterSaver {
@Autowired @Autowired
CategoriesRepo categoriesRepo; CategoriesRepo categoriesRepo;
@Autowired
SocialsRepo socialsRepo;
@Autowired @Autowired
TagsRepo tagsRepo; TagsRepo tagsRepo;
...@@ -38,10 +46,25 @@ public class BusinessRegisterSaver { ...@@ -38,10 +46,25 @@ public class BusinessRegisterSaver {
@Autowired @Autowired
LinkUserShop linkShop; LinkUserShop linkShop;
@Autowired
RewardsRepo rewardsRepo;
public void save(BusinessRegisterDTO business, long userId){ public void save(BusinessRegisterDTO business, long userId){
StampBoards stampBoard = stampBoards.findById(1L).get(); String query = "INSERT INTO Stamp_Boards (Stamp_Board_Size) VALUES (8)";
Categories categories = categoriesRepo.findById(1L).get(); jdbc.execute(query);
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," +
currentStampId + ")";
//System.out.println(rewardsQuery);
jdbc.execute(rewardsQuery);
StampBoards stampBoard = stampBoards.findAll().get(stampBoards.findAll().size()-1);
Categories category;
category = categoriesRepo.findByName(business.getBusinessCategory());
Shops shop = new Shops(business.getBusiness_register_name(), Shops shop = new Shops(business.getBusiness_register_name(),
business.getBusiness_register_url(), business.getBusiness_register_url(),
...@@ -51,14 +74,19 @@ public class BusinessRegisterSaver { ...@@ -51,14 +74,19 @@ public class BusinessRegisterSaver {
"UK United Kingdom", "UK United Kingdom",
false, false,
stampBoard, stampBoard,
categories); category);
//System.out.println(category.getCategoryId());
//System.out.println(shop.getStampBoard());
shopsRepo.save(shop); shopsRepo.save(shop);
List<Tags> tagsList = tagsRepo.findAll(); List<Tags> tagsList = tagsRepo.findAll();
linkShop.linkUserShop(shop.getShopId(), userId);
for(String t: business.getBusinessTags()){ for(String t: business.getBusinessTags()){
if(tagsList.contains(new Tags(t))){ if(tagsList.contains(new Tags(t))){
// Link shop to tag
continue; continue;
} }
//long id = 0; //long id = 0;
...@@ -66,14 +94,18 @@ public class BusinessRegisterSaver { ...@@ -66,14 +94,18 @@ public class BusinessRegisterSaver {
tagsRepo.save(tag); tagsRepo.save(tag);
String query = "INSERT INTO Shop_Tag_Links (Shop_Id, Tag_Id) VALUES ("+ shop.getShopId() + query = "INSERT INTO Shop_Tag_Links (Shop_Id, Tag_Id) VALUES ("+ shop.getShopId() +
","+tag.getTagId() + ")"; ","+tag.getTagId() + ")";
jdbc.execute(query); jdbc.execute(query);
} }
linkShop.linkUserShop(shop.getShopId(), userId); socialsRepo.save(new Socials(shop, "Facebook", business.getFacebook()));
socialsRepo.save(new Socials(shop, "Twitter", business.getTwitter()));
socialsRepo.save(new Socials(shop, "Instagram", business.getInstagram()));
socialsRepo.save(new Socials(shop, "TikTok", business.getTiktok()));
//System.out.println(shop.getShopId()); //System.out.println(shop.getShopId());
......
...@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
//This can be deleted, class "UserFavouriteTagSaver" is being used
@Service @Service
public class UserFavouriteSaver { public class UserFavouriteSaver {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment