You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
uco-mobile-poc/lib/app/modules/user_activity/controllers/user_activity_controller.dart

79 lines
2.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import '../../../core/config/server_response.dart';
import '../../../core/constants/translation_keys.dart';
import '../../../core/data/repositories/app_repositories.dart';
import '../../../core/utils/logs_utils.dart';
import '../../../custom_widgets/custom_toasty.dart';
import '../../../custom_widgets/date_picker.dart';
import '../../../models/UserActivity.dart';
import '../../../models/UserActivityResponseModel.dart';
class UserActivityController extends GetxController {
RxBool isLoading = true.obs;
final dateFormat = DateFormat('yyyy-MM-dd');
late BuildContext context;
RxString fromDate = "----:--:--".obs;
RxString toDate = "----:--:--".obs;
RxList<UserActivity> userActivities = RxList.empty();
final AppRepositories repository = Get.find<AppRepositories>();
/// Method for fetch User Activity Data
void fetchUserActivityData() async {
ServerResponse userActivityResponse =
await repository.fetchUserActivity(fromDate.value, toDate.value);
dp("msg user activity--------show data", userActivityResponse.toString());
dp("msg user activity--------show data", userActivityResponse.runtimeType);
UserActivityResponseModel transactionsHistoryResponse =
UserActivityResponseModel.fromMap(userActivityResponse.response);
if (userActivityResponse.isError) {
Toasty.error(
TranslationKeys.makeTranslation(userActivityResponse.errorMsg));
isLoading.value = false;
return;
}
userActivities.assignAll(transactionsHistoryResponse.userActivity);
isLoading.value = false;
dp("User activity length", userActivities.length);
dp("User activity length", userActivities.toString());
update();
return;
}
@override
Future<void> onInit() async {
super.onInit();
fromDate.value =
dateFormat.format(DateTime.now().subtract(const Duration(days: 30)));
toDate.value = dateFormat.format(DateTime.now());
fetchUserActivityData();
}
void selectFromDate() async {
DateTime? fromDateTime = await DatePicker.showDatePicker(context);
if (fromDateTime != null) {
fromDate.value = dateFormat.format(fromDateTime);
toDate.value = "----:--:--";
}
}
void selectToDate() async {
if (fromDate.value == "----:--:--") {
Toasty.error(TranslationKeys.makeTranslation(
TranslationKeys.textSelectFromDateAndProceed));
return;
}
DateTime? toDateTime = await DatePicker.showDatePicker(context);
if (toDateTime != null) {
toDate.value = dateFormat.format(toDateTime);
fetchUserActivityData();
}
}
}