import 'package:intl/intl.dart'; import 'package:aitrainer_app/model/cache.dart'; import 'package:aitrainer_app/model/mautic.dart'; import 'package:aitrainer_app/repository/customer_repository.dart'; import 'package:aitrainer_app/service/mautic.dart'; import 'package:aitrainer_app/util/app_language.dart'; class MauticRepository { final CustomerRepository customerRepository; const MauticRepository({required this.customerRepository}); Future sendMauticSubscription() async { Mautic mautic = Mautic(); mautic.formId = 2; mautic.databaseId = Cache().userLoggedIn!.customerId!; mautic.firstname = customerRepository.customer!.firstname == null ? "" : customerRepository.customer!.firstname!; mautic.lastname = customerRepository.customer!.name == null ? "" : customerRepository.customer!.name!; mautic.email = customerRepository.customer!.email == null ? "" : customerRepository.customer!.email!; if (mautic.email == null || mautic.email!.contains("privaterelay.appleid.com")) { return; } mautic.fitnessLevel = customerRepository.customer!.fitnessLevel == null ? "" : customerRepository.customer!.fitnessLevel!; mautic.goal = customerRepository.customer!.goal == null ? "" : customerRepository.customer!.goal!; mautic.subscriptionDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()); mautic.language = AppLanguage().appLocal.languageCode; await MauticApi().sendMauticForm(mautic); customerRepository.customer!.syncedDate = DateTime.now(); await customerRepository.saveCustomer(); } Future sendMauticDataChange() async { Mautic mautic = Mautic(); mautic.formId = 3; mautic.databaseId = Cache().userLoggedIn!.customerId!; mautic.firstname = customerRepository.customer!.firstname == null ? "" : customerRepository.customer!.firstname!; mautic.lastname = customerRepository.customer!.name == null ? "" : customerRepository.customer!.name!; mautic.email = customerRepository.customer!.email == null ? "" : customerRepository.customer!.email!; if (mautic.email == null || mautic.email!.contains("privaterelay.appleid.com")) { return; } mautic.fitnessLevel = customerRepository.customer!.fitnessLevel == null ? "" : customerRepository.customer!.fitnessLevel!; mautic.goal = customerRepository.customer!.goal == null ? "" : customerRepository.customer!.goal!; mautic.language = AppLanguage().appLocal.languageCode; await MauticApi().sendMauticForm(mautic); } Future sendMauticPurchase() async { Mautic mautic = Mautic(); mautic.formId = 4; mautic.firstname = customerRepository.customer!.firstname == null ? "" : customerRepository.customer!.firstname!; mautic.lastname = customerRepository.customer!.name == null ? "" : customerRepository.customer!.name!; mautic.email = customerRepository.customer!.email == null ? "" : customerRepository.customer!.email!; if (mautic.email == null || mautic.email!.contains("privaterelay.appleid.com")) { return; } mautic.purchaseDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()); await MauticApi().sendMauticForm(mautic); } Future sendMauticExercise() async { Mautic mautic = Mautic(); mautic.formId = 5; mautic.firstname = customerRepository.customer!.firstname == null ? "" : customerRepository.customer!.firstname!; mautic.lastname = customerRepository.customer!.name == null ? "" : customerRepository.customer!.name!; mautic.email = customerRepository.customer!.email == null ? "" : customerRepository.customer!.email!; if (mautic.email == null || mautic.email!.contains("privaterelay.appleid.com")) { return; } mautic.exerciseDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()); mautic.databaseId = Cache().userLoggedIn!.customerId!; await MauticApi().sendMauticForm(mautic); } Future sendMauticTrial() async { Mautic mautic = Mautic(); mautic.formId = 6; mautic.email = customerRepository.customer!.email == null ? "" : customerRepository.customer!.email!; if (mautic.email == null || mautic.email!.contains("privaterelay.appleid.com")) { return; } mautic.trialDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()); mautic.databaseId = Cache().userLoggedIn!.customerId!; await MauticApi().sendMauticForm(mautic); } }