IParamBuilder ISearch.Search(EasySearch easySearch, SearchField searchType, TkDbContext context, IFieldInfo fieldName, string fieldValue) { TkDebug.AssertArgumentNull(easySearch, "easySearch", this); TkDebug.AssertArgumentNull(context, "context", this); TkDebug.AssertArgumentNull(fieldName, "fieldName", this); switch (searchType) { case SearchField.Value: case SearchField.DefaultValue: return(LikeSearch.Instance.Search(easySearch, searchType, context, easySearch.ValueField, fieldValue)); case SearchField.Name: return(SimpleSearch.Instance.Search(easySearch, searchType, context, easySearch.NameField, fieldValue)); case SearchField.Pinyin: return(LikeSearch.Instance.Search(easySearch, searchType, context, easySearch.PinyinField, fieldValue.ToUpper(ObjectUtil.SysCulture))); } TkDebug.ThrowImpossibleCode(this); return(null); }
public OutputData DoAction(IInputData input) { if (input.IsPost) { EasySearchInput esIn = input.PostObject.Convert <EasySearchInput>(); EasySearch easySearch = PlugInFactoryManager.CreateInstance <EasySearch>( EasySearchPlugInFactory.REG_NAME, esIn.RegName); using (easySearch as IDisposable) { IEnumerable <IDecoderItem> result = easySearch.Search(esIn.Text, esIn.RefFields); //EasySearchOutput output = new EasySearchOutput(result); IDecoderItem[] resultArr; if (result != null) { resultArr = result.ToArray(); } else { resultArr = new CodeItem[0]; } return(OutputData.CreateToolkitObject(resultArr)); } } TkDebug.ThrowImpossibleCode(this); return(null); }
public override OutputData DoAction(IInputData input) { if (input.IsPost) { using (PartFuncResolver func = new PartFuncResolver(this) { UpdateMode = UpdateMode.DelIns }) using (PartSubFuncResolver subFunc = new PartSubFuncResolver(this) { UpdateMode = UpdateMode.DelIns }) { string partId = input.QueryString["Id"]; DataSet postDataSet = input.PostObject.Convert <DataSet>(); func.SelectWithParam("PartId", partId); subFunc.SelectWithParam("PartId", partId); func.Update(postDataSet, input); subFunc.Update(postDataSet, input); UpdateUtil.UpdateTableResolvers(Context, (Action <Transaction>)null, func, subFunc); return(OutputData.CreateToolkitObject(KeyData.Empty)); } } TkDebug.ThrowImpossibleCode(this); return(null); }
public IParamBuilder Search(EasySearch easySearch, SearchField searchType, TkDbContext context, IFieldInfo fieldName, string fieldValue) { TkDebug.AssertArgumentNull(easySearch, "easySearch", this); TkDebug.AssertArgumentNull(context, "context", this); TkDebug.AssertArgumentNull(fieldName, "fieldName", this); TkDebug.AssertArgumentNull(fieldValue, "fieldValue", this); switch (searchType) { case SearchField.Value: case SearchField.DefaultValue: return(GetQueryParamBuilder(context, easySearch.ValueField, fieldValue)); case SearchField.Name: return(SimpleSearch.Instance.Search(easySearch, searchType, context, easySearch.NameField, fieldValue)); case SearchField.Pinyin: if (easySearch.PinyinField == null) { return(ClassicPYSearch.Instance.Search(easySearch, searchType, context, easySearch.NameField, fieldValue)); } else { return(LikeSearch.Instance.Search(easySearch, searchType, context, easySearch.PinyinField, fieldValue)); } } TkDebug.ThrowImpossibleCode(this); return(null); }
protected internal IContent WritePage(IPageData pageData, OutputData outputData) { PageMakerUtil.AssertType(this, outputData, SourceOutputType.XmlReader, SourceOutputType.String, SourceOutputType.DataSet, SourceOutputType.ToolkitObject); string xsltFile = GetRealXsltFile(pageData); // Path.Combine(AppSetting.Current.XmlPath, XsltFile); TkDebug.AssertNotNullOrEmpty(xsltFile, "没有设置XsltFile属性,该值为空", this); TkDebug.Assert(File.Exists(xsltFile), string.Format(ObjectUtil.SysCulture, "系统中并不存在文件名为{0}的文件,请检查路径!", xsltFile), this); XsltArgumentList args = null; if (UseXsltArgs) { args = new XsltArgumentList(); AddXsltParam(args, pageData); } string content = string.Empty; XmlReader reader = null; switch (outputData.OutputType) { case SourceOutputType.XmlReader: reader = outputData.Data.Convert <XmlReader>(); break; case SourceOutputType.String: reader = XmlTransformUtil.GetXmlReader(outputData.Data.Convert <string>()); break; case SourceOutputType.ToolkitObject: XDocument doc = outputData.Data.CreateXDocument(null, ObjectUtil.WriteSettings, QName.ToolkitNoNS); reader = doc.CreateReader(); break; case SourceOutputType.DataSet: reader = new XmlDataSetReader(outputData.Data.Convert <DataSet>()); break; default: TkDebug.ThrowImpossibleCode(this); break; } content = XmlTransformUtil.Transform(reader, xsltFile, args, TransformSetting.All); Encoding encoding = Encoding ?? (pageData.IsPost ? Encoding.UTF8 : null); return(CreateContent(pageData, content, encoding)); }
public IContent WritePage(ISource source, IPageData pageData, OutputData outputData) { IPageMaker pageMaker = null; switch (DataType) { case ContentDataType.Json: pageMaker = new JsonObjectPageMaker(); break; case ContentDataType.Xml: pageMaker = new XmlObjectPageMaker(null, null); break; default: TkDebug.ThrowImpossibleCode(this); break; } WebErrorResult error = outputData.Data as WebErrorResult; if (error != null) { return(pageMaker.WritePage(source, pageData, outputData)); } else { string url = null; if (UseRetUrlFirst) { url = pageData.QueryString["RetURL"]; } if (string.IsNullOrEmpty(url)) { url = GetDefaultUrl(source, pageData, outputData); } WebSuccessResult success = new WebSuccessResult(url) { AlertMessage = AlertMessage }; OutputData newData = OutputData.CreateToolkitObject(success); return(pageMaker.WritePage(source, pageData, newData)); } }
protected virtual OutputData DoPost(IInputData input) { MainResolver.PrepareDataSet(input.PostObject.Convert <DataSet>()); switch (input.Style.Style) { case PageStyle.Update: DefaultUpdateAction(input); break; default: TkDebug.ThrowImpossibleCode(this); break; } PostData(input); Commit(input); return(OutputData.CreateToolkitObject(KeyData.Empty)); }
public string DisplayValue(object value, Tk5FieldInfoEx field, IFieldValueProvider rowValue) { string displayValue = Display.CreateObject().DisplayValue(value, field, rowValue); if (string.IsNullOrEmpty(Content)) { return(displayValue); } string linkUrl = HrefDisplayConfig.ResolveRowValue(rowValue, Content); if (string.IsNullOrEmpty(linkUrl)) { return(displayValue); } linkUrl = StringUtil.EscapeHtmlAttribute(AppUtil.ResolveUrl(linkUrl)); switch (Mode) { case DisplayMode.Normal: return(string.Format(ObjectUtil.SysCulture, "<a data-url='{0}' href='#'>{1}</a>", linkUrl, displayValue)); case DisplayMode.Dialog: string title; if (!string.IsNullOrEmpty(DialogTitle)) { title = HrefDisplayConfig.ResolveRowValue(rowValue, DialogTitle); } else { title = displayValue; } return(string.Format(ObjectUtil.SysCulture, "<a data-dialog-url='{0}' data-title='{2}' href='#'>{1}</a>", linkUrl, displayValue, title)); default: TkDebug.ThrowImpossibleCode(this); return(string.Empty); } }
internal WeixinToolkitSettings(WeixinExtraXml xml, BaseAppSetting appsetting) { fCurrent = this; fEngine = new MessageEngine(); if (xml.Weixin.Normal != null) { fNormalDefault = new DefaultEngine(xml.Weixin.Normal.DefaultMessage); fAuthConfig = new WeixinAuthConfig(); string authFileName = Path.Combine(appsetting.XmlPath, @"Weixin\Auth.xml"); if (File.Exists(authFileName)) { fAuthConfig.ReadXmlFromFile(authFileName); } } else if (xml.Weixin.CorpApps != null) { fCorpDefault = new Dictionary <int, DefaultEngine>(); foreach (var item in xml.Weixin.CorpApps) { fCorpDefault.Add(item.AppId, new DefaultEngine(item.DefaultMessage)); } fCorpAuthConfig = new WeixinCorpAuthConfig(); string authFileName = Path.Combine(appsetting.XmlPath, @"Weixin\CorpAuth.xml"); if (File.Exists(authFileName)) { fCorpAuthConfig.ReadXmlFromFile(authFileName); } } else { TkDebug.ThrowImpossibleCode(this); } if (xml.Weixin.MessageLog != null) { fLog = xml.Weixin.MessageLog.CreateObject(); } }
protected override string GetDefaultUrl(ISource source, IPageData pageData, OutputData outputData) { string url = string.Empty; KeyData keyData = outputData.Data.Convert <KeyData>(); //string pageSource = pageData.SourceInfo.Source; switch (DestUrl) { case PageStyle.Custom: TkDebug.AssertNotNull(CustomUrl, "配置了DestUrl为Custom,却没有配置CustomUrl", this); url = Expression.Execute(CustomUrl, source); url = AppUtil.ResolveUrl(url); if (CustomUrl.UseKeyData) { url = UriUtil.AppendQueryString(url, keyData.ToString()); } break; case PageStyle.Insert: case PageStyle.Update: case PageStyle.Delete: url = WebUtil.GetTemplateUrl(DestUrl, pageData); url = UriUtil.AppendQueryString(url, keyData.ToString()).AppVirutalPath(); break; case PageStyle.Detail: case PageStyle.List: string initValue = keyData.IsSingleValue ? keyData.SingleValue : string.Empty; url = WebUtil.GetTemplateUrl((PageStyleClass)string.Empty, pageData); url = UriUtil.AppendQueryString(url, "InitValue=" + initValue).AppVirutalPath(); break; default: TkDebug.ThrowImpossibleCode(this); break; } return(url); }
internal static object GetModel(OutputData outputData) { switch (outputData.OutputType) { case SourceOutputType.String: case SourceOutputType.ToolkitObject: case SourceOutputType.DataSet: case SourceOutputType.Object: return(outputData.Data); case SourceOutputType.XmlReader: return(XDocument.Load(outputData.Data.Convert <XmlReader>())); case SourceOutputType.FileContent: TkDebug.ThrowToolkitException("不支持FileContent格式", null); return(null); default: TkDebug.ThrowImpossibleCode(null); return(null); } }
private OutputData DoPost(IInputData input) { PreparePostObject(input); switch (input.Style.Style) { case PageStyle.Insert: DefaultInsertAction(input); break; case PageStyle.Update: DefaultUpdateAction(input); break; default: TkDebug.ThrowImpossibleCode(this); break; } PostData(input); Commit(input); return(OutputData.CreateToolkitObject(MainResolver.CreateKeyData())); }
protected override OutputData DoGet(IInputData input) { string oper = input.QueryString["Operation"]; string dataXml = null; string tagFieldName = null; string dataXmlFieldName = null; Func <CorpTagMembers, IEnumerable <string> > getMembers = null; switch (oper) { case "User": dataXml = @"Weixin\CorpTagUser.xml"; tagFieldName = "UserList"; dataXmlFieldName = "UserId"; getMembers = GetUserMembers; break; case "Dept": dataXml = @"Weixin\CorpTagDept.xml"; tagFieldName = "DepartmentList"; dataXmlFieldName = "DeparmentId"; getMembers = GetDeptMembers; break; default: TkDebug.ThrowImpossibleCode(this); break; } Tk5TableResolver getResovler = new Tk5TableResolver(dataXml, this); using (getResovler) { DataTable table = getResovler.CreateVirtualTable(); string tagId = input.QueryString["TagId"]; DataRow row = fResolver.TrySelectRowWithKeys(tagId); if (row != null) { QuoteStringList list = row[tagFieldName].Value <QuoteStringList>(); if (list != null) { var userList = list.CreateEnumerable(); foreach (string item in userList) { DataRow userRow = table.NewRow(); userRow[dataXmlFieldName] = item; table.Rows.Add(userRow); } } } else { CorpTag tag = new CorpTag(tagId.Value <int>()); CorpTagMembers members = tag.GetMembers(); IEnumerable <string> memList = getMembers(members); if (memList != null) { foreach (var item in memList) { DataRow userRow = table.NewRow(); userRow[dataXmlFieldName] = item; table.Rows.Add(userRow); } } } getResovler.Decode(input.Style); getResovler.FillCodeTable(input.Style); input.CallerInfo.AddInfo(DataSet); } return(OutputData.Create(DataSet)); }
protected override OutputData DoPost(IInputData input) { string oper = input.QueryString["Operation"]; string dataXml = null; string tagFieldName = null; string dataXmlFieldName = null; switch (oper) { case "User": dataXml = @"Weixin\CorpTagUser.xml"; tagFieldName = "UserList"; dataXmlFieldName = "UserId"; break; case "Dept": dataXml = @"Weixin\CorpTagDept.xml"; tagFieldName = "DepartmentList"; dataXmlFieldName = "DeparmentId"; break; default: TkDebug.ThrowImpossibleCode(this); break; } Tk5TableResolver getResovler = new Tk5TableResolver(dataXml, this); using (getResovler) { DataSet postDataSet = input.PostObject.Convert <DataSet>(); getResovler.PrepareDataSet(postDataSet); FieldErrorInfoCollection errors = new FieldErrorInfoCollection(); getResovler.CheckFirstConstraints(input, errors); getResovler.CheckLaterConstraints(input, errors); errors.CheckError(); QuoteStringList postList = new QuoteStringList(); DataTable postTable = postDataSet.Tables[getResovler.TableName]; if (postTable != null) { foreach (DataRow postRow in postTable.Rows) { postList.Add(postRow[dataXmlFieldName].ToString()); } } string tagId = input.QueryString["TagId"]; CorpTagList tagList; CorpTag tag = CorpTagEditObjectSource.FindTag(tagId, out tagList); DataRow row = fResolver.TrySelectRowWithKeys(tagId); if (row == null) { fResolver.SetCommands(AdapterCommand.Insert); row = fResolver.NewRow(); row.BeginEdit(); row["TagId"] = tagId; row["Name"] = tag.Name; row[tagFieldName] = postList.ToString(); row.EndEdit(); switch (oper) { case "User": AddUserMembers(tag, postList, null); break; case "Dept": AddDeptMembers(tag, postList, null); break; } fResolver.UpdateDatabase(); } else { fResolver.SetCommands(AdapterCommand.Update); QuoteStringList sourceList = row[tagFieldName].Value <QuoteStringList>(); row[tagFieldName] = postList.ToString(); switch (oper) { case "User": AddUserMembers(tag, postList, sourceList); break; case "Dept": AddDeptMembers(tag, postList, sourceList); break; } fResolver.UpdateDatabase(); } return(OutputData.CreateToolkitObject(fResolver.CreateKeyData())); } }
internal WeixinSettings(WeixinXml xml) { AppId = xml.Weixin.AppId; LogRawMessage = xml.Weixin.LogRawMessage; WeixinPath = Path.GetDirectoryName(xml.FullPath); UseLogOnRight = xml.Weixin.UseLogOnRight; WeixinNormalConfig normalConfig = xml.Weixin.Normal; if (normalConfig != null) { Mode = WeixinMode.Normal; OpenId = normalConfig.OpenId; fAppSecret = normalConfig.Secret; fToken = normalConfig.Token; MessageMode = normalConfig.MessageMode; EncodingAESKey = normalConfig.EncodingAESKey; fTemplateMessages = normalConfig.TemplateMessages; PaymentConfigItem pay = normalConfig.Pay; if (pay != null) { fUsePay = true; fMchId = pay.MchId; fPayKey = pay.Key; fDeviceInfo = pay.DeviceInfo; fDeviceIp = pay.DeviceIp; fPayNotifyUrl = UriUtil.CombineUri(pay.NotifyBaseUrl, pay.NotifyUrl).ToString(); } WeixinServiceConfigItem service = normalConfig.Service; if (service != null) { fEnableService = service.Enabled; fWeixinAccount = service.WeixinAccount; } else { fEnableService = false; } if (MessageMode != MessageMode.Normal) { TkDebug.AssertArgumentNullOrEmpty(EncodingAESKey, "当消息是混合或者安全模式时,请配置EncodingAESKey的内容", xml); } } else if (xml.Weixin.CorpApps != null) { Mode = WeixinMode.Corporation; fCorpApps = xml.Weixin.CorpApps; TkDebug.Assert(fCorpApps.Count > 0, "至少需要配置一个tk:CorpApp节点", xml); CorpSecretConfig corpSecret = xml.Weixin.CorpSecret; TkDebug.AssertNotNull(corpSecret, "需要配置tk:CorpSecret节点", xml); fCorpUserManagerSecret = corpSecret.UserManager; fCorpMenuSecret = corpSecret.Menu; if (string.IsNullOrEmpty(fCorpMenuSecret)) { fCorpMenuSecret = fCorpUserManagerSecret; } OpenId = AppId; } else { TkDebug.ThrowImpossibleCode(xml); } fCurrent = this; }
private double CalSubTotalNum(DataTable mainTableData, String nickName, StatMethod method) { double res = 0; if (method == StatMethod.Count) { return(mainTableData.Rows.Count); } foreach (DataRow rowData in mainTableData.Rows) { var rawValue = rowData[nickName]; if (rawValue == DBNull.Value) { continue; } double value = rowData[nickName].Value <double>(); if (res == 0) { res = value; continue; } switch (method) { case StatMethod.Sum: res += value; break; case StatMethod.Avg: res += value; break; case StatMethod.Max: if (res < value) { res = value; } break; case StatMethod.Min: if (res > value) { res = value; } break; case StatMethod.Count: TkDebug.ThrowImpossibleCode(this); break; default: break; } } if (res != 0 && method == StatMethod.Avg) { res = res / mainTableData.Rows.Count; } return(res); }