@@ -12,7 +12,7 @@ import (
1212)
1313
1414var (
15- deliveredProductIDToOuraDiscountAttribute = map [string ]string {
15+ productIDToOuraDiscountAttribute = map [string ]string {
1616 OuraSizingKitProductID : "oura_sizing_kit_discount_code" ,
1717 OuraRingProductID : "oura_ring_discount_code" ,
1818 }
@@ -75,7 +75,7 @@ func (f *FulfillmentEventProcessor) Process(ctx context.Context, event Fulfillme
7575 deliveredProductID := deliveredProducts .IDs [0 ]
7676 logger = logger .WithField ("orderId" , orderId ).WithField ("productId" , deliveredProductID )
7777
78- attribute , ok := deliveredProductIDToOuraDiscountAttribute [deliveredProductID ]
78+ attribute , ok := productIDToOuraDiscountAttribute [deliveredProductID ]
7979 if ! ok {
8080 logger .Warn ("unable to find discount attribute for delivered product" )
8181 return nil
@@ -85,9 +85,11 @@ func (f *FulfillmentEventProcessor) Process(ctx context.Context, event Fulfillme
8585 "filter" : map [string ]any {
8686 "and" : []any {
8787 map [string ]any {
88- "field" : attribute ,
89- "operator" : "eq" ,
90- "value" : deliveredProducts .DiscountCode ,
88+ "attribute" : map [string ]any {
89+ "field" : attribute ,
90+ "operator" : "eq" ,
91+ "value" : deliveredProducts .DiscountCode ,
92+ },
9193 },
9294 },
9395 },
@@ -111,12 +113,12 @@ func (f *FulfillmentEventProcessor) Process(ctx context.Context, event Fulfillme
111113
112114 switch deliveredProductID {
113115 case OuraSizingKitProductID :
114- if err := f .onSizingKitDelivered (ctx , customers .Identifiers [0 ], event ); err != nil {
116+ if err := f .onSizingKitDelivered (ctx , customers .Identifiers [0 ], event , deliveredProducts . DiscountCode ); err != nil {
115117 logger .WithError (err ).Warn ("unable to send sizing kit delivered event" )
116118 return err
117119 }
118120 case OuraRingProductID :
119- if err := f .onRingDelivered (ctx , customers .Identifiers [0 ], event ); err != nil {
121+ if err := f .onRingDelivered (ctx , customers .Identifiers [0 ], event , deliveredProducts . DiscountCode ); err != nil {
120122 logger .WithError (err ).Warn ("unable to send ring delivered event" )
121123 return err
122124 }
@@ -127,7 +129,7 @@ func (f *FulfillmentEventProcessor) Process(ctx context.Context, event Fulfillme
127129 return nil
128130}
129131
130- func (f * FulfillmentEventProcessor ) onSizingKitDelivered (ctx context.Context , identifiers customerio.Identifiers , event FulfillmentEvent ) error {
132+ func (f * FulfillmentEventProcessor ) onSizingKitDelivered (ctx context.Context , identifiers customerio.Identifiers , event FulfillmentEvent , sizingKitDiscountCode string ) error {
131133 discountCode := RandomDiscountCode ()
132134 err := f .shopifyClient .CreateDiscountCode (ctx , DiscountCodeInput {
133135 Title : OuraRingDiscountCodeTitle ,
@@ -142,18 +144,21 @@ func (f *FulfillmentEventProcessor) onSizingKitDelivered(ctx context.Context, id
142144 Name : customerio .OuraSizingKitDeliveredEventType ,
143145 ID : fmt .Sprintf ("%d" , event .ID ),
144146 Data : customerio.OuraSizingKitDeliveredData {
145- OuraRingDiscountCode : discountCode ,
147+ OuraRingDiscountCode : discountCode ,
148+ OuraSizingKitDiscountCode : sizingKitDiscountCode ,
146149 },
147150 }
148151
149152 return f .customerIOClient .SendEvent (ctx , identifiers .ID , sizingKitDelivered )
150153}
151154
152- func (f * FulfillmentEventProcessor ) onRingDelivered (ctx context.Context , identifiers customerio.Identifiers , event FulfillmentEvent ) error {
155+ func (f * FulfillmentEventProcessor ) onRingDelivered (ctx context.Context , identifiers customerio.Identifiers , event FulfillmentEvent , ringDiscountCode string ) error {
153156 ringDelivered := customerio.Event {
154157 Name : customerio .OuraRingDeliveredEventType ,
155158 ID : fmt .Sprintf ("%d" , event .ID ),
156- Data : customerio.OuraRingDeliveredData {},
159+ Data : customerio.OuraRingDeliveredData {
160+ OuraRingDiscountCode : ringDiscountCode ,
161+ },
157162 }
158163
159164 return f .customerIOClient .SendEvent (ctx , identifiers .ID , ringDelivered )
0 commit comments