import 'dart:io'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_entity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_state.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/commonDataManage.dart'; import 'package:url_launcher/url_launcher.dart'; class SendEmailNotificationLogic extends BaseGetXController { final SendEmailNotificationState state = SendEmailNotificationState(); onInit() async { super.onInit(); getKeyNoticeTemplate(); } //获取电子钥匙通知模板 渠道:1短信 2邮箱 void getKeyNoticeTemplate() async { final SendEmailNotificationEntity entity; if (state.unlockType.value == 1) { entity = await ApiRepository.to.getKeyNoticeTemplate( lockId: CommonDataManage().currentKeyInfo.lockId ?? 0, keyId: state.getKeyId.value, channelType: state.channelType.value); } else { entity = await ApiRepository.to.getPwdNoticeTemplate( lockId: CommonDataManage().currentKeyInfo.lockId ?? 0, keyboardPwdId: state.getKeyId.value, channelType: state.channelType.value); } if (entity.errorCode!.codeIsSuccessful) { state.emailTemplateList.value = entity.data?.list ?? []; state.currentNotifyItem.value = state.emailTemplateList.first; state.templateContentController.text = state.currentNotifyItem.value.template ?? ''; state.emailTemplateList.refresh(); state.currentNotifyItem.refresh(); } } //发送短信、邮件通知 channelType--1短信 2邮件 opisAPKFileName Future keyNoticeSubmitRequest() async { if (state.receiverController.text.isEmpty && state.getReceiver.value.isEmpty) { showToast('请输入接收者'.tr); return; } final SendEmailNotificationEntity entity; if (state.unlockType.value == 1) { entity = await ApiRepository.to.keyNoticeSubmit( receiverName: state.getReceiver.value.isEmpty ? state.receiverController.text : state.getReceiver.value, lockId: CommonDataManage().currentKeyInfo.lockId ?? 0, keyId: state.getKeyId.value, channelType: state.channelType.value, openDoorType: state.unlockType.value, templateType: state.currentNotifyItem.value.type ?? '', countryCode: state.countryCode.value, ); } else { entity = await ApiRepository.to.pwdNoticeSubmit( receiverName: state.getReceiver.value.isEmpty ? state.receiverController.text : state.getReceiver.value, lockId: CommonDataManage().currentKeyInfo.lockId ?? 0, keyboardPwdId: state.getKeyId.value, channelType: state.channelType.value, openDoorType: state.unlockType.value, templateType: state.currentNotifyItem.value.type ?? '', countryCode: state.countryCode.value, ); } if (entity.errorCode!.codeIsSuccessful) { showToast('发送成功'.tr); Get.back(); } } //发送邮件、短信 Future sendPersonalSMSOrEmail() async { if (state.receiverController.text.isEmpty && state.getReceiver.value.isEmpty) { showToast('请输入接收者账号'.tr); return; } if (state.channelType.value == 1) { Uri smsUri; //短信 final String phoneNumber = state.getReceiver.value.isEmpty ? state.receiverController.text : state.getReceiver.value; final String message = state.templateContentController.text; if (Platform.isAndroid) { smsUri = Uri( scheme: 'sms', path: phoneNumber, query: 'body=${Uri.encodeComponent(message)}', ); } else { smsUri = Uri.parse('sms:$phoneNumber&body=${Uri.encodeComponent(message)}'); } if (await canLaunchUrl(smsUri)) { await launchUrl(smsUri); } else { throw 'Could not launch $smsUri'; } } else if (state.channelType.value == 2) { //邮箱 final Uri emailUri = Uri( scheme: 'mailto', path: state.getReceiver.value.isEmpty ? state.receiverController.text : state.getReceiver.value, queryParameters: { 'subject': state.currentNotifyItem.value.name ?? '', 'body': state.templateContentController.text, }, ); if (await canLaunchUrl(emailUri)) { await launchUrl(emailUri); } else { throw 'Could not launch $emailUri'; } } } }