using CommunityToolkit.Mvvm.ComponentModel; using ivf_tl_Entity.Entity.Alarm; using ivf_tl_Entity.Entity.Mark; using ivf_tl_Entity.Enums; using ivf_tl_Manage.Converts; using ivf_tl_Manage.Win; using ivf_tl_Service.HttpProvider; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ivf_tl_Manage.ViewModels { public partial class AlarmSettingViewModel : BaseViewModel { [ObservableProperty] private ObservableCollection alarmUserEntitieList = new ObservableCollection(); [ObservableProperty] private List alarmTypeList = new List(); private Dictionary TimeDic = new Dictionary() { { 5, "5分钟" }, { 10, "10分钟" }, { 20, "20分钟" }, { 30, "30分钟" }, }; private AlarmProvider alarmProvider; public AlarmSettingViewModel() { InitTimeDic(); AlarmUserEntitieList.Clear(); if (alarmProvider == null) alarmProvider = AppData.Instance.GetAlarmProvider(); AlarmTypeList = alarmProvider.GetTypeAndTemplateListApi(); UpdaData(); } private void InitTimeDic() { TimeDic.Clear(); TimeDic.Add(5, $"5{KeyToStringConvert.GetLanguageStringByKey("0272")}"); TimeDic.Add(10, $"10{KeyToStringConvert.GetLanguageStringByKey("0272")}"); TimeDic.Add(20, $"20{KeyToStringConvert.GetLanguageStringByKey("0272")}"); TimeDic.Add(30, $"30{KeyToStringConvert.GetLanguageStringByKey("0272")}"); } private void ToastShow(bool b) { try { new ToastWindow(AppData.Instance.MainWindow, 1920, 65, b).Show(); } catch (Exception ex) { ExLog(ex, "ToastShow"); } } private void ToastMessageShow(string mess) { try { new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, mess).Show(); } catch (Exception ex) { ExLog(ex, "ToastMessageShow"); } } private bool? MessageBoxShow(string title, string mess) { try { AppData.Instance.MainWindowViewModel.MaskVisibility = true; var a = new MessageBoxWindow(title, mess, AppData.Instance.MainWindow).ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; return a; } catch (Exception ex) { ExLog(ex, "MessageBoxShow"); return false; } } private void ExLog(Exception ex, string name) { AppData.Instance.LogService.ExceptionLog(ex, $"AlarmSettingViewModel.{name}", LogEnum.RunException); } private void ErrorLog(string message, LogEnum logType) { AppData.Instance.LogService.TLLog($"AlarmSettingViewModel.{message}", logType); } private void UpdaData() { var newList = alarmProvider.GetAlarmPersonnelListApi(); int num = 1; AlarmUserEntity currentAlarmUser = null; AlarmPermissionEntity currentAlarmPer = null; foreach (var userItem in newList) { currentAlarmUser = AlarmUserEntitieList.FirstOrDefault(x => x.id == userItem.id); if (currentAlarmUser != null) continue; num = 1; foreach (var item in AlarmTypeList) { currentAlarmPer = userItem.alarmPermissions.FirstOrDefault(x => x.alarmTypeId == item.id); AlarmDetailEntity itemDeail = new AlarmDetailEntity(); itemDeail.num = num++; itemDeail.userId = userItem.id; itemDeail.alarmTypeId = item.id; switch (item.alarmLevel) { case 1: //itemDeail.alarmLevel = "紧急"; itemDeail.alarmLevel = KeyToStringConvert.GetLanguageStringByKey("0274"); break; case 2: //itemDeail.alarmLevel = "一般"; itemDeail.alarmLevel = KeyToStringConvert.GetLanguageStringByKey("0275"); break; case 3: //itemDeail.alarmLevel = "缓"; itemDeail.alarmLevel = KeyToStringConvert.GetLanguageStringByKey("0276"); break; default: //itemDeail.alarmLevel = $"未知:{item.alarmLevel}"; itemDeail.alarmLevel =$"{KeyToStringConvert.GetLanguageStringByKey("0246")}:{item.alarmLevel}"; break; } itemDeail.alarmTitle = item.alarmTitle; if (currentAlarmPer == null) { itemDeail.perId = 0; itemDeail.state = 0; if (item.smsTemplates.Any()) { itemDeail.smsTemplateId = item.smsTemplates.First().id; itemDeail.smsTemplate = item.smsTemplates.First().templateCode; } else { itemDeail.smsTemplateId = 0; itemDeail.smsTemplate = null; } if (item.callTemplates.Any()) { itemDeail.callTemplate = item.callTemplates.First().templateCode; itemDeail.callTemplateId = item.callTemplates.First().id; } else { itemDeail.callTemplate = null; itemDeail.callTemplateId = 0; } itemDeail.intervalTime = 5; } else { itemDeail.perId = currentAlarmPer.id; itemDeail.state = currentAlarmPer.state; itemDeail.smsTemplateId = currentAlarmPer.smsTemplateId; itemDeail.smsTemplate = currentAlarmPer.smsTemplate; itemDeail.callTemplate = currentAlarmPer.callTemplate; itemDeail.callTemplateId = currentAlarmPer.callTemplateId; itemDeail.intervalTime = currentAlarmPer.intervalTime; } itemDeail.callTemplates = item.callTemplates; itemDeail.SelectedCallTemplate = itemDeail.callTemplates.FirstOrDefault(x => x.id == itemDeail.callTemplateId); itemDeail.smsTemplates = item.smsTemplates; itemDeail.SelectedSmsTemplate = itemDeail.smsTemplates.FirstOrDefault(x => x.id == itemDeail.smsTemplateId); itemDeail.TimeSource = TimeDic; itemDeail.SelectedTime = TimeDic.FirstOrDefault(x => x.Key == itemDeail.intervalTime); userItem.AlarmDetailList.Add(itemDeail); } AlarmUserEntitieList.Add(userItem); } } public void UpdateAlamdetail(AlarmDetailEntity alarmDetail) { try { string error = null; if (alarmDetail.perId != 0) { error = alarmProvider.UpdateAlarmDetailApi(alarmDetail.perId, alarmDetail.smsTemplateId, alarmDetail.callTemplateId, alarmDetail.intervalTime, alarmDetail.state); } else { error = alarmProvider.AddAlarmDetailApi(alarmDetail); } if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } } catch (Exception ex) { ExLog(ex, "UpdateAlamdetail"); //MessageBoxShow("操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void EditAlarmUser(AlarmUserEntity alarmUserEntity) { try { AppData.Instance.MainWindowViewModel.MaskVisibility = true; if (new AlarmUserWindow(alarmUserEntity).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; ToastShow(true); } catch (Exception ex) { ExLog(ex, "EditAlarmUser"); //MessageBoxShow("操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void DelAlarmUser(AlarmUserEntity alarmUserEntity) { try { AppData.Instance.MainWindowViewModel.MaskVisibility = true; //new MessageBoxWindow("删除", $"确定删除报警人员{alarmUserEntity.name}吗?", AppData.Instance.MainWindow).ShowDialog() != true if (new MessageBoxWindow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537"), AppData.Instance.MainWindow).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; string error = alarmProvider.DeleteAlarmUserApi(alarmUserEntity.id); if (!string.IsNullOrEmpty(error)) { //MessageBoxShow("操作失败", error); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return; } AlarmUserEntitieList.Remove(alarmUserEntity); ToastShow(true); } catch (Exception ex) { ExLog(ex, "DelAlarmUser"); //MessageBoxShow("操作异常", ex.Message); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0291"), ex.Message); } } public void AddAlarmUser() { try { AppData.Instance.MainWindowViewModel.MaskVisibility = true; if (new AlarmUserWindow().ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; UpdaData(); } catch (Exception ex) { return; } } } }