public string GetValue(TableStyle style, DataInfo dataInfo) { var value = string.Empty; if (dataInfo.ContainsKey(style.AttributeName)) { var fieldValue = dataInfo.Get <string>(style.AttributeName); if (style.InputType == InputType.CheckBox || style.InputType == InputType.SelectMultiple) { var list = TranslateUtils.JsonDeserialize <List <string> >(fieldValue); if (list != null) { value = string.Join(",", list); } } else if (style.InputType == InputType.Date) { if (!string.IsNullOrEmpty(fieldValue)) { var date = FormUtils.ToDateTime(fieldValue, DateTime.MinValue); if (date != DateTime.MinValue) { value = date.ToString("yyyy-MM-dd"); } } } else if (style.InputType == InputType.DateTime) { if (!string.IsNullOrEmpty(fieldValue)) { var date = FormUtils.ToDateTime(fieldValue, DateTime.MinValue); if (date != DateTime.MinValue) { value = date.ToString("yyyy-MM-dd HH:mm"); } } } else { value = fieldValue; } } return(value); }
public async Task SendNotifyAsync(FormInfo formInfo, List<TableStyle> styles, DataInfo dataInfo) { if (formInfo.IsAdministratorSmsNotify && !string.IsNullOrEmpty(formInfo.AdministratorSmsNotifyTplId) && !string.IsNullOrEmpty(formInfo.AdministratorSmsNotifyMobile)) { var isSmsEnabled = await _smsManager.IsEnabledAsync(); if (isSmsEnabled) { var parameters = new Dictionary<string, string>(); if (!string.IsNullOrEmpty(formInfo.AdministratorSmsNotifyKeys)) { var keys = formInfo.AdministratorSmsNotifyKeys.Split(','); foreach (var key in keys) { if (StringUtils.EqualsIgnoreCase(key, nameof(DataInfo.Id))) { parameters.Add(key, dataInfo.Id.ToString()); } else if (StringUtils.EqualsIgnoreCase(key, nameof(DataInfo.CreatedDate))) { if (dataInfo.CreatedDate.HasValue) { parameters.Add(key, dataInfo.CreatedDate.Value.ToString("yyyy-MM-dd HH:mm")); } } else { var value = dataInfo.Get<string>(key); parameters.Add(key, value); } } } await _smsManager.SendAsync(formInfo.AdministratorSmsNotifyMobile, formInfo.AdministratorSmsNotifyTplId, parameters); } } if (formInfo.IsAdministratorMailNotify && !string.IsNullOrEmpty(formInfo.AdministratorMailNotifyAddress)) { var isMailEnabled = await _mailManager.IsEnabledAsync(); if (isMailEnabled) { var templateHtml = await GetMailTemplateHtmlAsync(); var listHtml = await GetMailListHtmlAsync(); var keyValueList = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("编号", dataInfo.Guid) }; if (dataInfo.CreatedDate.HasValue) { keyValueList.Add(new KeyValuePair<string, string>("提交时间", dataInfo.CreatedDate.Value.ToString("yyyy-MM-dd HH:mm"))); } foreach (var style in styles) { keyValueList.Add(new KeyValuePair<string, string>(style.DisplayName, dataInfo.Get<string>(style.AttributeName))); } var list = new StringBuilder(); foreach (var kv in keyValueList) { list.Append(listHtml.Replace("{{key}}", kv.Key).Replace("{{value}}", kv.Value)); } var htmlBody = templateHtml .Replace("{{title}}", formInfo.Title) .Replace("{{list}}", list.ToString()); await _mailManager.SendAsync(formInfo.AdministratorMailNotifyAddress, "[SSCMS] 通知邮件", htmlBody); } } if (formInfo.IsUserSmsNotify && !string.IsNullOrEmpty(formInfo.UserSmsNotifyTplId) && !string.IsNullOrEmpty(formInfo.UserSmsNotifyMobileName)) { var isSmsEnabled = await _smsManager.IsEnabledAsync(); if (isSmsEnabled) { var parameters = new Dictionary<string, string>(); if (!string.IsNullOrEmpty(formInfo.UserSmsNotifyKeys)) { var keys = formInfo.UserSmsNotifyKeys.Split(','); foreach (var key in keys) { if (StringUtils.EqualsIgnoreCase(key, nameof(DataInfo.Id))) { parameters.Add(key, dataInfo.Id.ToString()); } else if (StringUtils.EqualsIgnoreCase(key, nameof(DataInfo.CreatedDate))) { if (dataInfo.CreatedDate.HasValue) { parameters.Add(key, dataInfo.CreatedDate.Value.ToString("yyyy-MM-dd HH:mm")); } } else { var value = dataInfo.Get<string>(key); parameters.Add(key, value); } } } var mobile = dataInfo.Get<string>(formInfo.UserSmsNotifyMobileName); if (!string.IsNullOrEmpty(mobile)) { await _smsManager.SendAsync(mobile, formInfo.UserSmsNotifyTplId, parameters); } } } }
public async Task ImportFormAsync(int siteId, string directoryPath, bool overwrite) { if (!Directory.Exists(directoryPath)) { return; } var isHistoric = IsHistoric(directoryPath); var filePaths = Directory.GetFiles(directoryPath); foreach (var filePath in filePaths) { if (!StringUtils.EndsWithIgnoreCase(filePath, ".xml")) { continue; } var feed = AtomFeed.Load(new FileStream(filePath, FileMode.Open)); var formInfo = new FormInfo(); foreach (var tableColumn in _formRepository.TableColumns) { var value = GetValue(feed.AdditionalElements, tableColumn); formInfo.Set(tableColumn.AttributeName, value); } formInfo.SiteId = siteId; var srcFormInfo = await _formRepository.GetFormInfoByTitleAsync(siteId, formInfo.Title); if (srcFormInfo != null) { if (overwrite) { await DeleteAsync(siteId, srcFormInfo.Id); } else { formInfo.Title = await _formRepository.GetImportTitleAsync(siteId, formInfo.Title); } } formInfo.Id = await _formRepository.InsertAsync(formInfo); var directoryName = GetDcElementContent(feed.AdditionalElements, "Id"); var titleAttributeNameDict = new NameValueCollection(); if (!string.IsNullOrEmpty(directoryName)) { var fieldDirectoryPath = PathUtils.Combine(directoryPath, directoryName); titleAttributeNameDict = await ImportFieldsAsync(siteId, formInfo.Id, fieldDirectoryPath, isHistoric); } var entryList = new List <AtomEntry>(); foreach (AtomEntry entry in feed.Entries) { entryList.Add(entry); } entryList.Reverse(); foreach (var entry in entryList) { var dataInfo = new DataInfo(); foreach (var tableColumn in _dataRepository.TableColumns) { var value = GetValue(entry.AdditionalElements, tableColumn); dataInfo.Set(tableColumn.AttributeName, value); } var attributes = GetDcElementNameValueCollection(entry.AdditionalElements); foreach (string entryName in attributes.Keys) { dataInfo.Set(entryName, attributes[entryName]); } if (isHistoric) { foreach (var title in titleAttributeNameDict.AllKeys) { dataInfo.Set(title, dataInfo.Get(titleAttributeNameDict[title])); } dataInfo.ReplyContent = GetDcElementContent(entry.AdditionalElements, "Reply"); if (!string.IsNullOrEmpty(dataInfo.ReplyContent)) { dataInfo.IsReplied = true; } dataInfo.CreatedDate = FormUtils.ToDateTime(GetDcElementContent(entry.AdditionalElements, "adddate")); } await _dataRepository.InsertAsync(formInfo, dataInfo); } } }