import 'dart:convert'; import 'package:http/http.dart' as http; import '../models/coupon.dart'; import 'woocommerce_service.dart'; class CouponService { /// Validiert einen Gutschein-Code Future validateCoupon(String code) async { try { final queryParams = { 'code': code, 'status': 'publish', 'consumer_key': WooCommerceService.consumerKey, 'consumer_secret': WooCommerceService.consumerSecret, }; final uri = Uri.parse('${WooCommerceService.baseUrl}/wp-json/wc/v3/coupons').replace( queryParameters: queryParams, ); final response = await http.get(uri); if (response.statusCode == 200) { final List data = json.decode(response.body); if (data.isNotEmpty) { final couponData = data[0]; return Coupon( code: couponData['code'] ?? code, description: couponData['description'], discountType: couponData['discount_type'] ?? 'fixed_cart', amount: couponData['amount'] ?? '0', isValid: true, ); } else { return Coupon( code: code, discountType: 'fixed_cart', amount: '0', isValid: false, errorMessage: 'Gutschein-Code nicht gefunden', ); } } else { return Coupon( code: code, discountType: 'fixed_cart', amount: '0', isValid: false, errorMessage: 'Fehler beim Validieren des Gutscheins', ); } } catch (e) { return Coupon( code: code, discountType: 'fixed_cart', amount: '0', isValid: false, errorMessage: 'Fehler: $e', ); } } /// Berechnet den Rabatt für einen Warenkorb double calculateDiscount(Coupon coupon, double cartTotal) { if (!coupon.isValid) return 0.0; final amount = double.tryParse(coupon.amount) ?? 0.0; switch (coupon.discountType) { case 'percent': case 'percent_product': return (cartTotal * amount) / 100; case 'fixed_cart': case 'fixed_product': return amount; default: return 0.0; } } }