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