WT1.1.0+40 Premium feature settings
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import 'dart:async';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:aitrainer_app/model/cache.dart';
|
||||
import 'package:aitrainer_app/model/product.dart';
|
||||
import 'package:aitrainer_app/model/product_test.dart';
|
||||
import 'package:aitrainer_app/service/logging.dart';
|
||||
import 'package:aitrainer_app/service/product_test_service.dart';
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
part 'sales_event.dart';
|
||||
part 'sales_state.dart';
|
||||
|
||||
class SalesBloc extends Bloc<SalesEvent, SalesState> with Logging {
|
||||
List<ProductTest> tests = List();
|
||||
List<Product> product2Display = List();
|
||||
int productSet = -1;
|
||||
SalesBloc() : super(SalesInitial());
|
||||
|
||||
@override
|
||||
Stream<SalesState> mapEventToState(
|
||||
SalesEvent event,
|
||||
) async* {
|
||||
try {
|
||||
if (event is SalesLoad) {
|
||||
yield SalesLoading();
|
||||
this.getProductSet();
|
||||
yield SalesReady();
|
||||
} else if (event is SalesPurchase) {
|
||||
final int productId = event.productId;
|
||||
trace("Requesting purchase for" + productId.toString());
|
||||
//PlatformPurchaseApi().requestPurchase(null);
|
||||
}
|
||||
} on Exception catch (ex) {
|
||||
yield SalesError(message: ex.toString());
|
||||
}
|
||||
}
|
||||
|
||||
void getProductSet() {
|
||||
int productId = 0;
|
||||
this.tests = Cache().productTests;
|
||||
|
||||
if (tests.isEmpty) {
|
||||
var rand = Random.secure();
|
||||
productSet = rand.nextInt(5) + 1;
|
||||
} else {
|
||||
trace("Previous ProductTest: " + tests[0].toJson().toString());
|
||||
productId = tests[0].productId;
|
||||
for (var elem in Cache().products) {
|
||||
Product product = elem as Product;
|
||||
if (product.productId == productId) {
|
||||
productSet = product.productSet;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ProductTest productTest = ProductTest();
|
||||
trace("ProductSet: " + productSet.toString());
|
||||
for (var elem in Cache().products) {
|
||||
Product product = elem as Product;
|
||||
if (product.productSet == productSet) {
|
||||
productId = product.productId;
|
||||
product2Display.add(product);
|
||||
}
|
||||
}
|
||||
|
||||
product2Display.sort((a, b) {
|
||||
return a.sort < b.sort ? a.sort : b.sort;
|
||||
});
|
||||
|
||||
productTest.productId = productId;
|
||||
productTest.customerId = Cache().userLoggedIn.customerId;
|
||||
productTest.dateView = DateTime.now();
|
||||
ProductTestApi().saveProductTest(productTest);
|
||||
Cache().productTests.add(productTest);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
part of 'sales_bloc.dart';
|
||||
|
||||
abstract class SalesEvent extends Equatable {
|
||||
const SalesEvent();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class SalesLoad extends SalesEvent {
|
||||
const SalesLoad();
|
||||
}
|
||||
|
||||
class SalesPurchase extends SalesEvent {
|
||||
final int productId;
|
||||
const SalesPurchase({this.productId});
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
part of 'sales_bloc.dart';
|
||||
|
||||
abstract class SalesState extends Equatable {
|
||||
const SalesState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class SalesInitial extends SalesState {
|
||||
const SalesInitial();
|
||||
}
|
||||
|
||||
class SalesLoading extends SalesState {
|
||||
const SalesLoading();
|
||||
}
|
||||
|
||||
class SalesReady extends SalesState {
|
||||
const SalesReady();
|
||||
}
|
||||
|
||||
class SalesError extends SalesState {
|
||||
final String message;
|
||||
const SalesError({this.message});
|
||||
|
||||
@override
|
||||
List<Object> get props => [message];
|
||||
}
|
||||
Reference in New Issue
Block a user