Skip to content
Snippets Groups Projects
Commit b0d932b2 authored by uhensler's avatar uhensler
Browse files

OO-5253: Display done participations before resetting survey

parent ba10513f
No related branches found
No related tags found
No related merge requests found
Showing
with 74 additions and 104 deletions
......@@ -30,6 +30,7 @@ import org.olat.modules.forms.EvaluationFormParticipation;
import org.olat.modules.forms.EvaluationFormSession;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.EvaluationFormSurveyIdentifier;
import org.olat.modules.forms.SessionFilter;
import org.olat.modules.forms.model.xml.Form;
import org.olat.repository.RepositoryEntry;
......@@ -69,8 +70,8 @@ public interface SurveyManager {
public void onExecutionFinished(SurveyCourseNode courseNode, UserCourseEnvironment userCourseEnv);
public long getCountOfSessions(EvaluationFormSurvey survey);
public Long getSessionsCount(SessionFilter filter);
public void deleteAllData(EvaluationFormSurvey survey, SurveyCourseNode courseNode, UserCourseEnvironment userCourseEnv);
}
......@@ -43,6 +43,7 @@ import org.olat.modules.forms.EvaluationFormParticipationIdentifier;
import org.olat.modules.forms.EvaluationFormSession;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.EvaluationFormSurveyIdentifier;
import org.olat.modules.forms.SessionFilter;
import org.olat.modules.forms.model.xml.Form;
import org.olat.repository.RepositoryEntry;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -176,8 +177,8 @@ public class SurveyManagerImpl implements SurveyManager {
}
@Override
public long getCountOfSessions(EvaluationFormSurvey survey) {
return evaluationFormManager.getCountOfSessions(survey);
public Long getSessionsCount(SessionFilter filter) {
return evaluationFormManager.loadSessionsCount(filter);
}
@Override
......
......@@ -40,11 +40,13 @@ public class SurveyDeleteDataConfirmationController extends FormBasicController
private MultipleSelectionElement confirmationEl;
private final long numberOfSessions;
private final Long allSessions;
private final Long doneSessions;
public SurveyDeleteDataConfirmationController(UserRequest ureq, WindowControl wControl, long numberOfSessions) {
public SurveyDeleteDataConfirmationController(UserRequest ureq, WindowControl wControl, Long allSessions, Long doneSessions) {
super(ureq, wControl, "delete_data_confirmation");
this.numberOfSessions = numberOfSessions;
this.allSessions = allSessions;
this.doneSessions = doneSessions;
initForm(ureq);
}
......@@ -54,7 +56,8 @@ public class SurveyDeleteDataConfirmationController extends FormBasicController
formLayout.add("confirm", confirmCont);
confirmCont.setRootForm(mainForm);
flc.contextPut("numSessions", String.valueOf(numberOfSessions));
String message = translate("run.command.delete.data.all.message", new String[] {String.valueOf(allSessions), String.valueOf(doneSessions)} );
flc.contextPut("message", message);
String[] conformationValues = new String[] { translate("run.command.delete.data.all.check") };
confirmationEl = uifactory.addCheckboxesHorizontal("confirm.delete", "", confirmCont, confirmationKeys, conformationValues);
......
......@@ -42,6 +42,7 @@ import org.olat.modules.forms.EvaluationFormParticipation;
import org.olat.modules.forms.EvaluationFormSession;
import org.olat.modules.forms.EvaluationFormSurvey;
import org.olat.modules.forms.EvaluationFormSurveyIdentifier;
import org.olat.modules.forms.SessionFilterFactory;
import org.olat.modules.forms.ui.EvaluationFormExecutionController;
import org.olat.modules.forms.ui.ProgressEvent;
import org.olat.repository.RepositoryEntry;
......@@ -180,8 +181,9 @@ public class SurveyRunController extends BasicController {
}
private void doConfirmDeleteAllData(UserRequest ureq) {
long countOfSessions = surveyManager.getCountOfSessions(survey);
deleteDataConfirmationCtrl = new SurveyDeleteDataConfirmationController(ureq, getWindowControl(), countOfSessions);
Long allSessions = surveyManager.getSessionsCount(SessionFilterFactory.create(survey));
Long doneSessions = surveyManager.getSessionsCount(SessionFilterFactory.createSelectDone(survey));
deleteDataConfirmationCtrl = new SurveyDeleteDataConfirmationController(ureq, getWindowControl(), allSessions, doneSessions);
listenTo(deleteDataConfirmationCtrl);
cmc = new CloseableModalController(getWindowControl(), translate("close"),
deleteDataConfirmationCtrl.getInitialComponent(), true, translate("run.command.delete.data.all.title"), true);
......
<div class="o_error">
$r.translate("run.command.delete.data.all.message", $numSessions)
$message
</div>
$r.render("confirm")
\ No newline at end of file
......@@ -31,7 +31,7 @@ run.command.delete.data.all=Umfrage zur\u00fcksetzen
run.command.delete.data.all.confirmation.error=Best\u00e4tigen Sie bitte das L\u00f6schen.
run.command.delete.data.all.button=L\u00f6schen
run.command.delete.data.all.check=Alle Antworten l\u00f6schen
run.command.delete.data.all.message=Wollen Sie wirklich alle Antworten l\u00f6schen? Es haben bereits {0} Benutzer/innen an dieser Umfrage teilgenommen. Die Antworten k\u00f6nnen nicht wieder hergestellt werden!
run.command.delete.data.all.message=Wollen Sie wirklich alle Antworten l\u00f6schen? Die Umfrage wurde bereits von {0} Benutzer/innen gestartet und von {1} Benutzer/innen abgeschlossen. Die Antworten k\u00f6nnen nicht wieder hergestellt werden!
run.command.delete.data.all.title=Alle Antworten l\u00f6schen
run.participation.done.message=Sie haben den Fragebogen bereits ausgef\u00fcllt. Vielen Dank f\u00fcr Ihre Teilnahme.
run.participation.done.title=Fragebogen ausgef\u00fcllt
......
......@@ -31,7 +31,7 @@ run.command.delete.data.all=Reset survey
run.command.delete.data.all.confirmation.error=Please confirm the deletion of the responses.
run.command.delete.data.all.button=Delete
run.command.delete.data.all.check=Delete all responses
run.command.delete.data.all.message=Do you really want to delete all responses. Already {0} users participated in this survey. It is not possible to restore the responses.
run.command.delete.data.all.message=Do you really want to delete all responses. The survey has already been started by {0} users and completed by {1} users. It is not possible to restore the responses.
run.command.delete.data.all.title=Delete all responses
run.participation.done.message=You have already finished this survey. Thank you for your participation.
run.participation.done.title=Survey finished
......
#Thu Oct 08 13:56:14 CEST 2020
condition.accessibility.title=Acc\u00E8s
condition.accessibility.title=Acc\u00e8s
course.node.link.text=Questionnaire
edit.choose=Choisir, cr\u00E9er ou importer
edit.choose=Choisir, cr\u00e9er ou importer
edit.choose.evaluation.form=Choisir un questionnaire
edit.edit=Editer
edit.evaluation.form=Questionnaire
edit.evaluation.form.link={0}
edit.evaluation.form.not.choosen=Pas de questionnaire s\u00E9lectionner
edit.evaluation.form.not.choosen=Pas de questionnaire s\u00e9lectionner
edit.execution=Participation par
edit.execution.by.coach=Coaches
edit.execution.by.guest=Invit\u00E9s
edit.execution.by.owner=Propri\u00E9taires
edit.execution.by.guest=Invit\u00e9s
edit.execution.by.owner=Propri\u00e9taires
edit.execution.by.participant=Participants
edit.preview=Aper\u00E7u
edit.preview=Aper\u00e7u
edit.replace=Remplacer
edit.report=R\u00E9sultats visible pour
edit.report=R\u00e9sultats visible pour
edit.report.for.coach=Coaches
edit.report.for.guest=Invit\u00E9s
edit.report.for.owner=Propri\u00E9taires
edit.report.for.guest=Invit\u00e9s
edit.report.for.owner=Propri\u00e9taires
edit.report.for.participant=Participants
edit.title=Questionnaire
error.repo.entry.missing=Le questionnaire que vous voulez afficher \u00E0 \u00E9t\u00E9 effac\u00E9 entre-temps des ressources didactiques.
error.repo.entry.not.replaceable=Le questionnaire ne peut plus \u00EAtre remplac\u00E9.
error.repo.no.key.long=Pour "{0}", vous devez s\u00E9lectionner un questionnaire dans le tab "Questionnaire" dans la section configuration.
error.repo.no.key.short=Pas de questionnaire s\u00E9lectionn\u00E9.
error.repo.entry.missing=Le questionnaire que vous voulez afficher \u00e0 \u00e9t\u00e9 effac\u00e9 entre-temps des ressources didactiques.
error.repo.entry.not.replaceable=Le questionnaire ne peut plus \u00eatre remplac\u00e9.
error.repo.no.key.long=Pour "{0}", vous devez s\u00e9lectionner un questionnaire dans le tab "Questionnaire" dans la section configuration.
error.repo.no.key.short=Pas de questionnaire s\u00e9lectionn\u00e9.
figure.course=Cours
figure.course.node=\u00C9lement de cours
figure.course.node=\u00c9lement de cours
fully.assessed.trigger.status.done=Questionnaire soumis
pane.tab.accessibility=Acc\u00E8s
pane.tab.accessibility=Acc\u00e8s
pane.tab.config=Questionnaire
report.noaccess=Vous n'avez pas acc\u00E8s aux statistiques de ce questionnaire. Soit vous n'avez pas les autorisations requises, soit vous n'avez pas termin\u00E9 de remplir le questionnaire.
run.command.delete.data.all=R\u00E9initialiser le questionnaire
report.noaccess=Vous n'avez pas acc\u00e8s aux statistiques de ce questionnaire. Soit vous n'avez pas les autorisations requises, soit vous n'avez pas termin\u00e9 de remplir le questionnaire.
run.command.delete.data.all=R\u00e9initialiser le questionnaire
run.command.delete.data.all.button=Effacer
run.command.delete.data.all.check=Effacer toutes les r\u00E9ponses
run.command.delete.data.all.confirmation.error=Veuillez confirmer l'effacement de toutes les r\u00E9ponses.
run.command.delete.data.all.message=Voulez-vous vraiment effacer toutes les r\u00E9ponses de ce questionnaire? {0} utilisateurs l'ont d\u00E9j\u00E0 rempli. Il ne sera pas possible de restaurer les r\u00E9ponses effac\u00E9es.
run.command.delete.data.all.title=Effacer toutes les r\u00E9ponses
run.no.survey.message=Le questionnaire n'est pas pr\u00EAt \u00E0 \u00EAtre utilis\u00E9.
run.no.survey.title=Le questionnaire n'est pas pr\u00EAt.
run.command.delete.data.all.check=Effacer toutes les r\u00e9ponses
run.command.delete.data.all.confirmation.error=Veuillez confirmer l'effacement de toutes les r\u00e9ponses.
run.command.delete.data.all.title=Effacer toutes les r\u00e9ponses
run.no.survey.message=Le questionnaire n'est pas pr\u00eat \u00e0 \u00eatre utilis\u00e9.
run.no.survey.title=Le questionnaire n'est pas pr\u00eat.
run.noaccess.message=Cette partie du cours ne vous est pas accessible.
run.noaccess.title=Acc\u00E8s refus\u00E9
run.participation.done.message=Vous avez d\u00E9j\u00E0 rempli ce questionnaire. Merci de votre participation.
run.participation.done.title=Questionnaire termin\u00E9
run.reset=R\u00E9initialiser
run.noaccess.title=Acc\u00e8s refus\u00e9
run.participation.done.message=Vous avez d\u00e9j\u00e0 rempli ce questionnaire. Merci de votre participation.
run.participation.done.title=Questionnaire termin\u00e9
run.reset=R\u00e9initialiser
......@@ -19,8 +19,8 @@ edit.report.for.guest=Ospiti
edit.report.for.owner=Proprietari
edit.report.for.participant=Partecipanti
edit.title=Indagine
error.repo.entry.missing=Questa indagine \u00E8 stata nel frattempo cancellata all'interno della cartella di memorizzazione delle risorse di apprendimento.
error.repo.entry.not.replaceable=Il questionario non pu\u00F2 pi\u00F9 essere sostituito.
error.repo.entry.missing=Questa indagine \u00e8 stata nel frattempo cancellata all'interno della cartella di memorizzazione delle risorse di apprendimento.
error.repo.entry.not.replaceable=Il questionario non pu\u00f2 pi\u00f9 essere sostituito.
error.repo.no.key.long=Per "{0}" devi selezionare un questionario nella scheda " Indagine" all'interno della sezione di configurazione.
error.repo.no.key.short=Nessun questionario scelto.
fully.assessed.trigger.status.done=Indagine terminata
......@@ -30,12 +30,11 @@ run.command.delete.data.all=Resettare indagine
run.command.delete.data.all.button=Cancellare
run.command.delete.data.all.check=Cancellare tutte le risposte
run.command.delete.data.all.confirmation.error=Si prega di confermare la cancellazione delle risposte.
run.command.delete.data.all.message=Vuole davvero cancellare tutte le risposte? Gi\u00E0 {0} utenti hanno partecipato a questa indagine. Non \u00E8 possibile ripristinare le risposte.
run.command.delete.data.all.title=Cancellare tutte le risposte
run.no.survey.message=Questa indagine non \u00E8 disponibile per la partecipazione.
run.no.survey.message=Questa indagine non \u00e8 disponibile per la partecipazione.
run.no.survey.title=Indagine non pronta
run.noaccess.message=Questa parte del corso non \u00E8 accessibile per lei.
run.noaccess.message=Questa parte del corso non \u00e8 accessibile per lei.
run.noaccess.title=Nessuno accesso
run.participation.done.message=Lei ha gi\u00E0 terminato questo sondaggio. Grazie per la sua partecipazione.
run.participation.done.message=Lei ha gi\u00e0 terminato questo sondaggio. Grazie per la sua partecipazione.
run.participation.done.title=Indagine terminata
run.reset=Resettare
#Fri Sep 25 19:50:24 CEST 2020
course.node.link.text=Pesquisa
edit.choose=Escolha, crie ou importe
edit.choose.evaluation.form=Escolha o question\u00E1rio
edit.choose.evaluation.form=Escolha o question\u00e1rio
edit.edit=Editar
edit.evaluation.form=Question\u00E1rio
edit.evaluation.form=Question\u00e1rio
edit.evaluation.form.link={0}
edit.evaluation.form.not.choosen=Nenhum question\u00E1rio escolhido
edit.execution=Participa\u00E7\u00E3o por
edit.evaluation.form.not.choosen=Nenhum question\u00e1rio escolhido
edit.execution=Participa\u00e7\u00e3o por
edit.execution.by.coach=Treinadores
edit.execution.by.guest=Convidados
edit.execution.by.owner=Propriet\u00E1rios
edit.execution.by.owner=Propriet\u00e1rios
edit.execution.by.participant=Participantes
edit.preview=Visualizar
edit.replace=Substituir
edit.report=Resultados vis\u00EDveis para
edit.report=Resultados vis\u00edveis para
edit.report.for.coach=Treinadores
edit.report.for.guest=Convidados
edit.report.for.owner=Propriet\u00E1rios
edit.report.for.owner=Propriet\u00e1rios
edit.report.for.participant=Participantes
edit.title=Pesquisa
error.repo.entry.missing=Esta pesquisa foi apagada enquanto isso dentro da pasta de armazenamento de recursos did\u00E1ticos.
error.repo.entry.not.replaceable=O question\u00E1rio n\u00E3o pode mais ser substitu\u00EDdo.
error.repo.no.key.long=Para "{0}" voc\u00EA tem que selecionar um question\u00E1rio na aba "Pesquisa" dentro da se\u00E7\u00E3o de configura\u00E7\u00E3o.
error.repo.no.key.short=Nenhum question\u00E1rio escolhido.
error.repo.entry.missing=Esta pesquisa foi apagada enquanto isso dentro da pasta de armazenamento de recursos did\u00e1ticos.
error.repo.entry.not.replaceable=O question\u00e1rio n\u00e3o pode mais ser substitu\u00eddo.
error.repo.no.key.long=Para "{0}" voc\u00ea tem que selecionar um question\u00e1rio na aba "Pesquisa" dentro da se\u00e7\u00e3o de configura\u00e7\u00e3o.
error.repo.no.key.short=Nenhum question\u00e1rio escolhido.
figure.course=Curso
figure.course.node=Elemento do Curso
fully.assessed.trigger.status.done=Pesquisa conclu\u00EDda
fully.assessed.trigger.status.done=Pesquisa conclu\u00edda
pane.tab.config=Pesquisa
report.noaccess=Voc\u00EA n\u00E3o tem acesso \u00E0s estat\u00EDsticas desta pesquisa. Voc\u00EA n\u00E3o tem os direitos necess\u00E1rios ou n\u00E3o terminou sua participa\u00E7\u00E3o.
report.noaccess=Voc\u00ea n\u00e3o tem acesso \u00e0s estat\u00edsticas desta pesquisa. Voc\u00ea n\u00e3o tem os direitos necess\u00e1rios ou n\u00e3o terminou sua participa\u00e7\u00e3o.
run.command.delete.data.all=Redefinir pesquisa
run.command.delete.data.all.button=Excluir
run.command.delete.data.all.check=Excluir todas as respostas
run.command.delete.data.all.confirmation.error=Por favor, confirme a exclus\u00E3o das respostas.
run.command.delete.data.all.message=Voc\u00EA realmente deseja excluir todas as respostas? {0} usu\u00E1rios j\u00E1 participaram desta pesquisa. N\u00E3o \u00E9 poss\u00EDvel restaurar as respostas.
run.command.delete.data.all.confirmation.error=Por favor, confirme a exclus\u00e3o das respostas.
run.command.delete.data.all.title=Excluir todas as respostas
run.no.survey.message=A pesquisa n\u00E3o est\u00E1 pronta para participar.
run.no.survey.title=Pesquisa n\u00E3o est\u00E1 pronta
run.noaccess.message=Esta parte do curso n\u00E3o est\u00E1 acess\u00EDvel para voc\u00EA.
run.no.survey.message=A pesquisa n\u00e3o est\u00e1 pronta para participar.
run.no.survey.title=Pesquisa n\u00e3o est\u00e1 pronta
run.noaccess.message=Esta parte do curso n\u00e3o est\u00e1 acess\u00edvel para voc\u00ea.
run.noaccess.title=Sem acesso
run.participation.done.message=Voc\u00EA j\u00E1 terminou esta pesquisa. Obrigado pela sua participa\u00E7\u00E3o.
run.participation.done.title=Pesquisa conclu\u00EDda
run.participation.done.message=Voc\u00ea j\u00e1 terminou esta pesquisa. Obrigado pela sua participa\u00e7\u00e3o.
run.participation.done.title=Pesquisa conclu\u00edda
run.reset=Redefinir
......@@ -176,8 +176,6 @@ public interface EvaluationFormManager {
*/
public EvaluationFormSession reopenSession(EvaluationFormSession session);
public long getCountOfSessions(EvaluationFormSurveyRef surveyRef);
public List<EvaluationFormResponse> getResponses(List<String> responseIdentifiers, SessionFilter filter, Limit limit);
public EvaluationFormResponse createStringResponse(String responseIdentifier, EvaluationFormSession session,
......
......@@ -51,6 +51,10 @@ public class SessionFilterFactory {
EvaluationFormSessionStatus status) {
return new SurveysFilter(surveyIdentitfier, status);
}
public static SessionFilter create(EvaluationFormSurveyRef survey) {
return new SurveysFilter(Collections.singletonList(survey));
}
public static SessionFilter createSelectDone(EvaluationFormSurveyRef survey) {
return createSelectDone(Collections.singletonList(survey));
......
......@@ -361,11 +361,6 @@ public class EvaluationFormManagerImpl implements EvaluationFormManager {
return finishedSesssion;
}
@Override
public long getCountOfSessions(EvaluationFormSurveyRef surveyRef) {
return evaluationFormSessionDao.getCountOfSessions(surveyRef);
}
@Override
public EvaluationFormResponse createFileResponse(String responseIdentifier, EvaluationFormSession session,
File file, String filename) throws IOException {
......
......@@ -228,20 +228,6 @@ class EvaluationFormSessionDAO {
}
return session;
}
long getCountOfSessions(EvaluationFormSurveyRef surveyRef) {
if (surveyRef == null) return 0;
StringBuilder sb = new StringBuilder();
sb.append("select count(session.key) from evaluationformsession as session");
sb.append(" where session.survey.key=:surveyKey");
List<Long> counts = dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), Long.class)
.setParameter("surveyKey", surveyRef.getKey())
.getResultList();
return counts.get(0);
}
void deleteSessions(EvaluationFormSurveyRef surveyRef) {
if (surveyRef == null) return;
......
......@@ -234,23 +234,6 @@ public class EvaluationFormSessionDAOTest extends OlatTestCase {
assertThat(hasSessions).isFalse();
}
@Test
public void shouldGetCountOfSessionsForSurvey() {
EvaluationFormSurvey survey = evaTestHelper.createSurvey();
dbInstance.commit();
long countOfSessions = sut.getCountOfSessions(survey);
assertThat(countOfSessions).isEqualTo(0);
evaTestHelper.createSession(survey);
evaTestHelper.createSession(survey);
dbInstance.commit();
countOfSessions = sut.getCountOfSessions(survey);
assertThat(countOfSessions).isEqualTo(2);
}
@Test
public void shouldDeleteSessionsOfSurvey() {
EvaluationFormSurvey survey = evaTestHelper.createSurvey();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment