Manos Chorianopoulos

fix couponSets categorization

This diff is collapsed. Click to expand it.
...@@ -234,6 +234,30 @@ import UIKit ...@@ -234,6 +234,30 @@ import UIKit
234 var categorySections: [SectionModel] = [] 234 var categorySections: [SectionModel] = []
235 var processedCouponSets: Set<String> = [] // Track processed coupon sets to avoid duplicates 235 var processedCouponSets: Set<String> = [] // Track processed coupon sets to avoid duplicates
236 236
237 + // Extract promoted couponsets for "Top offers" section
238 + let promotedCouponSets = couponSets.filter { $0._promoted }
239 + print("🌟 [MyRewardsViewController] Found \(promotedCouponSets.count) promoted couponsets")
240 +
241 + // Create "Top offers" section if we have promoted couponsets
242 + if !promotedCouponSets.isEmpty {
243 + // Bind merchant data to promoted couponsets
244 + for couponSet in promotedCouponSets {
245 + if let merchant = merchants.first(where: { $0._uuid == couponSet._merchant_uuid }) {
246 + couponSet._merchant = merchant
247 + print(" 🔗 Bound merchant '\(merchant._name)' to promoted coupon set '\(couponSet._name)'")
248 + }
249 + }
250 +
251 + let topOffersSection = SectionModel(
252 + sectionType: .myRewardsHorizontalCouponsets,
253 + title: "Top offers",
254 + items: promotedCouponSets,
255 + itemType: .couponSets
256 + )
257 + categorySections.append(topOffersSection)
258 + print(" ✅ Created 'Top offers' section with \(promotedCouponSets.count) items")
259 + }
260 +
237 print("🔄 [MyRewardsViewController] Processing categories for filtering...") 261 print("🔄 [MyRewardsViewController] Processing categories for filtering...")
238 262
239 for category in merchantCategories { 263 for category in merchantCategories {
...@@ -283,6 +307,8 @@ import UIKit ...@@ -283,6 +307,8 @@ import UIKit
283 } 307 }
284 } 308 }
285 309
310 + // COMMENTED OUT: Don't show unmatched couponsets - only show categorized ones
311 + /*
286 // Handle any remaining unmatched coupon sets 312 // Handle any remaining unmatched coupon sets
287 let unmatchedCouponSets = couponSets.filter { couponSet in 313 let unmatchedCouponSets = couponSets.filter { couponSet in
288 !processedCouponSets.contains(couponSet._uuid) 314 !processedCouponSets.contains(couponSet._uuid)
...@@ -307,16 +333,18 @@ import UIKit ...@@ -307,16 +333,18 @@ import UIKit
307 ) 333 )
308 categorySections.append(unmatchedSection) 334 categorySections.append(unmatchedSection)
309 } 335 }
336 + */
310 337
311 - // Sort sections by title for consistent ordering 338 + // Sort sections by title for consistent ordering, but keep "Top offers" at the top
312 categorySections.sort { section1, section2 in 339 categorySections.sort { section1, section2 in
313 let title1 = section1.title ?? "" 340 let title1 = section1.title ?? ""
314 let title2 = section2.title ?? "" 341 let title2 = section2.title ?? ""
315 342
316 - // Put "Άλλες Προσφορές" at the end 343 + // Put "Top offers" at the beginning
317 - if title1 == "Άλλες Προσφορές" { return false } 344 + if title1 == "Top offers" { return true }
318 - if title2 == "Άλλες Προσφορές" { return true } 345 + if title2 == "Top offers" { return false }
319 346
347 + // All other sections sorted alphabetically
320 return title1.localizedCaseInsensitiveCompare(title2) == .orderedAscending 348 return title1.localizedCaseInsensitiveCompare(title2) == .orderedAscending
321 } 349 }
322 350
......