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