131 lines
4.6 KiB
Dart
131 lines
4.6 KiB
Dart
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();
|
||
|
||
//获取电子钥匙通知模板 渠道:1短信 2邮箱
|
||
Future<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 ?? <EmailNotificationItem>[];
|
||
state.currentNotifyItem.value = state.emailTemplateList.first;
|
||
state.templateContentController.text =
|
||
state.currentNotifyItem.value.template ?? '';
|
||
state.emailTemplateList.refresh();
|
||
state.currentNotifyItem.refresh();
|
||
}
|
||
}
|
||
|
||
//发送短信、邮件通知 channelType--1短信 2邮件 opisAPKFileName
|
||
Future<void> 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<void> 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: <String, String>{
|
||
'subject': state.currentNotifyItem.value.name ?? '',
|
||
'body': state.templateContentController.text,
|
||
},
|
||
);
|
||
|
||
if (await canLaunchUrl(emailUri)) {
|
||
await launchUrl(emailUri);
|
||
} else {
|
||
throw 'Could not launch $emailUri';
|
||
}
|
||
}
|
||
}
|
||
}
|