flamingo.me/flamingo-commerce/v3@v3.11.0/cart/domain/validation/itemValidator.go (about)

     1  package validation
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"flamingo.me/flamingo-commerce/v3/cart/domain/cart"
     8  	"flamingo.me/flamingo-commerce/v3/cart/domain/decorator"
     9  
    10  	"flamingo.me/flamingo/v3/framework/web"
    11  
    12  	"flamingo.me/flamingo-commerce/v3/product/domain"
    13  )
    14  
    15  //go:generate go run github.com/vektra/mockery/v2@v2.42.3 --name ItemValidator --case snake
    16  
    17  type (
    18  	// ItemValidator checks a cart item
    19  	ItemValidator interface {
    20  		Validate(ctx context.Context, session *web.Session, cart *decorator.DecoratedCart, deliveryCode string, request cart.AddRequest, product domain.BasicProduct) error
    21  	}
    22  
    23  	// AddToCartNotAllowed error
    24  	AddToCartNotAllowed struct {
    25  		Reason              string
    26  		RedirectHandlerName string
    27  		RedirectParams      map[string]string
    28  		AdditionalData      map[string]interface{}
    29  	}
    30  )
    31  
    32  // Error message
    33  func (e *AddToCartNotAllowed) Error() string {
    34  	return fmt.Sprintf("Product is not allowed: %v", e.Reason)
    35  }
    36  
    37  // MessageCode message code
    38  func (e *AddToCartNotAllowed) MessageCode() string {
    39  	return e.Reason
    40  }