28 lines
508 B
Go
28 lines
508 B
Go
package cart
|
|
|
|
import (
|
|
"errors"
|
|
"time"
|
|
|
|
messages "git.k6n.net/go-cart-actor/pkg/messages"
|
|
)
|
|
|
|
func asPointer[T any](value T) *T {
|
|
return &value
|
|
}
|
|
|
|
var ErrPaymentNotFound = errors.New("payment not found")
|
|
|
|
func PaymentDeclined(grain *CartGrain, req *messages.PaymentDeclined) error {
|
|
|
|
payment, found := grain.FindPayment(req.PaymentId)
|
|
if !found {
|
|
return ErrPaymentNotFound
|
|
}
|
|
|
|
payment.CompletedAt = asPointer(time.Now())
|
|
payment.Status = PaymentStatusFailed
|
|
grain.PaymentInProgress--
|
|
return nil
|
|
}
|