Current File : //home/tradevaly/public_html/fresh/lib/provider/coupon_provider.dart |
import 'package:flutter/material.dart';
import 'package:flutter_grocery/data/model/response/base/api_response.dart';
import 'package:flutter_grocery/data/model/response/coupon_model.dart';
import 'package:flutter_grocery/data/repository/coupon_repo.dart';
import 'package:flutter_grocery/helper/api_checker.dart';
class CouponProvider extends ChangeNotifier {
final CouponRepo couponRepo;
CouponProvider({@required this.couponRepo});
List<CouponModel> _couponList;
CouponModel _coupon;
double _discount = 0.0;
String _code = '';
bool _isLoading = false;
CouponModel get coupon => _coupon;
double get discount => _discount;
String get code => _code;
bool get isLoading => _isLoading;
List<CouponModel> get couponList => _couponList;
Future<void> getCouponList(BuildContext context) async {
ApiResponse apiResponse = await couponRepo.getCouponList();
if (apiResponse.response != null && apiResponse.response.statusCode == 200) {
_couponList = [];
apiResponse.response.data.forEach((category) => _couponList.add(CouponModel.fromJson(category)));
} else {
ApiChecker.checkApi(context, apiResponse);
}
notifyListeners();
}
Future<double> applyCoupon(String coupon, double order) async {
_isLoading = true;
notifyListeners();
ApiResponse apiResponse = await couponRepo.applyCoupon(coupon);
if (apiResponse.response != null && apiResponse.response.statusCode == 200) {
_coupon = CouponModel.fromJson(apiResponse.response.data);
_code = _coupon.code;
if (_coupon.minPurchase != null && _coupon.minPurchase <= order) {
if (_coupon.discountType == 'percent') {
if (_coupon.maxDiscount != null && _coupon.maxDiscount != 0) {
_discount = (_coupon.discount * order / 100) < _coupon.maxDiscount ? (_coupon.discount * order / 100) : _coupon.maxDiscount;
} else {
_discount = _coupon.discount * order / 100;
}
} else {
_discount = _coupon.discount;
}
} else {
_discount = 0.0;
}
} else {
print(apiResponse.error.toString());
_discount = 0.0;
}
_isLoading = false;
notifyListeners();
return _discount;
}
void removeCouponData(bool notify) {
_coupon = null;
_isLoading = false;
_discount = 0.0;
_code = '';
if(notify) {
notifyListeners();
}
}
}