diff --git a/pkg/helper.go b/pkg/helper.go index 784aa10..2219186 100644 --- a/pkg/helper.go +++ b/pkg/helper.go @@ -101,4 +101,12 @@ func IsImageAdded(images []string, image string) bool { } } return false +} +func IsVariantsAdded(variants []models.Variant, itemNumber int) bool { + for _, variant := range variants { + if variant.ItemNumber == itemNumber { + return true + } + } + return false } \ No newline at end of file diff --git a/repositories/ParseRepository.go b/repositories/ParseRepository.go index 4bf1a60..9a8c785 100644 --- a/repositories/ParseRepository.go +++ b/repositories/ParseRepository.go @@ -5,6 +5,7 @@ import ( helper "db_service/pkg" "encoding/json" "errors" + "fmt" "net/http" "reflect" "regexp" @@ -287,32 +288,79 @@ func CreateJSONFromModel(model models.TrendyolProductDetailModel) map[string]int variants = append(variants, variant) } } - } } + } + for i := 0; i < len(model.AllVariants); i++ { + singleVariant := model.AllVariants[i] + + // get the first variant for attribute info + fv := variants[0] + + variant := models.Variant{ + AttributeID: fv.AttributeID, // + AttributeName: fv.AttributeName, // Sample: "Beden" + AttributeType: fv.AttributeType, // Sample: "Size" + AttributeValue: singleVariant.Value, + Price: models.Price{ + ProfitMargin: 0, + DiscountedPrice: struct { + Text string "json:\"text\"" + Value float64 "json:\"value\"" + }{ + Text: fmt.Sprintf("%f", singleVariant.Price), + Value: singleVariant.Price, + }, + SellingPrice: struct { + Text string "json:\"text\"" + Value float64 "json:\"value\"" + }{ + Text: fmt.Sprintf("%f", singleVariant.Price), + Value: singleVariant.Price, + }, + OriginalPrice: struct { + Text string "json:\"text\"" + Value float64 "json:\"value\"" + }{ + Text: fmt.Sprintf("%f", singleVariant.Price), + Value: singleVariant.Price, + }, + Currency: singleVariant.Currency, + }, + ItemNumber: singleVariant.ItemNumber, + Sellable: true, + } + + exists := helper.IsVariantsAdded(variants, variant.ItemNumber) + + if !exists { + variants = append(variants, variant) + } } for i := 0; i < len(model.AlternativeVariants); i++ { alternativeVariant := model.AlternativeVariants[i] - //stockType := reflect.TypeOf(alternativeVariant.Stock) - if len(variants) > 0 { // get the first variant for attribute info fv := variants[0] variant := models.Variant{ - AttributeID: fv.AttributeID, - AttributeName: fv.AttributeName, - AttributeType: fv.AttributeType, + AttributeID: fv.AttributeID, // + AttributeName: fv.AttributeName, // Sample: "Beden" + AttributeType: fv.AttributeType, // Sample: "Size" AttributeValue: alternativeVariant.AttributeValue, Price: alternativeVariant.Price, - Sellable: true, - ItemNumber: alternativeVariant.ItemNumber, + ItemNumber: alternativeVariant.ItemNumber, + Sellable: true, + } + exists := helper.IsVariantsAdded(variants, variant.ItemNumber) + + if !exists { + variants = append(variants, variant) } - variants = append(variants, variant) } }