Fixed public quizz not appearing in quizz list
This commit is contained in:
parent
be0ec073a3
commit
8ae7457016
@ -9,7 +9,7 @@ services:
|
||||
- misanetwork
|
||||
|
||||
misael:
|
||||
image: 'misael:latest'
|
||||
image: 'mysaa/misael:latest'
|
||||
build: .
|
||||
environment:
|
||||
- 'MISAEL_DATABASE=jdbc:postgresql://postgres:5432/misael'
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.bernard.misael.repository;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.lang.NonNull;
|
||||
@ -11,4 +12,6 @@ public interface QuizzRepository extends JpaRepository<Quizz,Long> {
|
||||
|
||||
public @NonNull Optional<Quizz> findById(@NonNull Long id);
|
||||
|
||||
public @NonNull Set<Quizz> findByIsPublicTrue();
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.bernard.misael.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.bernard.misael.model.Quizz;
|
||||
import com.bernard.misael.model.User;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
|
||||
@ -8,4 +11,7 @@ public interface QuizzManager {
|
||||
public JsonNode answer(User user, long quizzId,JsonNode data);
|
||||
public JsonNode next(User user, long quizzId);
|
||||
|
||||
public boolean canAccessQuizz(User user, long quizzId);
|
||||
public List<Quizz> accessibleQuizz(User user);
|
||||
|
||||
}
|
||||
@ -1,6 +1,10 @@
|
||||
package com.bernard.misael.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -22,6 +26,8 @@ import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
|
||||
@Service
|
||||
public class QuizzManagerImpl implements QuizzManager {
|
||||
|
||||
@ -168,4 +174,28 @@ public class QuizzManagerImpl implements QuizzManager {
|
||||
return out;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canAccessQuizz(User user, long quizzId) {
|
||||
try{
|
||||
Quizz quizz = qRepository.getReferenceById(quizzId);
|
||||
return quizz.isPublic() || quizz.getOwner().equals(user);
|
||||
} catch (EntityNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Quizz> accessibleQuizz(User user) {
|
||||
Set<Quizz> ownQuizz = user.getMyQuizzs();
|
||||
Set<Quizz> publicQuizz = qRepository.findByIsPublicTrue();
|
||||
publicQuizz.removeAll(ownQuizz);
|
||||
|
||||
return Stream.concat(
|
||||
ownQuizz.stream()
|
||||
.sorted((q1,q2) -> q1.getName().compareTo(q2.getName())),
|
||||
publicQuizz.stream()
|
||||
.sorted((q1,q2) -> q1.getName().compareTo(q2.getName()))
|
||||
).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -73,9 +73,9 @@ public class AuthController {
|
||||
@PostMapping("/adduser")
|
||||
@Secured("ADD_USERS")
|
||||
public String registration(@Valid @ModelAttribute("newuser") UserDto userDto,
|
||||
BindingResult result,
|
||||
Model model,
|
||||
Principal p){
|
||||
BindingResult result,
|
||||
Model model,
|
||||
Principal p){
|
||||
User existingUser = userService.findUserByName(userDto.getName());
|
||||
|
||||
if(existingUser != null){
|
||||
|
||||
@ -46,7 +46,7 @@ public class QuestionsController {
|
||||
if (p!=null)
|
||||
u = ur.findByName(p.getName());
|
||||
if(u!=null) {
|
||||
model.addAttribute("quizz",u.getMyQuizzs());
|
||||
model.addAttribute("quizz",qm.accessibleQuizz(u));
|
||||
}
|
||||
return "quizz.html";
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user