WT1.1.0+40 Premium feature settings

This commit is contained in:
bossanyit
2020-12-28 14:39:54 +01:00
parent 5c7a3d67e8
commit 9755cc764a
84 changed files with 2069 additions and 1192 deletions
+79
View File
@@ -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);
}
}
+17
View File
@@ -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});
}
+28
View File
@@ -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];
}