From 470aa26ff6773bd394ee3e6c2a41ed39d22450dd Mon Sep 17 00:00:00 2001 From: Martin Schmollinger <martin.schmollinger@reutlingen-university.de> Date: Mon, 19 May 2025 23:04:47 +0200 Subject: [PATCH] Change state of donation after successful bank transaction in myaktion service. --- src/myaktion/monitor.go | 10 +++++++++- src/myaktion/service/donation.go | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/myaktion/monitor.go b/src/myaktion/monitor.go index 48db3ac..ecb0d9b 100644 --- a/src/myaktion/monitor.go +++ b/src/myaktion/monitor.go @@ -7,6 +7,7 @@ import ( log "github.com/sirupsen/logrus" "gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/client" "gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/client/banktransfer" + "gitlab.reutlingen-university.de/go-exercises/myaktion-go-ss25/src/myaktion/service" ) func monitortransactions() { @@ -42,7 +43,14 @@ func connectandmonitor() { continue } entry := log.WithField("transaction", transaction) - entry.Info("Received transaction. Sending processing response") + entry.Info("Received transaction") + err = service.MarkDonation(uint(transaction.DonationId)) + if err != nil { + entry.WithError(err).Error("error changing donation status") + continue + } + entry.Info("Sending processing response") + err = watcher.Send(&banktransfer.ProcessingResponse{Id: transaction.Id}) if err != nil { entry.WithError(err).Error("error sending processing response") diff --git a/src/myaktion/service/donation.go b/src/myaktion/service/donation.go index bc2f87e..9a384fd 100644 --- a/src/myaktion/service/donation.go +++ b/src/myaktion/service/donation.go @@ -72,3 +72,23 @@ func deleteDonation(donation *model.Donation) error { entry.Info("Successfully deleted campaign.") return nil } + +func MarkDonation(id uint) error { + entry := log.WithField("donationId", id) + donation := new(model.Donation) + result := db.DB.First(donation, id) + if result.Error != nil { + entry.WithError(result.Error).Error("Can't retrieve donation") + return result.Error + } + entry = entry.WithField("donation", donation) + entry.Trace("Retrieved donation") + donation.Status = model.TRANSFERRED + result = db.DB.Save(donation) + if result.Error != nil { + entry.WithError(result.Error).Error("Can't update donation") + return result.Error + } + entry.Info("Successfully updated status of donation.") + return nil +} -- GitLab