Skip to content

Commit

Permalink
Merge pull request #229 from NikitaMic/PollV1.0.1
Browse files Browse the repository at this point in the history
Poll v1.0.1
  • Loading branch information
kreinhard authored Dec 11, 2024
2 parents 49cddf9 + cd722fe commit 4d95fcd
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 119 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2036,18 +2036,18 @@ poll.mail.ended.fullAccess.content=This email is for all full-access users. Atta
poll.mail.ended.fullAccess.subject=The survey titled "{0}" has ended
poll.mail.ended.subject=The survey titled "{0}" has ended
poll.mail.endedafterdeadline.content=<p>Dear participants,</p>\
<p>We would like to inform you that the poll "{0}", created by {1}, has now been completed. Thank you to everyone who participated.</p>\
<p>If you forgot to vote or wish to make any changes, please contact the poll creator, in this case, "{1}".</p>\
<p>If you're unsure about what you voted for or what you entered, you can find an Excel file with all entries attached.</p>\
<p>We would like to inform you that the poll "{0}", organized by {1}, has now officially concluded. We extend our heartfelt thanks to everyone who participated and contributed their valuable input.</p>\
<p>If you missed the opportunity to cast your vote or need to make any changes, please don''t hesitate to reach out to the poll creator, "{1}".</p>\
<p>For those uncertain about their submissions or entries, you can review all responses directly on the poll page.</p>\
<br>\
<p>Best regards,</p>\
<p>{1}</p>
poll.mail.endedafterdeadline.subject=The poll titled "{0}" has ended as the deadline has passed.
poll.mail.endingSoon.content=<p>Dear participants,</p>\
<p>We would like to remind you that the poll "{0}", created by {1}, is ending soon, specifically on {2}. Please make sure to submit your responses before the deadline.</p>\
<p>If you haven't had the chance to participate yet, please take a moment to do so before the poll closes. Your opinion is important and valuable.</p>\
<p><a>{3}</a></p>\
<p>Thank you for your attention, and have a great day!</p>\
<p>We kindly remind you that the poll "{0}", organized by {1}, is nearing its end and will close on {2}. Please ensure you submit your responses before the deadline.</p>\
<p>If you havent had the chance to participate yet, we encourage you to take a moment to do so. Your opinion is greatly valued and makes a difference.</p>\
<p><a href=\"https://projectforge.micromata.de/react/pollResponse/dynamic/?pollId={3}\">Link to the Poll</a></p>\
<p>Thank you for your time and attention. Wishing you a wonderful day!</p>\
<br>\
<p>Best regards,</p>\
<p>{1}</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2068,7 +2068,7 @@ plugins.teamcal.title.list=Kalenderliste
poll=Umfrage
poll.access=Zugriff
poll.Annotations=Anmerkungen
poll.annotations.description=Im Anmerkungsfeld kannst du Informationen hinzufügen, die in den Antworten nicht klar definiert wurden deiner Meinung nach oder wenn du wichtige informationen hinzugeben möchtest wie zum Beispiel Allergien.
poll.annotations.description=Im Anmerkungsfeld kannst du Informationen hinzufügen, die deiner Meinung nach in den Antworten nicht klar definiert wurden, oder wenn du wichtige Informationen wie zum Beispiel Allergien hinzufügen möchtest.
poll.answer=Auswahlmöglichkeit
poll.assignment=Zuordnung
poll.attendee=Teilnehmer:in
Expand All @@ -2078,7 +2078,7 @@ poll.button.addQuestion=Eigene Frage hinzufügen
poll.button.finish=Umfrage beenden
poll.button.template=Vorlage verwenden
poll.confirmation.creation=Möchtest du die Umfrage wirklich erstellen? Du kannst die Fragen danach nicht mehr bearbeiten.\
Stelle ebenfalls sicher, dass du Teilnehmer für deine Umfrage hinzugefügt hast.
Stelle ebenfalls sicher, dass du Teilnehmer:innen für deine Umfrage hinzugefügt hast.
poll.confirmation.deleteAnswer=Möchtest du diese Antwort wirklich löschen?
poll.confirmation.deleteButton=Ja
poll.confirmation.deleteQuestion=Möchtest du diese Frage wirklich löschen?
Expand All @@ -2087,79 +2087,76 @@ poll.date=Datum
poll.deadline=Antwortfrist
poll.delegationAnswers=Antworten von
poll.description=Beschreibung
poll.email-content-field=E-mail Inhalt
poll.email-content-tooltip=Hier kannst du den Inhalt der E-Mail selbst bestimmen. Verwende {0}, um den Titel der Umfrage aufzurufen. Mit {1} kannst du den Ersteller der Umfrage anzeigen, mit {2} \
erstellst du einen direkten Link zur Umfrage. Nutze {3}, um die Beschreibung der Umfrage abzurufen, und {4} um automatische das Enddatum der Umfrage abzurufen, also die Deadline für die Abstimmung.
poll.email-content-field=E-Mail Inhalt
poll.email-content-tooltip=Du kannst den Inhalt der E-Mail individuell gestalten, indem du Platzhalter verwendest. Nutze {0}, um den Titel der Umfrage einzufügen. Mit {1} kannst du den Namen des Erstellers der Umfrage anzeigen, und {2} fügt einen direkten Link zur Umfrage ein. \
Um die Beschreibung der Umfrage hinzuzufügen, verwende {3}, und mit {4} kannst du das Enddatum der Umfrage automatisch einfügen, das als Deadline für die Abstimmung dient.
poll.email-subject-field=Email Titel
poll.email-subject-tooltip= Hier kannst du den Betreff der E-Mail selbst wählen. Verwende {0}, um den Titel der Umfrage einzufügen, und {1}, um das automatische Enddatum der Umfrage zu setzen -\
\ das ist die Deadline für die Abstimmung.
poll.error.cantremoveyourself=Du kannst dich nicht selbst als Full Access User entfernen bitte einen anderen Full Access User oder den Erstelle dieser Umfrage dies für dich zu tun.
poll.error.oneAttendeRequired=Bitte füge mindestens einen Teilnehmer hinzu
poll.email-subject-tooltip= Hier kannst du den Betreff der E-Mail selbst angeben. Verwende {0}, um den Titel der Umfrage einzufügen, und {1}, um das automatische Enddatum der Umfrage einzusetzen
poll.error.cantremoveyourself=Du kannst dich nicht selbst als Full Access User entfernen. Bitte einen anderen Full Access User oder den/die Ersteller:in dieser Umfrage dies für dich zu tun.
poll.error.oneAttendeRequired=Bitte füge mindestens eine:n Teilnehmer:in hinzu.
poll.error.oneQuestionRequired=Mindestens eine Frage ist erforderlich.
poll.exception.noAttendee=Dieser Nutzer ist nicht Teil der Umfrage.
poll.exception.noAttendee=Diese:r Nutzer:in ist nicht Teil der Umfrage.
poll.export.response.poll=Ergebnisse exportieren
poll.finished=Beendet
poll.fullAccessGroups=Gruppen mit Vollzugriff
poll.fullAccessgroups.tooltip=Zu den Vollzugriffgruppen gehören beispielsweise die BU's, das MUK-Team oder auch das Marketing-Team. Personen mit Vollzugriff können die Umfrage vorzeitig beenden,\
\ die Excel-Ergebnisse einsehen oder auch Nutzer hinzufügen. Wenn diese Personen abstimmen sollen, musst du sie noch als Teilnehmer hinzufügen.
poll.fullAccessUser.tooltip=Vollzugriffsbenutzer haben die Möglichkeit, die Umfrage zu schließen, die Excel-Ergebnisse anzusehen und Personen hinzuzufügen oder zu entfernen (sie können sich selbst nicht entfernen). Sie werden nicht als Teilnehmer gezählt.\
Wenn diese Personen auch abstimmen sollen, müssen sie zusätzlich als Teilnehmer registriert werden.
poll.fullAccessgroups.tooltip=Als Gruppen sind z.B. die BU's, das MUK-Team oder auch das Marketing-Team hinterlegt. Personen mit Vollzugriff können die Umfrage vorzeitig beenden,\
\ die Excel-Ergebnisse einsehen oder auch Nutzer:innen hinzufügen. Wenn diese Personen abstimmen sollen, musst du sie noch als Teilnehmer:innen hinzufügen.
poll.fullAccessUser.tooltip=Vollzugriffsbenutzer:innen haben die Möglichkeit, die Umfrage zu schließen, die Excel-Ergebnisse anzusehen und Personen hinzuzufügen oder zu entfernen (sie können sich selbst nicht entfernen). Sie werden nicht als Teilnehmer:in gezählt.\
Wenn diese Personen auch abstimmen sollen, müssen sie zusätzlich als Teilnehmer:innen registriert werden.
poll.fullAccessUsers=Benutzer:innen mit Vollzugriff
poll.groupAttendees=Teilnehmergruppen
poll.groupAttendees.tooltip=Teilnehmergruppen sind eine praktische Möglichkeit, nicht jede Person einzeln hinzufügen, sondern ganze Gruppen wie BUs auf einmal. Teilnehmer können nur abstimmen.
poll.groupAttendees.tooltip=Teilnehmergruppen bieten dir die Möglichkeit, nicht jede Person einzeln hinzufügen zu müssen, sondern ganze Gruppen wie BUs auf einmal angeben zu können. Teilnehmer:innen können nur abstimmen.
poll.guide=Anleitung
poll.infopage=Infoseite
poll.location=Ort
poll.mail.created.content=<p>Liebe Teilnehmer:innen,</p>\
<p>Wir möchten Ihnen mitteilen, dass eine Umfrage erstellt wurde mit dem Titel "{0}", und Sie wurden herzlichst eingeladen bei dieser Abzustimmen.</p>\
<p>Hier kommst du direkt <a href="{2}"> zur Umfrage</a></p>\
\<p></p>\
<p>Mit Freundlichen Grüßen,</p>\
poll.mail.created.content=<p>Liebe Teilnehmerinnen und Teilnehmer,</p>\
<p>Wir m�chten Sie dar�ber informieren, dass eine Umfrage mit dem Titel "{0}" erstellt wurde, und Sie herzlich eingeladen sind, Ihre Stimme abzugeben.</p>\
<p>Sie k�nnen direkt �ber <a href="{2}">diesen Link</a> darauf zugreifen.</p>\
<p></p>\
<p>Mit freundlichen Gr��en,</p>\
<p>{1}</p>
poll.mail.created.subject=<p>Sie wurden zu einer Umfrage eingeladen mit dem Titel "{0}" eingeladen.</p>
poll.mail.created.subject=<p>Sie wurden eingeladen, an einer Umfrage mit dem Titel "{0}" teilzunehmen.</p>
poll.mail.ended.content=<p>Liebe Teilnehmer:innen, </p>\
<p>Wir möchten dich darüber informieren, dass die Umfrage "{0}", erstellt von {1}, nun abgeschlossen ist. Vielen Dank an alle, die Teilgenommen haben.</p>\
<p>Deine Ergebnisse/Antworten kannst du weiterhin sehen jedoch kannst du diese selber nicht mehr bearbeiten.</p>\
<p>Falls du aber vergessen hast abzustimmen oder vielleicht noch etwas ändern möchtest melde dich bei einer berechtigten Person oder beim ersteller in diesem Fall "{1}"</p>\
<p>Wir m�chten Sie darüber informieren, dass die Umfrage "{0}", erstellt von {1}, nun abgeschlossen ist. Vielen Dank an alle, die Teilgenommen haben.</p>\
<p>Ihre Ergebnisse/Antworten k�nnen Sie weiterhin sehen jedoch k�nnen Sie diese selber nicht mehr bearbeiten.</p>\
<p>Falls Sie vergessen haben abzustimmen oder vielleicht noch etwas ändern möchtest melden Sie sich bei einer berechtigten Person oder bei "{1}"</p>\
<br>\
<p>Mit Freundlichen Grüßen,</p>\
<p>{1}</p>
poll.mail.ended.fullAccess.content=Diese Email ist für Alle Vollzugriffnutzer:innen. Im Anhang ist die Excel Tabelle mit den Ergebnissen der Umfrage.
poll.mail.ended.fullAccess.subject=Die Umfrage mit dem Title "{0}" wurde Beendet
poll.mail.ended.subject=Die Umfrage mit dem Title "{0}" wurde Beendet
poll.mail.endedafterdeadline.content=<p>Liebe Teilnehmer:innen,</p>\
<p>Wir möchten dich darüber informieren, dass die Umfrage "{0}", erstellt von {1}, nun abgeschlossen ist. Vielen Dank an alle, die Teilgenommen haben.</p>\
<p>Falls du vergessen haben solltest abzustimmen oder vielleicht noch etwas ändern möchtest melde dich bitte beim ersteller der Umfrage in diesem fall "{1}"</p>\
<p>Falls du dir nicht mehr sicher bist für was du Abgestimmt hast oder was du eingetragen hast findest du deine antworten noch weiterhin in der Umfrage.</p>\
poll.mail.ended.fullAccess.content=Diese Email ist für alle Vollzugriffnutzer:innen. Im Anhang finden Sie die Excel Tabelle mit den Ergebnissen der Umfrage.
poll.mail.ended.fullAccess.subject=Die Umfrage mit dem Titel "{0}" wurde beendet.
poll.mail.ended.subject=Die Umfrage mit dem Titel "{0}" wurde beendet.
poll.mail.endedafterdeadline.content=<p>Liebe Teilnehmerinnen und Teilnehmer,</p>\
<p>wir möchten Sie darüber informieren, dass die Umfrage "{0}", erstellt von {1}, nun abgeschlossen ist. Wir danken allen herzlich, die sich die Zeit genommen haben, teilzunehmen und ihre Meinung einzubringen.</p>\
<p>Falls Sie die Gelegenheit verpasst haben, Ihre Stimme abzugeben, oder Änderungen vornehmen möchten, können Sie sich gerne an "{1}" wenden.</p>\
<p>Falls Sie Ihre Eingaben oder die Gesamtergebnisse überprüfen möchten, finden Sie eine Excel-Datei mit allen Einträgen im Anhang.</p>\
<br>\
<p>Mit Freundlichen Grüßen,</p>\
<p>Mit freundlichen Grüßen,</p>\
<p>{1}</p>
poll.mail.endedafterdeadline.subject=Die Umfrage mit dem Title "{0}" ist Beendet die Deadline ist abgelaufen
poll.mail.endingSoon.content=<p>Liebe Teilnehmer:innen,</p>\
<p>wir möchten Sie daran erinnern, dass die Umfrage "{0}", erstellt von {1}, bald endet, nämlich am {2}. Bitte achten Sie darauf, Ihre Antworten vor dem Ablaufdatum einzureichen.</p>\
<p>Falls du noch nicht die Gelegenheit hatten, an der Umfrage teilzunehmen, nehmen Sie sich bitte einen Moment Zeit, um dies zu tun, bevor die Umfrage geschlossen wird. Ihre Meinung ist wichtig und wertvoll.</p>\
<p><a>{3}</a></p>\
<p>Vielen Dank für Ihre Aufmerksamkeit und einen schönen Tag!</p>\
<br>\
<p>Mit Freundlichen Grüßen,</p>\
poll.mail.endedafterdeadline.subject=Die Umfrage mit dem Titel "{0}" wurde abgeschlossen, da die Frist abgelaufen ist.
poll.mail.endingSoon.content=<p>Liebe Teilnehmerinnen und Teilnehmer,</p>\
<p>dies ist eine freundliche Erinnerung, dass die Umfrage "{0}", erstellt von {1}, bald Endet und am {2} geschlossen wird. Bitte stellen Sie sicher, dass Sie Ihre Antworten rechtzeitig einreichen.</p>\
<p><a href=\"https://projectforge.micromata.de/react/pollResponse/dynamic/?pollId={3}\">Link zur Umrage</a></p>\
<p>Vielen Dank für Ihre Aufmerksamkeit!</p>\
<p>Herzliche Grüße,</p>\
<p>{1}</p>
poll.mail.endingSoon.subject=Umfrage endet in {0} Tagen
poll.mail.update.content=<p>Liebe Teilnehmer:innen,</p>\
<p>Wir möchten dir mitteilen, dass die Umfrage "{0}" kürzlich bearbeitet wurde.</p>\
<p>Falls du bereits deine Antworten eingereicht haben solltest, überprüfe bitte ob wesentliche änderungen vorgenommen wurden. Falls dies der fall seien sollte melde dich bitte beim Ersteller der Umfrage.</p>\
<p>Die Umfrage "{0}" wurde kürzlich bearbeitet.</p>\
<p>Falls Sie bereits Ihre Antworten eingereicht haben, überprüfen Sie bitte ob wesentliche Änderungen vorgenommen wurden. Falls dies der Fall ist, melden Sie sich bitte bei dem/der Ersteller:in der Umfrage.</p>\
<p>Mit Freundlichen Grüßen,</p>\
<p>{1}</p>
poll.mail.update.subject=Umfrage wurde bearbeitet
poll.manual.multiResponse=Eine Frage, bei der man mehrere Antworten auswählen kann. Gut geeignet für eine Terminabfrage oder eine Essensabfrage.
poll.manual.questions=Anlegen. Anschließend werden die Fragen der Umfrage angelegt. Die Fragen können aus drei verschiedenen Typen bestehen. Es gibt auch Vorlagen für häufige Events.
poll.manual.singleResponse=Eine Frage, bei der man eine Antwort auswählen kann. Beispielsweise für eine simple Ja- oder Nein-Frage.
poll.manual.textQuestion=Eine Frage, bei der man mit Freitext antworten kann. Gut geeignet für formloses Feedback.
poll.manual.questions=Anlegen. Anschließend werden die Fragen der Umfrage angelegt. Die Fragen können aus drei verschiedenen Typen bestehen. Es gibt auch Vorlagen für regelmäßig stattfindende Events.
poll.manual.singleResponse=Eine Frage, bei der man nur eine Antwortmöglichtkeit auswählen kann. Beispielsweise für Ja- oder Nein-Fragen.
poll.manual.textQuestion=Eine Frage, die mit einem Freitext beantwortet werden soll. Gut geeignet für formloses Feedback.
poll.manual.title=Anleitung, um eine Umfrage zu erstellen | Als Erstes muss man den
poll.other=Andere
poll.owner=Ersteller
poll.popup.closed=Umfrage wurde bereits beendet
poll.premade.template=Vorlage hinzufügen
poll.premadeQuestion.tooltip=In diesem Menü findest du häufig verwendete Vorlagen, die dir dabei helfen, die Umfrage schnell zu erstellen. Falls Fragen in der Vorlage fehlen, kannst du sie auch hinzufügen. \
poll.premadeQuestion.tooltip=In diesem Menü findest du häufig verwendete Vorlagen, die dir dabei helfen, deine Umfrage schnell zu erstellen. Falls Fragen in der Vorlage fehlen, kannst du sie auch hinzufügen. \
Außerdem hast du die Möglichkeit, Fragen zu überarbeiten oder zu korrigieren, wenn sie in der Vorlage nicht auf deine Situtation zutreffen.
poll.question=Frage
poll.question.multi=Frage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import org.projectforge.business.poll.PollResponseDao
import org.projectforge.business.user.service.UserService
import org.projectforge.framework.i18n.translateMsg
import org.projectforge.mail.MailAttachment
import org.projectforge.rest.dto.PostData
import org.projectforge.rest.poll.excel.ExcelExport
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand Down Expand Up @@ -65,7 +64,7 @@ class PollCronJobs {
* Cron job for daily stuff
*/

@Scheduled(cron = "0 0 */12 * * *") //Alle 12 Stunden
@Scheduled(cron = "0 5 6 * * *") //Immer um 00:05
fun dailyCronJobs() {
log.info("Start daily cron jobs")
cronDeletePolls()
Expand All @@ -77,7 +76,7 @@ class PollCronJobs {
* Method to end polls after deadline
*/
private fun cronEndPolls() {
val pollDOs = pollDao.selectAll(checkAccess = false)
val pollDOs = pollDao.selectAllNotDeleted(checkAccess = false)
// set State.FINISHED for all old polls and export excel
pollDOs.forEach { pollDO ->
// try to send mail until successfully changed to FINISHED_AND_MAIL_SENT
Expand All @@ -101,16 +100,15 @@ class PollCronJobs {
}
}
val owner = userService.getUser(poll.owner?.id)
val mailTo: ArrayList<String> =
ArrayList(poll.attendees?.map { it.email }?.mapNotNull { it } ?: emptyList())
val mailTo = pollMailService.getAllAttendeesEmails(poll)
val mailFrom = pollDO.owner?.email.toString()
val mailSubject = translateMsg("poll.mail.endedafterdeadline.subject", poll.title)
val mailContent = translateMsg("poll.mail.endedafterdeadline.content", pollDO.title, owner?.displayName, )

pollDao.insertOrUpdate(pollDO, checkAccess = false)
log.info("Set state of poll (${pollDO.id}) ${pollDO.title} to FINISHED")
pollMailService.sendMail(mailFrom, mailTo, mailContent, mailSubject, listOf(mailAttachment))
pollDO.state = PollDO.State.FINISHED_AND_MAIL_SENT
log.info("Set state of poll (${pollDO.id}) ${pollDO.title} to FINISHED_AND_MAIL_SENT")
pollDao.insertOrUpdate(pollDO, checkAccess = false)
} catch (e: Exception) {
log.error(e.message, e)
}
Expand All @@ -125,16 +123,15 @@ class PollCronJobs {
val daysDifference = ChronoUnit.DAYS.between(LocalDate.now(), pollDO.deadline)
if (daysDifference == 1L || daysDifference == 7L) {
// add all attendees mails
val mailTo: ArrayList<String> =
ArrayList(poll.attendees?.map { it.email }?.mapNotNull { it } ?: emptyList())
val mailTo = pollMailService.getAllAttendeesEmails(poll)
val mailFrom = pollDO.owner?.email.toString()
val mailSubject = translateMsg("poll.mail.endingSoon.subject", daysDifference)
val mailContent = translateMsg(
"poll.mail.endingSoon.content",
pollDO.title,
pollDO.owner?.displayName,
pollDO.deadline?.format(DateTimeFormatter.ofPattern("dd.MM.yyyy")).toString(),
"https://projectforge.micromata.de/react/response/dynamic/${pollDO.id}"
pollDO.id.toString(),
)
pollMailService.sendMail(mailFrom, mailTo, mailSubject, mailContent)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class PollMailService {
return userList.mapNotNull { it.email }
}

fun getAllAttendesEmails(poll: Poll): List<String> {
fun getAllAttendeesEmails(poll: Poll): List<String> {
val attendees = poll.attendees

val userList = attendees
Expand Down
Loading

0 comments on commit 4d95fcd

Please sign in to comment.