Files
sendico/api/pkg/messaging/internal/notifications/paymentorchestrator/notification.go

43 lines
1.1 KiB
Go

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,
}
}