Added new complete flag for quizz
This commit is contained in:
parent
c6fa363cd9
commit
225b5df774
@ -29,10 +29,14 @@ public class Quizz {
|
||||
@JoinColumn(name="owner")
|
||||
private User owner;
|
||||
|
||||
@Column(nullable=false)
|
||||
@Column(nullable=false)
|
||||
@ColumnDefault("false")
|
||||
private boolean isPublic;
|
||||
|
||||
@Column(nullable=false)
|
||||
@ColumnDefault("false")
|
||||
private boolean isComplete;
|
||||
|
||||
@Column(nullable=false)
|
||||
@ColumnDefault("0")
|
||||
private int questionCount;
|
||||
|
||||
@ -7,11 +7,14 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.lang.NonNull;
|
||||
|
||||
import com.bernard.misael.model.Quizz;
|
||||
import com.bernard.misael.model.User;
|
||||
|
||||
public interface QuizzRepository extends JpaRepository<Quizz,Long> {
|
||||
|
||||
public @NonNull Optional<Quizz> findById(@NonNull Long id);
|
||||
|
||||
public @NonNull Set<Quizz> findByIsPublicTrue();
|
||||
public @NonNull Set<Quizz> findByIsPublicTrueAndIsCompleteTrue();
|
||||
public @NonNull Set<Quizz> findByOwnerAndIsCompleteTrue(@NonNull User owner);
|
||||
public @NonNull Set<Quizz> findByOwnerAndIsCompleteFalse(@NonNull User owner);
|
||||
|
||||
}
|
||||
|
||||
@ -13,7 +13,8 @@ public interface QuizzManager {
|
||||
public JsonNode next(User user, long quizzId);
|
||||
|
||||
public boolean canAccessQuizz(User user, long quizzId);
|
||||
public List<Quizz> accessibleQuizz(User user);
|
||||
public List<Quizz> editableQuizz(User user);
|
||||
public List<Quizz> answerableQuizz(User user);
|
||||
|
||||
public boolean canEditQuizz(User user, long quizzId);
|
||||
|
||||
|
||||
@ -194,9 +194,9 @@ public class QuizzManagerImpl implements QuizzManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Quizz> accessibleQuizz(User user) {
|
||||
Set<Quizz> ownQuizz = user.getMyQuizzs();
|
||||
Set<Quizz> publicQuizz = qRepository.findByIsPublicTrue();
|
||||
public List<Quizz> answerableQuizz(User user) {
|
||||
Set<Quizz> ownQuizz = qRepository.findByOwnerAndIsCompleteTrue(user);
|
||||
Set<Quizz> publicQuizz = qRepository.findByIsPublicTrueAndIsCompleteTrue();
|
||||
publicQuizz.removeAll(ownQuizz);
|
||||
|
||||
return Stream.concat(
|
||||
@ -207,6 +207,14 @@ public class QuizzManagerImpl implements QuizzManager {
|
||||
).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Quizz> editableQuizz(User user) {
|
||||
Set<Quizz> ownQuizz = qRepository.findByOwnerAndIsCompleteFalse(user);
|
||||
return ownQuizz.stream()
|
||||
.sorted((q1,q2) -> q1.getName().compareTo(q2.getName()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(QuestionsController.class);
|
||||
@Override
|
||||
public boolean canEditQuizz(User user, long quizzId) {
|
||||
@ -228,6 +236,8 @@ public class QuizzManagerImpl implements QuizzManager {
|
||||
Optional<Quizz> oquizz = qRepository.findById(quizzId);
|
||||
if(!oquizz.isPresent())
|
||||
return Optional.of(errorNode("Could not find quizz with id "+quizzId));
|
||||
if(oquizz.get().isComplete())
|
||||
return Optional.of(errorNode("Quizz is complete, cannot edit, answers might have already been cast"));
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
|
||||
@ -54,7 +54,8 @@ public class QuestionsController {
|
||||
if (p!=null)
|
||||
u = ur.findByName(p.getName());
|
||||
if(u!=null) {
|
||||
model.addAttribute("quizz",qm.accessibleQuizz(u));
|
||||
model.addAttribute("answerableQuizz",qm.answerableQuizz(u));
|
||||
model.addAttribute("editableQuizz",qm.editableQuizz(u));
|
||||
}
|
||||
return "quizz.html";
|
||||
}
|
||||
|
||||
@ -0,0 +1 @@
|
||||
alter table quizz add column "is_complete" BOOLEAN NOT NULL DEFAULT FALSE;
|
||||
@ -7,9 +7,15 @@
|
||||
<body>
|
||||
<div th:replace="~{header}"/>
|
||||
<main>
|
||||
<h3>Quizz à répondre</h3>
|
||||
<ul>
|
||||
<li th:if="${#lists.isEmpty(quizz)}">Aucun quizz de disponible malheureusement :(</li>
|
||||
<li th:each="q : ${quizz}"><a th:href="@{/questions/form/{id}(id=${q.id})}">Quizz <span th:text="${q.name}"/></a></li>
|
||||
<li th:if="${#lists.isEmpty(answerableQuizz)}">Aucun quizz de disponible malheureusement :(</li>
|
||||
<li th:each="q : ${answerableQuizz}"><a th:href="@{/questions/form/{id}(id=${q.id})}">Quizz <span th:text="${q.name}"/></a></li>
|
||||
</ul>
|
||||
<h3>Quizz à éditer</h3>
|
||||
<ul>
|
||||
<li th:if="${#lists.isEmpty(editableQuizz)}">Aucun quizz de disponible malheureusement :(</li>
|
||||
<li th:each="q : ${editableQuizz}"><a th:href="@{/questions/quizz-edit/{id}(id=${q.id})}">Quizz <span th:text="${q.name}"/></a></li>
|
||||
</ul>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user