93 lines
3.3 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 =
await ApiRepository.to.getKeyNoticeTemplate(
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
keyId: 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('请输入接收者');
return;
}
final SendEmailNotificationEntity 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: 1,
templateType: state.currentNotifyItem.value.type ?? '',
);
if (entity.errorCode!.codeIsSuccessful) {
showToast('发送成功');
Get.back();
}
}
Future<void> sendPersonalSMSOrEmail() async {
if (state.channelType.value == 1) {
//短信
final String phoneNumber = state.getReceiver.value.isEmpty
? state.receiverController.text
: state.getReceiver.value;
final String message = state.templateContentController.text;
final Uri 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';
}
}
}
}