diff --git a/src/myaktion/monitor.go b/src/myaktion/monitor.go index 48db3ac3e524ae6da8544c8b5960e2b29038801a..ecb0d9b60f420bb5938790ff50bf95264e8dd074 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 bc2f87e412b0486b14248ad8e174554476c7089e..9a384fd90a0ee24cdbf96784c0a3246b17d79520 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 +}