Exemplo n.º 1
0
        internal static CorpTag FindTag(string id, out CorpTagList tagList)
        {
            tagList = WeDataUtil.GetCacheData <CorpTagList>(WeDataConst.CORP_TAG_NAME);
            CorpTag result = tagList.TagList[id];

            TkDebug.AssertNotNull(result, string.Format(ObjectUtil.SysCulture,
                                                        "数据有错误,无法找到Id为{0}的Tag", id), null);
            return(result);
        }
Exemplo n.º 2
0
        public OutputData Insert(IInputData input, object instance)
        {
            CorpTagProxy tag     = instance.Convert <CorpTagProxy>();
            var          tagList = WeDataUtil.GetCacheData <CorpTagList>(WeDataConst.CORP_TAG_NAME);

            var newTag = CorpTag.Create(tag.Name);

            tagList.TagList.Add(newTag);
            WeDataUtil.SaveData(WeDataConst.CORP_TAG_NAME, tagList);

            return(OutputData.CreateToolkitObject(new KeyData(newTag)));
        }
Exemplo n.º 3
0
        private void AddDeptMembers(CorpTag tag, QuoteStringList postList, QuoteStringList srcList)
        {
            if (srcList == null)
            {
                List <int> list = postList.ConvertToList <int>();
                if (list.Count > 0)
                {
                    tag.AddMembers(null, list);
                }

                return;
            }

            int[] addList, delList;
            GetAddDelList(postList, srcList, out addList, out delList);
            if (addList.Length > 0)
            {
                tag.AddMembers(null, addList);
            }
            if (delList.Length > 0)
            {
                tag.RemoveMembers(null, delList);
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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()));
            }
        }
Exemplo n.º 6
0
 public WeixinResult RetrieveData()
 {
     return(CorpTag.GetTagList());
 }