flamingo.me/flamingo-commerce/v3@v3.11.0/checkout/domain/placeorder/states/show_wallet_payment.go (about)

     1  package states
     2  
     3  import (
     4  	"context"
     5  	"encoding/gob"
     6  
     7  	"flamingo.me/flamingo-commerce/v3/checkout/domain/placeorder/process"
     8  	"flamingo.me/flamingo-commerce/v3/payment/application"
     9  	"flamingo.me/flamingo-commerce/v3/payment/domain"
    10  
    11  	"go.opencensus.io/trace"
    12  )
    13  
    14  type (
    15  	// ShowWalletPayment state
    16  	ShowWalletPayment struct {
    17  		paymentService *application.PaymentService
    18  		validator      process.PaymentValidatorFunc
    19  	}
    20  
    21  	// ShowWalletPaymentData holds details regarding the wallet payment
    22  	ShowWalletPaymentData domain.WalletDetails
    23  )
    24  
    25  func init() {
    26  	gob.Register(ShowWalletPaymentData{})
    27  }
    28  
    29  var _ process.State = ShowWalletPayment{}
    30  
    31  // NewShowWalletPaymentStateData creates new StateData with (persisted) Data required for this state
    32  func NewShowWalletPaymentStateData(walletDetails ShowWalletPaymentData) process.StateData {
    33  	return process.StateData(walletDetails)
    34  }
    35  
    36  // Inject dependencies
    37  func (pr *ShowWalletPayment) Inject(
    38  	paymentService *application.PaymentService,
    39  	validator process.PaymentValidatorFunc,
    40  ) *ShowWalletPayment {
    41  	pr.paymentService = paymentService
    42  	pr.validator = validator
    43  
    44  	return pr
    45  }
    46  
    47  // Name get state name
    48  func (ShowWalletPayment) Name() string {
    49  	return "ShowWalletPayment"
    50  }
    51  
    52  // Run the state operations
    53  func (pr ShowWalletPayment) Run(ctx context.Context, p *process.Process) process.RunResult {
    54  	ctx, span := trace.StartSpan(ctx, "placeorder/state/ShowWalletPayment/Run")
    55  	defer span.End()
    56  
    57  	return pr.validator(ctx, p, pr.paymentService)
    58  }
    59  
    60  // Rollback the state operations
    61  func (pr ShowWalletPayment) Rollback(ctx context.Context, _ process.RollbackData) error {
    62  	return nil
    63  }
    64  
    65  // IsFinal if state is a final state
    66  func (pr ShowWalletPayment) IsFinal() bool {
    67  	return false
    68  }