flamingo.me/flamingo-commerce/v3@v3.11.0/cart/interfaces/graphql/dto/discounts.go (about)

     1  package dto
     2  
     3  import (
     4  	"context"
     5  
     6  	"flamingo.me/flamingo-commerce/v3/cart/domain/cart"
     7  )
     8  
     9  // CartAppliedDiscounts DTO for cart.AppliedDiscounts
    10  type CartAppliedDiscounts struct {
    11  	discounts cart.AppliedDiscounts
    12  }
    13  
    14  // Items getter
    15  func (d *CartAppliedDiscounts) Items() []cart.AppliedDiscount {
    16  	return d.discounts.Items()
    17  }
    18  
    19  // ByCampaignCode getter and wrapper
    20  func (d *CartAppliedDiscounts) ByCampaignCode(campaignCode string) *CartAppliedDiscounts {
    21  	return &CartAppliedDiscounts{discounts: d.discounts.ByCampaignCode(campaignCode)}
    22  }
    23  
    24  // ByType getter and wrapper
    25  func (d *CartAppliedDiscounts) ByType(filterType string) *CartAppliedDiscounts {
    26  	return &CartAppliedDiscounts{discounts: d.discounts.ByType(filterType)}
    27  }
    28  
    29  // CartAppliedDiscountsResolver resolves discounts for items
    30  type CartAppliedDiscountsResolver struct{}
    31  
    32  // ForItem resolves for cart Items
    33  func (*CartAppliedDiscountsResolver) ForItem(ctx context.Context, item *cart.Item) (*CartAppliedDiscounts, error) {
    34  	return &CartAppliedDiscounts{discounts: item.AppliedDiscounts}, nil
    35  }
    36  
    37  // ForShippingItem resolves for shipping Items
    38  func (*CartAppliedDiscountsResolver) ForShippingItem(ctx context.Context, item *cart.ShippingItem) (*CartAppliedDiscounts, error) {
    39  	return &CartAppliedDiscounts{discounts: item.AppliedDiscounts}, nil
    40  }