Skip to content

Commit

Permalink
searching games + side search
Browse files Browse the repository at this point in the history
  • Loading branch information
sergio-octavio committed Feb 17, 2023
1 parent dc51f88 commit b7789e6
Show file tree
Hide file tree
Showing 18 changed files with 225 additions and 748 deletions.
6 changes: 0 additions & 6 deletions backend/src/main/java/app/controller/IndexController.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,6 @@ public String showBooks(Model model) {
return "index";
}

@GetMapping("/search")
public String search(Model model) {

return "search";
}

@GetMapping("/checkout/{id}")
public String checkout(Model model, @PathVariable long id) {
return "checkout";
Expand Down
66 changes: 66 additions & 0 deletions backend/src/main/java/app/controller/SearchController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package app.controller;

import java.security.Principal;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

import app.model.Game;
import app.model.User;
import app.service.GameService;
import app.service.UserService;

@Controller
public class SearchController {

@Autowired
private UserService userService;

@Autowired
private GameService gameService;


User currentUser;

@ModelAttribute
public void addAttributes(Model model, HttpServletRequest request) {

Principal principal = request.getUserPrincipal();

if(principal != null) {
userService.findByMail(principal.getName()).ifPresent(u -> currentUser = u);
model.addAttribute("logged", true);
model.addAttribute("currentUser", currentUser);
model.addAttribute("emptyCart", currentUser.getCart().isEmpty());
model.addAttribute("admin", request.isUserInRole("ADMIN"));
} else {
model.addAttribute("logged", false);
}
}

@GetMapping("/search")
public String search(Model model, String category) {
List<Game> gamesFound = gameService.findByCategoryAndName("", category);
model.addAttribute("games", gamesFound);
model.addAttribute("lastSearch", "");
model.addAttribute("found", gamesFound.size() > 0);
return "search";
}

@PostMapping("/search")
public String search(Model model, String name, String category) {
List<Game> gamesFound = gameService.findByCategoryAndName(name, category);
model.addAttribute("games", gamesFound);
model.addAttribute("found", gamesFound.size() > 0);
model.addAttribute("lastSearch", name);
return "search";
}

}
7 changes: 7 additions & 0 deletions backend/src/main/java/app/repository/GameRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,17 @@
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import app.model.Game;

public interface GameRepository extends JpaRepository<Game, Long> {
List<Game> findByCategory(String category);

@Query("SELECT g FROM Game g WHERE LOWER(g.name) LIKE %:name% AND g.category = :category")
List<Game> findByCategoryAndName(String category, String name);

@Query("SELECT g FROM Game g WHERE LOWER(g.name) LIKE %:name%")
List<Game> findByName(String name);
}

8 changes: 8 additions & 0 deletions backend/src/main/java/app/service/GameService.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,12 @@ public Optional<Game> findById(long id) {
public void deleteById(long id) {
games.deleteById(id);
}

public List<Game> findByCategoryAndName(String name, String category) {
if (name == null )
name = "";
if (category == null || category.isEmpty())
return games.findByName(name);
return games.findByCategoryAndName(category, name);
}
}
36 changes: 36 additions & 0 deletions backend/src/main/resources/templates/SideSearchBlock.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<!-- Side Search -->
<div class="side-block">
<p>Search by Games:</p>

<form action="/search" method="post">
<div class="youplay-input">
<input type="text" name="name" placeholder="Search...">
</div>
<input type="hidden" name="_csrf" value="{{token}}" />
</form>
</div>
<!-- /Side Search -->

<!-- Side Categories -->
<div class="side-block">
<h4 class="block-title">Categories</h4>
<ul class="block-content">
<li><a href="/search?category=Action">Action</a>
</li>
<li><a href="/search?category=Adventure">Adventure</a>
</li>
<li><a href="/search?category=Casual">Casual</a>
</li>
<li><a href="/search?category=Indie">Indie</a>
</li>
<li><a href="/search?category=Racing">Racing</a>
</li>
<li><a href="/search?category=RPG">RPG</a>
</li>
<li><a href="/search?category=Simulation">Simulation</a>
</li>
<li><a href="/search?category=Strategy">Strategy</a>
</li>
</ul>
</div>
<!-- /Side Categories -->
2 changes: 1 addition & 1 deletion backend/src/main/resources/templates/UnregisteredH.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</a>
</li>
<li>
<a href="search.html">
<a href="/search">
<i class="fa fa-search"></i>
</a>
</li>
Expand Down
37 changes: 1 addition & 36 deletions backend/src/main/resources/templates/cart.html
Original file line number Diff line number Diff line change
Expand Up @@ -85,42 +85,7 @@ <h4><a href="/game/{{id}}">{{name}}</a></h4>
<!-- Right Side -->
<div class="col-md-3">

<!-- Side Search -->
<div class="side-block">
<p>Search by Games:</p>
<form action="search.html">
<div class="youplay-input">
<input type="text" name="search" placeholder="enter search term">
</div>
</form>
</div>
<!-- /Side Search -->

<!-- Side Categories -->
<div class="side-block">
<h4 class="block-title">Categories</h4>
<ul class="block-content">
<li><a href="#!">All</a>
</li>
<li><a href="#!">Action</a>
</li>
<li><a href="#!">Adventure</a>
</li>
<li><a href="#!">Casual</a>
</li>
<li><a href="#!">Indie</a>
</li>
<li><a href="#!">Racing</a>
</li>
<li><a href="#!">RPG</a>
</li>
<li><a href="#!">Simulation</a>
</li>
<li><a href="#!">Strategy</a>
</li>
</ul>
</div>
<!-- /Side Categories -->
{{>SideSearchBlock}}

<!-- Side Popular News -->
<div class="side-block">
Expand Down
37 changes: 1 addition & 36 deletions backend/src/main/resources/templates/checkout.html
Original file line number Diff line number Diff line change
Expand Up @@ -432,42 +432,7 @@ <h2>Payment Type</h2>
<!-- Right Side -->
<div class="col-md-3">

<!-- Side Search -->
<div class="side-block">
<p>Search by Games:</p>
<form action="search.html">
<div class="youplay-input">
<input type="text" name="search" placeholder="enter search term">
</div>
</form>
</div>
<!-- /Side Search -->

<!-- Side Categories -->
<div class="side-block">
<h4 class="block-title">Categories</h4>
<ul class="block-content">
<li><a href="#!">All</a>
</li>
<li><a href="#!">Action</a>
</li>
<li><a href="#!">Adventure</a>
</li>
<li><a href="#!">Casual</a>
</li>
<li><a href="#!">Indie</a>
</li>
<li><a href="#!">Racing</a>
</li>
<li><a href="#!">RPG</a>
</li>
<li><a href="#!">Simulation</a>
</li>
<li><a href="#!">Strategy</a>
</li>
</ul>
</div>
<!-- /Side Categories -->
{{>SideSearchBlock}}

<!-- Side Popular News -->
<div class="side-block">
Expand Down
37 changes: 1 addition & 36 deletions backend/src/main/resources/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -590,42 +590,7 @@ <h4>Half-Life 3</h4>
<!-- Right Side -->
<div class="col-md-3">

<!-- Side Search -->
<div class="side-block">
<p>Search by Games:</p>
<form action="search.html">
<div class="youplay-input">
<input type="text" name="search" placeholder="enter search term">
</div>
</form>
</div>
<!-- /Side Search -->

<!-- Side Categories -->
<div class="side-block">
<h4 class="block-title">Categories</h4>
<ul class="block-content">
<li><a href="#!">All</a>
</li>
<li><a href="#!">Action</a>
</li>
<li><a href="#!">Adventure</a>
</li>
<li><a href="#!">Casual</a>
</li>
<li><a href="#!">Indie</a>
</li>
<li><a href="#!">Racing</a>
</li>
<li><a href="#!">RPG</a>
</li>
<li><a href="#!">Simulation</a>
</li>
<li><a href="#!">Strategy</a>
</li>
</ul>
</div>
<!-- /Side Categories -->
{{>SideSearchBlock}}

<!-- Side Popular News -->
<div class="side-block">
Expand Down
37 changes: 1 addition & 36 deletions backend/src/main/resources/templates/product-info.html
Original file line number Diff line number Diff line change
Expand Up @@ -259,42 +259,7 @@ <h2>Add a Review</h2>
<!-- Right Side -->
<div class="col-md-3">

<!-- Side Search -->
<div class="side-block">
<p>Search by Games:</p>
<form action="search.html">
<div class="youplay-input">
<input type="text" name="search" placeholder="enter search term">
</div>
</form>
</div>
<!-- /Side Search -->

<!-- Side Categories -->
<div class="side-block">
<h4 class="block-title">Categories</h4>
<ul class="block-content">
<li><a href="#!">All</a>
</li>
<li><a href="#!">Action</a>
</li>
<li><a href="#!">Adventure</a>
</li>
<li><a href="#!">Casual</a>
</li>
<li><a href="#!">Indie</a>
</li>
<li><a href="#!">Racing</a>
</li>
<li><a href="#!">RPG</a>
</li>
<li><a href="#!">Simulation</a>
</li>
<li><a href="#!">Strategy</a>
</li>
</ul>
</div>
<!-- /Side Categories -->
{{>SideSearchBlock}}

<!-- Side Popular News -->
<div class="side-block">
Expand Down
Loading

0 comments on commit b7789e6

Please sign in to comment.