Skip to content

Commit

Permalink
Merge pull request #898 from luechtdiode/feature/improve-donation-mail
Browse files Browse the repository at this point in the history
Improve donation-mailing
  • Loading branch information
luechtdiode committed Apr 27, 2024
2 parents e80d1d4 + 730d3ed commit a10a2a0
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -335,19 +335,22 @@ class CompetitionCoordinatorClientActor(wettkampfUUID: String) extends Persisten
|""".stripMargin)
val teilnehmer = getAllKandidatenWertungen(wkUUID)
val results = teilnehmer.flatMap(k => k.wertungen.map(w => w.resultat.endnote)).sum
if (results > 0 && teilnehmer.size > 10) {
val price = BigDecimal(Config.donationPrice)
if (abschluss.finishOnlineAthletesCnt > 10 || (results > 0 && abschluss.finishAthletesCnt > 10)) {
val teilnehmerCnt = if (abschluss.finishAthletesCnt > 0) abschluss.finishAthletesCnt else abschluss.finishOnlineAthletesCnt
val clubsCnt = if (abschluss.finishClubsCnt > 0) abschluss.finishClubsCnt else abschluss.finishOnlineClubsCnt
val pricePerTn = BigDecimal(Config.donationPrice)
val betrag = (pricePerTn * teilnehmerCnt).setScale(2)
val donationLink = Config.donationLink
val mail = MailTemplates.createDonateMail(wettkampf, donationLink, abschluss, price)
val mail = MailTemplates.createDonateMail(wettkampf, donationLink, abschluss, pricePerTn, betrag, clubsCnt, teilnehmerCnt)
KuTuMailerActor.send(mail)
mail match {
case mpm:MultipartMail =>
log.info(s"Mail submitted to ${mpm.to}:\n${mpm.messageText}")
case sm:SimpleMail =>
log.info(s"Mail submitted to ${sm.to}:\n${sm.messageText}")
}
saveWettkampfDonationAsk(wkUUID, wettkampf.notificationEMail, price)
handleEvent(DonationMailSent(teilnehmer.size, price, donationLink, wettkampfUUID))
saveWettkampfDonationAsk(wkUUID, wettkampf.notificationEMail, betrag)
handleEvent(DonationMailSent(teilnehmerCnt, pricePerTn, donationLink, wettkampfUUID))
saveSnapshot(state)
} else {
log.info("Kein Mail versendet - zu wenig Teilnehmer mit Wertung - WK wurde ev. nicht durchgeführt.")
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/ch/seidel/kutu/akka/Messages.scala
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ case class AthletsAddedToWettkampf(athlet: List[AthletView], wettkampfUUID: Stri
case class DurchgangChanged(durchgang: String, wettkampfUUID: String, athlet: AthletView) extends KutuAppEvent
case class ScoresPublished(scoreId: String, title: String, query: String, published: Boolean, wettkampfUUID: String) extends KutuAppEvent
case class DonationMailSent(teilnehmer: Int, price: BigDecimal, donationLink: String, wettkampfUUID: String) extends KutuAppEvent
case class DonationApproved(amount: BigDecimal, wettkampfUUID: String) extends KutuAppEvent
case class GeraeteRiegeList(list: List[GeraeteRiege], wettkampfUUID: String) extends KutuAppEvent

case class NewLastResults(results: Map[String, WertungContainer], lastTopResults: Map[String, WertungContainer]) extends KutuAppEvent
Expand Down
21 changes: 21 additions & 0 deletions src/main/scala/ch/seidel/kutu/domain/WettkampfService.scala
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,27 @@ trait WettkampfService extends DBService
}, Duration.Inf)
}

def saveWettkampfDonationApprove(uuid: UUID, mail: String, amount: BigDecimal): WettkampfMetaData = {
Await.result(database.run{
sqlu""" update wettkampfmetadata
set finish_donation_approved=$amount
where uuid=${uuid.toString}
""" >>
sql""" select uuid
, wettkampf_id
, finish_athletes_cnt
, finish_clubs_cnt
, finish_online_athletes_cnt
, finish_online_clubs_cnt
, finish_donation_mail
, finish_donation_asked
, finish_donation_approved
from wettkampfmetadata
where uuid=${uuid.toString}
""".as[WettkampfMetaData].head
}, Duration.Inf)
}

def deleteWettkampfRelationActions(wettkampfid: Long) = {
sqlu""" delete from published_scores where wettkampf_id=${wettkampfid}""" >>
sqlu""" delete from durchgangstation where wettkampf_id=${wettkampfid}""" >>
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/ch/seidel/kutu/http/JsonSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ trait JsonSupport extends SprayJsonSupport with EnrichedJson {
implicit val finishDurchgangFormat: RootJsonFormat[FinishDurchgang] = jsonFormat2(FinishDurchgang)
implicit val finishDurchgangStepFormat: RootJsonFormat[FinishDurchgangStep] = jsonFormat1(FinishDurchgangStep)
implicit val publishScores: RootJsonFormat[PublishScores] = jsonFormat4(PublishScores)
implicit val approveDonation: RootJsonFormat[DonationApproved] = jsonFormat2(DonationApproved)

// events (via ws and rest-response)
implicit val durchgangStartedFormat: RootJsonFormat[DurchgangStarted] = jsonFormat3(DurchgangStarted)
Expand Down
8 changes: 3 additions & 5 deletions src/main/scala/ch/seidel/kutu/renderer/MailTemplates.scala
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,10 @@ object MailTemplates {
wettkampf.notificationEMail)
}

def createDonateMail(wettkampf: Wettkampf, link: String, wkStats: WettkampfStats, preisPerTn: BigDecimal): Mail = {
val teilnehmer = wkStats.finishAthletesCnt
def createDonateMail(wettkampf: Wettkampf, link: String, wkStats: WettkampfStats, preisPerTn: BigDecimal, betrag: BigDecimal, clubs: Int, teilnehmer: Int): Mail = {
val logodir = new java.io.File(Config.homedir + "/" + encodeFileName(wettkampf.easyprint))
val logofile = PrintUtil.locateLogoFile(logodir)
val logoHtml = if (logofile.exists()) s"""<img class=logo src="${logofile.imageSrcForWebEngine}" title="Logo"/>""" else ""
val betrag = (preisPerTn * teilnehmer).setScale(2)
val linkMaterialized = link.replace(":betrag", s"$betrag")
val imageData = toQRCodeImage(linkMaterialized)
val onlineRegStats = if (wkStats.finishOnlineClubsCnt > 0)
Expand All @@ -122,7 +120,7 @@ object MailTemplates {
MultipartMail(s"Abschluss Online-Durchführung ${wettkampf.easyprint}",
s"""Hallo ${wettkampf.notificationEMail}
|
|Der Wettkampf '${wettkampf.easyprint}' ist mit $teilnehmer Teilnehmer/-Innen aus ${wkStats.finishClubsCnt} Vereinen zu Ende gegangen.
|Der Wettkampf '${wettkampf.easyprint}' ist mit $teilnehmer Teilnehmer/-Innen aus ${clubs} Vereinen zu Ende gegangen.
|
|$onlineRegStats
|
Expand Down Expand Up @@ -151,7 +149,7 @@ object MailTemplates {
| <div class="textblock">
| <h4>Hallo ${escaped(wettkampf.notificationEMail)}</h4>
| <p>
| Der Wettkampf '${escaped(wettkampf.easyprint)}' ist mit $teilnehmer Teilnehmer/-Innen aus ${wkStats.finishClubsCnt} Vereinen zu Ende gegangen.
| Der Wettkampf '${escaped(wettkampf.easyprint)}' ist mit $teilnehmer Teilnehmer/-Innen aus ${clubs} Vereinen zu Ende gegangen.
| <br>
| $onlineRegStats
| </p>
Expand Down

0 comments on commit a10a2a0

Please sign in to comment.