package org.dicadeveloper.weplantaforest.admin.testSupport; import java.math.BigDecimal; import java.util.Date; import java.util.List; import javax.transaction.Transactional; import org.dicadeveloper.weplantaforest.admin.cart.Cart; import org.dicadeveloper.weplantaforest.admin.cart.CartItem; import org.dicadeveloper.weplantaforest.admin.cart.CartRepository; import org.dicadeveloper.weplantaforest.admin.cart.CartState; import org.dicadeveloper.weplantaforest.admin.project.Price; import org.dicadeveloper.weplantaforest.admin.project.Price.ScontoType; import org.dicadeveloper.weplantaforest.admin.project.PriceRepository; import org.dicadeveloper.weplantaforest.admin.project.Project; import org.dicadeveloper.weplantaforest.admin.project.ProjectArticle; import org.dicadeveloper.weplantaforest.admin.project.ProjectArticleRepository; import org.dicadeveloper.weplantaforest.admin.project.ProjectImage; import org.dicadeveloper.weplantaforest.admin.project.ProjectImageRepository; import org.dicadeveloper.weplantaforest.admin.project.ProjectRepository; import org.dicadeveloper.weplantaforest.admin.team.Team; import org.dicadeveloper.weplantaforest.admin.team.TeamRepository; import org.dicadeveloper.weplantaforest.admin.tree.Tree; import org.dicadeveloper.weplantaforest.admin.tree.TreeRepository; import org.dicadeveloper.weplantaforest.admin.treeType.TreeType; import org.dicadeveloper.weplantaforest.admin.treeType.TreeTypeRepository; import org.dicadeveloper.weplantaforest.admin.user.User; import org.dicadeveloper.weplantaforest.admin.user.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository("dbInjecter") public class DbInjecter { @Autowired private ProjectRepository _projectRepository; @Autowired private UserRepository _userRepository; @Autowired private TeamRepository _teamRepository; @Autowired private TreeTypeRepository _treeTypeRepository; @Autowired private TreeRepository _treeRepository; @Autowired private ProjectArticleRepository _projectArticleRepository; @Autowired private ProjectImageRepository _projectImageRepository; @Autowired private PriceRepository _priceRepository; @Autowired private CartRepository _cartRepository; public Project injectProject(String pName, User projectOwner, String desc, boolean shopActive, float latitude, float longitude) { Project project = new Project(); String projectName = pName; project.setName(projectName); project.setManager(projectOwner); project.setDescription(desc); project.setImageFileName(projectName); project.setShopActive(shopActive); project.setLatitude(latitude); project.setLongitude(longitude); project = _projectRepository.save(project); return project; } public User injectUser(String userName) { User userDto = new User(); userDto.setName(userName); return _userRepository.save(userDto); } public Team injectTeam(String tName, String admin) { Team team = new Team(); team.setName(tName); team.setAdmin(_userRepository.findByName(admin)); team = _teamRepository.save(team); addTeamToUser(tName, admin); return team; } private void addTeamToUser(String tName, String userName) { User user = _userRepository.findByName(userName); user.setTeam(_teamRepository.findByName(tName)); _userRepository.save(user); } public TreeType injectTreeType(String name, String desc, double co2) { TreeType treeTypeDto = new TreeType(); treeTypeDto.setName(name); treeTypeDto.setDescription(desc); treeTypeDto.setAnnualCo2SavingInTons(co2); treeTypeDto = _treeTypeRepository.save(treeTypeDto); return treeTypeDto; } public Long injectTree(String treeType, String owner, int amount, long timeOfPlanting) { Tree tree = new Tree(); tree.setLatitude(0); tree.setLongitude(0); tree.setAmount(amount); tree.setTreeType(_treeTypeRepository.findByName(treeType)); tree.setPlantedOn(new Date(timeOfPlanting).getTime()); tree.setSubmittedOn(new Date(timeOfPlanting).getTime()); tree.setOwner(_userRepository.findByName(owner)); tree = _treeRepository.save(tree); return tree.getId(); } public Long injectTreeToProject(TreeType treeType, User owner, int amount, long timeOfPlanting, Project project) { Tree tree = new Tree(); tree.setLatitude(0); tree.setLongitude(0); tree.setAmount(amount); tree.setTreeType(treeType); tree.setPlantedOn(new Date(timeOfPlanting).getTime()); tree.setSubmittedOn(new Date(timeOfPlanting).getTime()); tree.setOwner(owner); tree.setProjectArticle(_projectArticleRepository.findByProjectAndTreeType(project, treeType)); tree = _treeRepository.save(tree); return tree.getId(); } public ProjectArticle injectProjectArticle(TreeType treeType, Project project, double priceAmount) { ProjectArticle plantArticle = new ProjectArticle(); Price price = new Price(); price.setAmount(new BigDecimal(priceAmount)); price.setScontoType(ScontoType.NONE); _priceRepository.save(price); plantArticle.setTreeType(treeType); plantArticle.setProject(project); plantArticle.setPrice(price); plantArticle = _projectArticleRepository.save(plantArticle); return plantArticle; } public void injectProjectArticle(TreeType treeType, Project project, long amount, double priceAmount, double priceMarge) { ProjectArticle plantArticle = new ProjectArticle(); Price price = new Price(); price.setAmount(new BigDecimal(priceAmount)); price.setScontoType(ScontoType.NONE); price.setMarge(new BigDecimal(priceMarge)); _priceRepository.save(price); plantArticle.setTreeType(treeType); plantArticle.setProject(project); plantArticle.setPrice(price); plantArticle.setAmount(amount); _projectArticleRepository.save(plantArticle); } public void injectProjectImage(String title, String description, Long projectId, Long date) { ProjectImage image = new ProjectImage(); image.setDate(date); image.setDescription(description); image.setProject(_projectRepository.findOne(projectId)); image.setTitle(title); _projectImageRepository.save(image); } public void injectCart(String buyer, List<Long> treeIds) { Cart cart = new Cart(); cart.setBuyer(_userRepository.findByName(buyer)); List<Tree> trees = _treeRepository.findTreesByIdIn(treeIds); for (Tree tree : trees) { CartItem cartItem = new CartItem(); cartItem.setBasePricePerPiece(new BigDecimal(1.0)); cartItem.setTotalPrice(new BigDecimal(1.0)); cartItem.setTree(tree); cart.addCartItem(cartItem); } _cartRepository.save(cart); } @Transactional public Long injectCart(User buyer, Long treeId) { Cart cart = new Cart(); cart.setBuyer(buyer); Tree tree = _treeRepository.findOne(treeId); CartItem cartItem = new CartItem(); cartItem.setBasePricePerPiece(new BigDecimal(1.0)); cartItem.setTotalPrice(new BigDecimal(1.0)); cartItem.setTree(tree); cart.addCartItem(cartItem); cart.setCartState(CartState.GENERATED); cart = _cartRepository.save(cart); return cart.getId(); } }