diff --git a/svc/queries/productstockquery_by_attributes.go b/svc/queries/productstockquery_by_attributes.go index f4aeeaa..7b58e76 100644 --- a/svc/queries/productstockquery_by_attributes.go +++ b/svc/queries/productstockquery_by_attributes.go @@ -13,56 +13,6 @@ DECLARE @FitList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p7)), ''); DECLARE @DropList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p8)), ''); DECLARE @BedenList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p9)), ''); -DECLARE @SelUrunAltGrubu TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelRenk TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelRenk2 TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelUrunIcerigi TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelFit TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelDrop TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelBeden TABLE (Value NVARCHAR(100) PRIMARY KEY); - -IF @UrunAltGrubuList IS NOT NULL - INSERT INTO @SelUrunAltGrubu(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@UrunAltGrubuList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @RenkList IS NOT NULL - INSERT INTO @SelRenk(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@RenkList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @Renk2List IS NOT NULL - INSERT INTO @SelRenk2(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@Renk2List, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @UrunIcerigiList IS NOT NULL - INSERT INTO @SelUrunIcerigi(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@UrunIcerigiList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @FitList IS NOT NULL - INSERT INTO @SelFit(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@FitList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @DropList IS NOT NULL - INSERT INTO @SelDrop(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@DropList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @BedenList IS NOT NULL - INSERT INTO @SelBeden(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@BedenList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - CREATE TABLE #AttrBase ( ProductCode NVARCHAR(50) NOT NULL, @@ -89,10 +39,10 @@ BEGIN WHERE LEN(ProductCode) = 13 AND (@Kategori IS NULL OR ProductAtt44Desc = @Kategori) AND (@UrunAnaGrubu IS NULL OR ProductAtt01Desc = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = ProductAtt02Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = ProductAtt41Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = ProductAtt38Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = ProductAtt11Desc)); + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt02Desc,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt41Desc,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt38Desc,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt11Desc,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0); END ELSE BEGIN @@ -109,10 +59,10 @@ BEGIN WHERE LEN(ProductCode) = 13 AND (@Kategori IS NULL OR ProductAtt44Desc = @Kategori) AND (@UrunAnaGrubu IS NULL OR ProductAtt01Desc = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = ProductAtt02Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = ProductAtt41Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = ProductAtt38Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = ProductAtt11Desc)); + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt02Desc,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt41Desc,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt38Desc,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt11Desc,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0); END; IF @Kategori IS NULL OR @UrunAnaGrubu IS NULL @@ -234,12 +184,12 @@ FROM ( WHERE (CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.Renk END) <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = AB.UrunIcerigi)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = AB.Fit)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = AB.DropVal)) - AND (NOT EXISTS (SELECT 1 FROM @SelRenk2) OR EXISTS (SELECT 1 FROM @SelRenk2 S WHERE S.Value = A.Renk2)) - AND (NOT EXISTS (SELECT 1 FROM @SelBeden) OR EXISTS (SELECT 1 FROM @SelBeden S WHERE S.Value = A.Beden)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunIcerigi,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.Fit,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.DropVal,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0) + AND (@Renk2List IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(A.Renk2,'') + NCHAR(31), NCHAR(31) + @Renk2List + NCHAR(31)) > 0) + AND (@BedenList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(A.Beden,'') + NCHAR(31), NCHAR(31) + @BedenList + NCHAR(31)) > 0) ) X UNION ALL SELECT 'renk2', X.FieldValue @@ -250,12 +200,12 @@ FROM ( WHERE A.Renk2 <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = AB.UrunIcerigi)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = AB.Fit)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = AB.DropVal)) - AND (NOT EXISTS (SELECT 1 FROM @SelRenk) OR EXISTS (SELECT 1 FROM @SelRenk S WHERE S.Value = (CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.Renk END))) - AND (NOT EXISTS (SELECT 1 FROM @SelBeden) OR EXISTS (SELECT 1 FROM @SelBeden S WHERE S.Value = A.Beden)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunIcerigi,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.Fit,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.DropVal,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0) + AND (@RenkList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL((CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.Renk END),'') + NCHAR(31), NCHAR(31) + @RenkList + NCHAR(31)) > 0) + AND (@BedenList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(A.Beden,'') + NCHAR(31), NCHAR(31) + @BedenList + NCHAR(31)) > 0) ) X UNION ALL SELECT 'urun_icerigi', X.FieldValue @@ -265,7 +215,7 @@ FROM ( WHERE AB.UrunIcerigi <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) ) X UNION ALL SELECT 'fit', X.FieldValue @@ -275,8 +225,8 @@ FROM ( WHERE AB.Fit <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = AB.UrunIcerigi)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunIcerigi,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) ) X UNION ALL SELECT 'drop', X.FieldValue @@ -286,9 +236,9 @@ FROM ( WHERE AB.DropVal <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = AB.UrunIcerigi)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = AB.Fit)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunIcerigi,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.Fit,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) ) X UNION ALL SELECT 'beden', X.FieldValue @@ -299,12 +249,12 @@ FROM ( WHERE A.Beden <> '' AND (@Kategori IS NULL OR AB.Kategori = @Kategori) AND (@UrunAnaGrubu IS NULL OR AB.UrunAnaGrubu = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = AB.UrunAltGrubu)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = AB.UrunIcerigi)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = AB.Fit)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = AB.DropVal)) - AND (NOT EXISTS (SELECT 1 FROM @SelRenk) OR EXISTS (SELECT 1 FROM @SelRenk S WHERE S.Value = (CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.Renk END))) - AND (NOT EXISTS (SELECT 1 FROM @SelRenk2) OR EXISTS (SELECT 1 FROM @SelRenk2 S WHERE S.Value = A.Renk2)) + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunAltGrubu,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.UrunIcerigi,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.Fit,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(AB.DropVal,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0) + AND (@RenkList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL((CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.Renk END),'') + NCHAR(31), NCHAR(31) + @RenkList + NCHAR(31)) > 0) + AND (@Renk2List IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(A.Renk2,'') + NCHAR(31), NCHAR(31) + @Renk2List + NCHAR(31)) > 0) ) X OPTION (RECOMPILE); ` @@ -322,56 +272,6 @@ DECLARE @FitList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p7)), ''); DECLARE @DropList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p8)), ''); DECLARE @BedenList NVARCHAR(MAX) = NULLIF(LTRIM(RTRIM(@p9)), ''); -DECLARE @SelUrunAltGrubu TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelRenk TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelRenk2 TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelUrunIcerigi TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelFit TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelDrop TABLE (Value NVARCHAR(100) PRIMARY KEY); -DECLARE @SelBeden TABLE (Value NVARCHAR(100) PRIMARY KEY); - -IF @UrunAltGrubuList IS NOT NULL - INSERT INTO @SelUrunAltGrubu(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@UrunAltGrubuList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @RenkList IS NOT NULL - INSERT INTO @SelRenk(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@RenkList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @Renk2List IS NOT NULL - INSERT INTO @SelRenk2(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@Renk2List, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @UrunIcerigiList IS NOT NULL - INSERT INTO @SelUrunIcerigi(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@UrunIcerigiList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @FitList IS NOT NULL - INSERT INTO @SelFit(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@FitList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @DropList IS NOT NULL - INSERT INTO @SelDrop(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@DropList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - -IF @BedenList IS NOT NULL - INSERT INTO @SelBeden(Value) - SELECT DISTINCT LTRIM(RTRIM(value)) - FROM STRING_SPLIT(@BedenList, NCHAR(31)) - WHERE LTRIM(RTRIM(value)) <> ''; - CREATE TABLE #AttrFiltered ( ProductCode NVARCHAR(50) NOT NULL, @@ -482,10 +382,10 @@ BEGIN WHERE LEN(C.ProductCode) = 13 AND (@Kategori IS NULL OR C.ProductAtt44Desc = @Kategori) AND (@UrunAnaGrubu IS NULL OR C.ProductAtt01Desc = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = C.ProductAtt02Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = C.ProductAtt41Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = C.ProductAtt38Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = C.ProductAtt11Desc)); + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(C.ProductAtt02Desc,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(C.ProductAtt41Desc,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(C.ProductAtt38Desc,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(C.ProductAtt11Desc,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0); END ELSE BEGIN @@ -561,10 +461,10 @@ BEGIN WHERE LEN(ProductCode) = 13 AND (@Kategori IS NULL OR ProductAtt44Desc = @Kategori) AND (@UrunAnaGrubu IS NULL OR ProductAtt01Desc = @UrunAnaGrubu) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunAltGrubu) OR EXISTS (SELECT 1 FROM @SelUrunAltGrubu S WHERE S.Value = ProductAtt02Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelUrunIcerigi) OR EXISTS (SELECT 1 FROM @SelUrunIcerigi S WHERE S.Value = ProductAtt41Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelFit) OR EXISTS (SELECT 1 FROM @SelFit S WHERE S.Value = ProductAtt38Desc)) - AND (NOT EXISTS (SELECT 1 FROM @SelDrop) OR EXISTS (SELECT 1 FROM @SelDrop S WHERE S.Value = ProductAtt11Desc)); + AND (@UrunAltGrubuList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt02Desc,'') + NCHAR(31), NCHAR(31) + @UrunAltGrubuList + NCHAR(31)) > 0) + AND (@UrunIcerigiList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt41Desc,'') + NCHAR(31), NCHAR(31) + @UrunIcerigiList + NCHAR(31)) > 0) + AND (@FitList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt38Desc,'') + NCHAR(31), NCHAR(31) + @FitList + NCHAR(31)) > 0) + AND (@DropList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(ProductAtt11Desc,'') + NCHAR(31), NCHAR(31) + @DropList + NCHAR(31)) > 0); END; CREATE CLUSTERED INDEX IX_AttrFiltered_ProductCode ON #AttrFiltered(ProductCode); @@ -704,17 +604,17 @@ Grouped AS A.ItemDim2Code FROM Avail A INNER JOIN #AttrFiltered AF ON AF.ProductCode = A.ItemCode - WHERE (NOT EXISTS (SELECT 1 FROM @SelRenk) OR EXISTS (SELECT 1 FROM @SelRenk S WHERE S.Value = (CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.ColorCode END))) - AND (NOT EXISTS (SELECT 1 FROM @SelRenk2) OR EXISTS (SELECT 1 FROM @SelRenk2 S WHERE S.Value = A.ItemDim2Code)) + WHERE (@RenkList IS NULL OR CHARINDEX(NCHAR(31) + ISNULL((CASE WHEN A.RenkAciklama <> '' THEN A.RenkAciklama ELSE A.ColorCode END),'') + NCHAR(31), NCHAR(31) + @RenkList + NCHAR(31)) > 0) + AND (@Renk2List IS NULL OR CHARINDEX(NCHAR(31) + ISNULL(A.ItemDim2Code,'') + NCHAR(31), NCHAR(31) + @Renk2List + NCHAR(31)) > 0) AND ( - NOT EXISTS (SELECT 1 FROM @SelBeden) + @BedenList IS NULL OR EXISTS ( SELECT 1 FROM Avail AB WHERE AB.ItemCode = A.ItemCode AND AB.ColorCode = A.ColorCode AND ISNULL(AB.ItemDim2Code, '') = ISNULL(A.ItemDim2Code, '') - AND EXISTS (SELECT 1 FROM @SelBeden SB WHERE SB.Value = AB.ItemDim1Code) + AND CHARINDEX(NCHAR(31) + ISNULL(AB.ItemDim1Code,'') + NCHAR(31), NCHAR(31) + @BedenList + NCHAR(31)) > 0 ) ) GROUP BY A.ItemCode, A.ColorCode, A.ItemDim2Code diff --git a/svc/routes/product_images.go b/svc/routes/product_images.go index b4f366e..61d3f77 100644 --- a/svc/routes/product_images.go +++ b/svc/routes/product_images.go @@ -209,11 +209,6 @@ WHERE typ='img' } query += ` ORDER BY - CASE - WHEN COALESCE(file_name,'') ~* 'gallery[-_ ]*1' THEN 0 - WHEN COALESCE(file_name,'') ~* '\(1\)(\.[A-Za-z0-9]+)?$' THEN 0 - ELSE 1 - END, COALESCE(sort_order,999999), zlins_dttm DESC, id DESC` diff --git a/ui/src/pages/ProductStockByAttributes.vue b/ui/src/pages/ProductStockByAttributes.vue index c7cab18..f1c7c43 100644 --- a/ui/src/pages/ProductStockByAttributes.vue +++ b/ui/src/pages/ProductStockByAttributes.vue @@ -660,25 +660,19 @@ function resolveProductImageUrl(item) { return { contentUrl, publicUrl, thumbUrl, fullUrl } } -function extractImageOrder(fileName, fallbackIndex) { - const name = String(fileName || '').trim() - const mg = name.match(/gallery[-_\s]?(\d+)/i) - if (mg) return Number(mg[1] || 999999) - const m = name.match(/\((\d+)\)(?=\.[a-z0-9]+$)/i) - if (m) return Number(m[1] || 999999) - const m2 = name.match(/[-_ ](\d+)(?=\.[a-z0-9]+$)/i) - if (m2) return Number(m2[1] || 999999) - return 1000000 + Number(fallbackIndex || 0) +function sortImagesForDisplay(list) { + // #gallery-1 mantigi icin frontend render sirasini (API'den gelen sira) koruyoruz. + return Array.isArray(list) ? [...list] : [] } -function sortImagesForDisplay(list) { - return (Array.isArray(list) ? list : []) - .map((item, idx) => ({ item, idx, order: extractImageOrder(item?.file_name || item?.FileName || '', idx) })) - .sort((a, b) => { - if (a.order !== b.order) return a.order - b.order - return a.idx - b.idx - }) - .map((x) => x.item) +function parseGalleryHashIndex() { + if (typeof window === 'undefined') return 0 + const hash = String(window.location?.hash || '').trim() + const m = hash.match(/^#gallery-(\d+)$/i) + if (!m) return 0 + const n = Number(m[1] || 1) + if (!Number.isFinite(n) || n < 1) return 0 + return n - 1 } async function resolveProductImageUrlForCarousel(item) { @@ -1336,7 +1330,8 @@ async function openProductCard(grp1, grp2) { } productCardImages.value = uniqueImages - productCardSlide.value = 0 + const hashIndex = parseGalleryHashIndex() + productCardSlide.value = Math.min(Math.max(hashIndex, 0), Math.max(uniqueImages.length - 1, 0)) productCardData.value = { productCode, colorCode, diff --git a/ui/src/pages/ProductStockQuery.vue b/ui/src/pages/ProductStockQuery.vue index b73fbf2..c4b1798 100644 --- a/ui/src/pages/ProductStockQuery.vue +++ b/ui/src/pages/ProductStockQuery.vue @@ -639,23 +639,19 @@ function resolveProductImageUrl(item) { return { contentUrl, publicUrl, thumbUrl, fullUrl } } -function extractImageOrder(fileName, fallbackIndex) { - const name = String(fileName || '').trim() - const m = name.match(/\((\d+)\)(?=\.[a-z0-9]+$)/i) - if (m) return Number(m[1] || 999999) - const m2 = name.match(/[-_ ](\d+)(?=\.[a-z0-9]+$)/i) - if (m2) return Number(m2[1] || 999999) - return 1000000 + Number(fallbackIndex || 0) +function sortImagesForDisplay(list) { + // #gallery-1 mantigi icin frontend render sirasini (API'den gelen sira) koruyoruz. + return Array.isArray(list) ? [...list] : [] } -function sortImagesForDisplay(list) { - return (Array.isArray(list) ? list : []) - .map((item, idx) => ({ item, idx, order: extractImageOrder(item?.file_name || item?.FileName || '', idx) })) - .sort((a, b) => { - if (a.order !== b.order) return a.order - b.order - return a.idx - b.idx - }) - .map((x) => x.item) +function parseGalleryHashIndex() { + if (typeof window === 'undefined') return 0 + const hash = String(window.location?.hash || '').trim() + const m = hash.match(/^#gallery-(\d+)$/i) + if (!m) return 0 + const n = Number(m[1] || 1) + if (!Number.isFinite(n) || n < 1) return 0 + return n - 1 } async function resolveProductImageUrlForCarousel(item) { @@ -1144,7 +1140,8 @@ async function openProductCard(grp1, grp2) { } productCardImages.value = uniqueImages - productCardSlide.value = 0 + const hashIndex = parseGalleryHashIndex() + productCardSlide.value = Math.min(Math.max(hashIndex, 0), Math.max(uniqueImages.length - 1, 0)) productCardData.value = { productCode, colorCode,