package notifications import ( "encoding/json" "strings" messaging "github.com/tech/sendico/pkg/messaging/envelope" "github.com/tech/sendico/pkg/model" nm "github.com/tech/sendico/pkg/model/notification" "github.com/tech/sendico/pkg/mservice" ) type PaymentStatusUpdatedNotification struct { messaging.Envelope payload model.PaymentStatusUpdated } func (psn *PaymentStatusUpdatedNotification) Serialize() ([]byte, error) { data, err := json.Marshal(psn.payload) if err != nil { return nil, err } return psn.Envelope.Wrap(data) } func paymentStatusUpdatedEvent() model.NotificationEvent { return model.NewNotification(mservice.PaymentOrchestrator, nm.NAUpdated) } func NewPaymentStatusUpdatedEnvelope(sender string, status *model.PaymentStatusUpdated) messaging.Envelope { payload := model.PaymentStatusUpdated{} if status != nil { payload = *status } if strings.TrimSpace(payload.Type) == "" { payload.Type = model.PaymentStatusUpdatedType } return &PaymentStatusUpdatedNotification{ Envelope: messaging.CreateEnvelope(sender, paymentStatusUpdatedEvent()), payload: payload, } }