131 lines
4.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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';
}
}
}
}