Exemplo n.º 1
0
        public static void ProcessCorpUser(bool subscribe, string logonName)
        {
            using (EmptyDbDataSource source = WeDataUtil.CreateSource())
                using (InternalCorpUserResolver resolver = new InternalCorpUserResolver(source))
                {
                    DataRow row = resolver.TrySelectRowWithParam("UserLogonName", logonName);
                    if (row != null)
                    {
                        resolver.SetCommands(AdapterCommand.Update);
                        row.BeginEdit();
                        DateTime current = DateTime.Now;
                        if (subscribe)
                        {
                            row["AttentionFlag"]   = 1;
                            row["AttentionDate"]   = current;
                            row["UnAttentionDate"] = DBNull.Value;
                        }
                        else
                        {
                            row["AttentionFlag"]   = 0;
                            row["UnAttentionDate"] = current;
                        }
                        row["UpdateDate"] = current;
                        row.EndEdit();
                    }

                    resolver.UpdateDatabase();
                }
        }
Exemplo n.º 2
0
        private static bool RetriveSessionFromCookie()
        {
            var        cookies = WebGlobalVariable.Request.Cookies;
            HttpCookie cookie  = cookies[RightConst.USER_INFO_COOKIE_NAME];

            if (cookie == null)
            {
                return(false);
            }

            CookieUserInfo userInfo = CookieUserInfo.FromEncodeString(cookie.Value);

            if (userInfo == null)
            {
                return(false);
            }

            EmptyDbDataSource source = new EmptyDbDataSource();

            using (source)
                using (UserResolver resolver = new UserResolver(source))
                {
                    try
                    {
                        IUserInfo info = resolver.CheckUserLogOnById(userInfo.UserId, userInfo.Password);
                        WebGlobalVariable.SessionGbl.AppRight.Initialize(info);
                        return(true);
                    }
                    catch
                    {
                        return(false);
                    }
                }
        }
Exemplo n.º 3
0
        private static bool RetriveSessionFromCookie()
        {
            var cookies = WebGlobalVariable.Request.Cookies;
            HttpCookie cookie = cookies[RightConst.USER_INFO_COOKIE_NAME];
            if (cookie == null)
                return false;

            CookieUserInfo userInfo = CookieUserInfo.FromEncodeString(cookie.Value);
            if (userInfo == null)
                return false;

            EmptyDbDataSource source = new EmptyDbDataSource();
            using (source)
            using (UserResolver resolver = new UserResolver(source))
            {
                try
                {
                    IUserInfo info = resolver.CheckUserLogOnById(userInfo.UserId, userInfo.Password);
                    WebGlobalVariable.SessionGbl.AppRight.Initialize(info);
                    return true;
                }
                catch
                {
                    return false;
                }
            }
        }
Exemplo n.º 4
0
        public ToolsDocumentSource()
        {
            OrderBy      = "ORDER BY DOC_ORGIN_DATE DESC";
            SortQuery    = true;
            Context      = DbContextUtil.CreateDbContext("Tools");
            MainResolver = new TaxDocumentResolver(this);
            Operators    = new ListOperators();

            using (var idSource = new EmptyDbDataSource())
            {
                SqlSelector.Select(idSource.Context, idSource.DataSet, "Document",
                                   "SELECT DISTINCT DOC_SOURCE_ID FROM CS_DOCUMENT WHERE DOC_SOURCE_ID IS NOT NULL");
                DataTable table = idSource.DataSet.Tables["Document"];
                if (table == null || table.Rows.Count == 0)
                {
                    FilterSql = new MarcoConfigItem(false, false, "DOC_VERIFY_FLAG > 0");
                }
                else
                {
                    var ids = from row in table.AsEnumerable()
                              select row["DOC_SOURCE_ID"].ToString();
                    string sql = string.Format(ObjectUtil.SysCulture,
                                               "DOC_VERIFY_FLAG > 0 AND DOC_DOC_ID NOT IN ({0})", string.Join(",", ids));
                    FilterSql = new MarcoConfigItem(false, false, sql);
                }
            }
        }
Exemplo n.º 5
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            TkDbContext context;

            if (string.IsNullOrEmpty(ContextName))
            {
                context = DbContextUtil.CreateDefault();
            }
            else
            {
                context = DbContextUtil.CreateDbContext(ContextName);
            }
            using (EmptyDbDataSource source = new EmptyDbDataSource())
            {
                source.Context = context;
                string sql = Expression.Execute(Sql, source);
                SqlSelector.Select(source.Context, source.DataSet, TABLE_NAME, sql);
                DataTable table = source.DataSet.Tables[TABLE_NAME];
                if (table.Rows.Count == 0)
                {
                    TextSendMessage result = new TextSendMessage(message, EmptyMessage);
                    return(result);
                }
                else
                {
                    NewsSendMessage result = new NewsSendMessage(message);
                    int             count  = 0;
                    if (fFirstArticles.Count > 0)
                    {
                        foreach (var article in fFirstArticles)
                        {
                            result.Add(article);
                            ++count;
                        }
                    }

                    int maxCount = MAX_COUNT;
                    if (FootArticle != null)
                    {
                        maxCount--;
                    }
                    foreach (DataRow row in table.Rows)
                    {
                        if (++count > maxCount)
                        {
                            break;
                        }
                        Article article = DataRowArticle.CreateArticle(source, row, message);
                        result.Add(article);
                    }

                    if (FootArticle != null)
                    {
                        result.Add(FootArticle);
                    }

                    return(result);
                }
            }
        }
Exemplo n.º 6
0
        internal static EmptyDbDataSource CreateSource()
        {
            EmptyDbDataSource source = new EmptyDbDataSource()
            {
                Context = DbContextUtil.CreateDbContext("Weixin")
            };

            return(source);
        }
        public OutputData Update(IInputData input, object instance)
        {
            BasePasswordData passwd = instance.Convert<BasePasswordData>();

            using (EmptyDbDataSource source = new EmptyDbDataSource())
            using (UserResolver resolver = new UserResolver(source))
            {
                return ChangePasswd(resolver, passwd);
            }
        }
Exemplo n.º 8
0
        public OutputData Update(IInputData input, object instance)
        {
            BasePasswordData passwd = instance.Convert <BasePasswordData>();

            using (EmptyDbDataSource source = new EmptyDbDataSource())
                using (UserResolver resolver = new UserResolver(source))
                {
                    return(ChangePasswd(resolver, passwd));
                }
        }
Exemplo n.º 9
0
        private static void ReadDb()
        {
            EmptyDbDataSource source = new EmptyDbDataSource();
            TableResolver resolver = new TableResolver("WE_CORP_USER", source);

            resolver.Select();
            foreach (DataRow row in resolver.HostTable.Rows)
            {
                CorpUser user = new CorpUser("1", "user", new int[] { 1 });
                user.ReadFromDataRow(row, "CorpUser");
                Console.WriteLine(user);
            }
        }
Exemplo n.º 10
0
        private static void Synchronize()
        {
            var luser = CorpDepartment.GetAllUsers(1, true);
            Dictionary<string, bool> userId = new Dictionary<string, bool>();
            foreach (var lu in luser.UserList)
                userId.Add(lu.Id, false);

            Dictionary<string, CorpUser> DbId = new Dictionary<string, CorpUser>();
            EmptyDbDataSource source = new EmptyDbDataSource();
            TableResolver resolver = new TableResolver("WE_CORP_USER", source);
            resolver.Select();

            foreach (DataRow db in resolver.HostTable.Rows)
            {
                CorpUser user = new CorpUser("1", "user", new int[] { 1 });
                bool isDelete = db["ValidFlag"].Value<bool>();
                user.ReadFromDataRow(db, "CorpUser");

                if (isDelete == true)
                {
                    user.Delete();
                }
                else
                {
                    user.Enable = true;
                    DbId.Add(user.Id, user);
                }
            }

            foreach (var v in DbId)
                if (userId.ContainsKey(v.Key))
                {
                    userId[v.Key] = true;
                    v.Value.Update();
                }
                else
                {
                    userId.Add(v.Key, true);
                    v.Value.Create();
                }

            var remainder = from u in userId
                            where !u.Value
                            select u.Key;

            foreach (var rd in remainder)
            {
                CorpUser user = new CorpUser(rd, "user", new int[] { 1 });
                user.Delete();
            }
        }
Exemplo n.º 11
0
        public BaseSendMessage Reply(ReceiveMessage message)
        {
            TkDbContext context;
            if (string.IsNullOrEmpty(ContextName))
                context = DbContextUtil.CreateDefault();
            else
                context = DbContextUtil.CreateDbContext(ContextName);
            using (EmptyDbDataSource source = new EmptyDbDataSource())
            {
                source.Context = context;
                string sql = Expression.Execute(Sql, source);
                SqlSelector.Select(source.Context, source.DataSet, TABLE_NAME, sql);
                DataTable table = source.DataSet.Tables[TABLE_NAME];
                if (table.Rows.Count == 0)
                {
                    TextSendMessage result = new TextSendMessage(message, EmptyMessage);
                    return result;
                }
                else
                {
                    NewsSendMessage result = new NewsSendMessage(message);
                    int count = 0;
                    if (fFirstArticles.Count > 0)
                    {
                        foreach (var article in fFirstArticles)
                        {
                            result.Add(article);
                            ++count;
                        }
                    }

                    int maxCount = MAX_COUNT;
                    if (FootArticle != null)
                        maxCount--;
                    foreach (DataRow row in table.Rows)
                    {
                        if (++count > maxCount)
                            break;
                        Article article = DataRowArticle.CreateArticle(source, row, message);
                        result.Add(article);
                    }

                    if (FootArticle != null)
                        result.Add(FootArticle);

                    return result;
                }
            }
        }
Exemplo n.º 12
0
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     using (EmptyDbDataSource source = WeDataUtil.CreateSource())
         using (TableResolver resolver = new CorpAppLogResolver(source))
         {
             resolver.SetCommands(AdapterCommand.Insert);
             DataRow row = resolver.NewRow();
             row.BeginEdit();
             row["LogId"]      = resolver.CreateUniId();
             row["AppId"]      = message.AgentId;
             row["CreateDate"] = message.CreateTime;
             row["UserId"]     = message.FromUserName;
             row.EndEdit();
             resolver.UpdateDatabase();
         }
     return(null);
 }
Exemplo n.º 13
0
 public BaseSendMessage Reply(ReceiveMessage message)
 {
     TkDbContext context = DbContextUtil.CreateDbContext("Weixin");
     using (EmptyDbDataSource source = new EmptyDbDataSource() { Context = context})
     using (TableResolver resolver = new TableResolver("WE_CORP_APP_LOG", source))
     {
         resolver.SetCommands(AdapterCommand.Insert);
         DataRow row = resolver.NewRow();
         row.BeginEdit();
         row["LogId"] = resolver.CreateUniId();
         row["AppId"] = message.AgentId;
         row["CreateDate"] = message.CreateTime;
         row["UserId"] = message.FromUserName;
         row.EndEdit();
         resolver.UpdateDatabase();
     } 
     return null;
 }
Exemplo n.º 14
0
        private static void DownSync()
        {
            WeFanContainter container = WeFanContainter.GetFans();
            DateTime timeNow = DateTime.Now;
            int timeVersion = (int)timeNow.ToOADate();

            using (EmptyDbDataSource source = new EmptyDbDataSource())
            using (TableResolver resolver = new TableResolver("WE_USER", source))
            {
                resolver.SetCommands(AdapterCommand.Insert | AdapterCommand.Update);
                while (true)
                {
                    if (container.OpenIds == null)
                        break;
                    foreach (var openId in container.OpenIds)
                    {
                        WeUser user = WeUser.GetUser(openId);
                        DataRow row = resolver.TrySelectRowWithKeys(openId);
                        if (row == null)
                            row = resolver.NewRow();
                        user.AddToDataRow(row, WeConst.USER_MODE);
                        row["Version"] = timeVersion;
                    }
                    resolver.UpdateDatabase();
                    resolver.HostTable.Rows.Clear();
                    if (string.IsNullOrEmpty(container.NextOpenId))
                        break;
                    else
                        container = WeFanContainter.GetFans(container);
                }

                resolver.HostTable.Rows.Clear();
                IParamBuilder builder = SqlParamBuilder.CreateParamBuilder(
                    SqlParamBuilder.CreateSingleSql(source.Context, "WU_VERSION", TkDataType.Int, "!=", timeVersion),
                    ParamBuilder.CreateSql("WU_SUBSCRIBE = 1"));
                resolver.Select(builder);
                foreach (DataRow row in resolver.HostTable.Rows)
                {
                    row["subscribe"] = 0;
                }
                resolver.UpdateDatabase();
            }
        }
Exemplo n.º 15
0
        static void Main(string[] args)
        {
            if (!ConsoleApp.Initialize())
                return;

            string fileName = @"D:\C#\微信完整分类.csv";
            DataSet dSet = CSVUtility.OpenCSV(fileName);

            using (EmptyDbDataSource source = new EmptyDbDataSource())
            using (TableResolver resolver = new TableResolver("WE_CATEGORY", source))
            {
                resolver.SetCommands(AdapterCommand.Insert);
                DataRow newRow;
                foreach (DataRow row in dSet.Tables[0].Rows)
                {
                    newRow = resolver.NewRow();
                    row.AddToDataRow(newRow);
                }
               // resolver.UpdateDatabase();
            }
        }
Exemplo n.º 16
0
        public static void ProcessNormalUser(bool subscrible, string openId)
        {
            using (EmptyDbDataSource source = WeDataUtil.CreateSource())
                using (UserResolver resolver = new UserResolver(source))
                    using (SubscribeDataResolver subResolver = new SubscribeDataResolver(source))
                    {
                        subResolver.SetCommands(AdapterCommand.Insert);
                        resolver.SetCommands(AdapterCommand.Insert | AdapterCommand.Update);
                        DateTime current = DateTime.Now;

                        DataRow row = resolver.TrySelectRowWithKeys(openId);
                        if (row == null)
                        {
                            row = resolver.NewRow();
                        }
                        if (subscrible)
                        {
                            WeUser user = WeUser.GetUser(openId);
                            user.AddToDataRow(row);
                        }
                        else
                        {
                            row["Subscribe"] = 0;
                        }

                        DataRow subRow = subResolver.NewRow();
                        subRow.BeginEdit();
                        subRow["Id"]            = subResolver.CreateUniId();
                        subRow["OpenId"]        = openId;
                        subRow["SubscribeDate"] = current;
                        subRow["IsSubscribe"]   = subscrible ? 1 : 0;
                        subRow.EndEdit();

                        UpdateUtil.UpdateTableResolvers(source.Context, null,
                                                        new TableResolver[] { resolver, subResolver });
                    }
        }
Exemplo n.º 17
0
        public static void UpSync()
        {
            var luser = CorpDepartment.GetAllUsers(1, true);
            Dictionary<string, bool> userId = new Dictionary<string, bool>();
            foreach (var lu in luser.UserList)
                userId.Add(lu.Id, false);

            Dictionary<string, Tuple<CorpUser, DataRow>> DbId = new Dictionary<string, Tuple<CorpUser, DataRow>>();
            EmptyDbDataSource source = new EmptyDbDataSource();
            TableResolver resolver = new TableResolver("WE_CORP_USER", source);
            resolver.SetCommands(AdapterCommand.Update);
            resolver.Select();

            foreach (DataRow db in resolver.HostTable.Rows)
            {
                CorpUser user = new CorpUser("1", "user", new int[] { 1 });
                bool isDelete = db["ValidFlag"].Value<bool>();
                user.ReadFromDataRow(db, "CorpUser");

                if (!isDelete)
                {
                    user.Enable = true;
                    Tuple<CorpUser, DataRow> tup = new Tuple<CorpUser, DataRow>(user, db);
                    DbId.Add(user.Id, tup);
                }
            }

            foreach (var v in DbId)
                if (userId.ContainsKey(v.Key))
                {
                    var userStatus = CorpUser.GetUser(v.Key).Status;
                    bool changed = false;

                    if (userStatus == UserStatus.Attention)
                    {
                        if (v.Value.Item2["AttentionFlag"].Value<int>() != ATTEN)
                        {
                            v.Value.Item2["AttentionFlag"] = ATTEN;
                            changed = true;
                        }
                    }
                    else if (v.Value.Item2["AttentionFlag"].Value<int>() == ATTEN)
                    {
                        v.Value.Item2["AttentionFlag"] = NOATTEN;
                        changed = true;
                    }

                    if (changed)
                        resolver.UpdateDatabase();

                    userId[v.Key] = true;
                    var result = v.Value.Item1.Update();
                    if (result.IsError)
                        Console.WriteLine("Update Error : User:{0}, {1}", v.Value.Item1.Name, result);
                }
                else
                {
                    userId.Add(v.Key, true);
                    var result = v.Value.Item1.Create();
                    if (result.IsError)
                        Console.WriteLine("Create Error : User:{0}, {1}", v.Value.Item1.Name, result);
                }

            var remainder = from u in userId
                            where !u.Value
                            select u.Key;

            foreach (var rd in remainder)
            {
                CorpUser user = new CorpUser(rd, "user", new int[] { 1 });
                var result = user.Delete();
                if (result.IsError)
                    Console.WriteLine("Delete Error : User:{0}, {1}", rd, result);
            }
        }
Exemplo n.º 18
0
 public TempSource(DataSet dataSet, EmptyDbDataSource source)
 {
     DataSet = dataSet;
     Context = source.Context;
 }
Exemplo n.º 19
0
        public static void DownSync()
        {
            WeFanContainter container = WeFanContainter.GetFans();
            DateTime timeNow = DateTime.Now;
            int timeVersion = (int)timeNow.ToOADate();

            using (EmptyDbDataSource source = new EmptyDbDataSource())
            using (TableResolver resolver = new TableResolver("WE_USER", source))
            using (TableResolver subResolver = new TableResolver("WE_SUBSCRIBE_DATA", source))
            {
                subResolver.SetCommands(AdapterCommand.Insert);
                resolver.SetCommands(AdapterCommand.Insert | AdapterCommand.Update);
                while (true)
                {
                    if (container.OpenIds == null)
                        break;
                    foreach (var openId in container.OpenIds)
                    {
                        WeUser user = WeUser.GetUser(openId);
                        DataRow row = resolver.TrySelectRowWithKeys(openId);
                        if (row == null)
                        {
                            row = resolver.NewRow();
                            DataRow subRow = subResolver.NewRow();
                            subRow.BeginEdit();
                            subRow["Id"] = subResolver.CreateUniId();
                            subRow["OpenId"] = openId;
                            subRow["SubscribeDate"] = user.SubscribeTime;
                            subRow["IsSubscribe"] = 1;
                            subRow.EndEdit();
                        }
                        user.AddToDataRow(row, WeConst.USER_MODE);
                        row["Version"] = timeVersion;
                    }
                    UpdateUtil.UpdateTableResolvers(source.Context, (Action<Transaction>)null, resolver, subResolver);
                    resolver.HostTable.Rows.Clear();
                    subResolver.HostTable.Rows.Clear();
                    if (string.IsNullOrEmpty(container.NextOpenId))
                        break;
                    else
                        container = WeFanContainter.GetFans(container);
                }

                resolver.HostTable.Rows.Clear();
                subResolver.HostTable.Rows.Clear();
                IParamBuilder builder = SqlParamBuilder.CreateParamBuilder(
                    SqlParamBuilder.CreateSingleSql(source.Context, "WU_VERSION", TkDataType.Int, "!=", timeVersion),
                    ParamBuilder.CreateSql("WU_SUBSCRIBE = 1"));

                resolver.Select(builder);
                if (resolver.HostTable.Rows.Count > 0)
                {
                    foreach (DataRow row in resolver.HostTable.Rows)
                    {
                        row["subscribe"] = 0;
                        DataRow subRow = subResolver.NewRow();
                        subRow.BeginEdit();
                        subRow["Id"] = subResolver.CreateUniId();
                        subRow["OpenId"] = row["OpenId"];
                        subRow["Subscribe"] = DateTime.Now;
                        subRow["IsSubscribe"] = 0;
                        subRow.EndEdit();
                    }
                    UpdateUtil.UpdateTableResolvers(source.Context, (Action<Transaction>)null, resolver, subResolver);
                }
            }
        }
Exemplo n.º 20
0
        public static void DownSync()
        {
            WeFanContainter container = WeFanContainter.GetFans();
            DateTime timeNow = DateTime.Now;
            int timeVersion = (int)timeNow.ToOADate();

            // 公众号测试
            string description = "这是一家创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式";
            string picUrl = "http://p.img.eol.cn/images/1022/2011/0919/1316394859_12_iyeh.jpg";
            Article ar = new Article()
            {
                Title = "企业简介",
                Description = description,
                Url = "http://baike.sogou.com/v6234.htm",
                PicUrl = picUrl
            };
            //NewsCorpMessage n = new NewsCorpMessage();
            //n.SetAllUser();
            //n.Add(ar);
            //WeixinResult result = n.Send(1);

            string oppid = "oyyPUjvZNtOaKqJ3Nh5KIOOsclGA";
            NewsServiceMessage nMsg = new NewsServiceMessage(oppid);
            //TextServiceMessage tMsg = new TextServiceMessage(oppid, "你们在干什么呢?");
            nMsg.Add(ar);
            //WeixinResult result = nMsg.Send();
            WeixinResult result = nMsg.Send();
            Console.WriteLine(result);
            //公众号测试

            using (EmptyDbDataSource source = new EmptyDbDataSource())
            using (TableResolver resolver = new TableResolver("WE_USER", source))
            using (TableResolver subResolver = new TableResolver("WE_SUBSCRIBE_DATA", source))
            {
                subResolver.SetCommands(AdapterCommand.Insert);
                resolver.SetCommands(AdapterCommand.Insert | AdapterCommand.Update);
                while (true)
                {
                    if (container.OpenIds == null)
                        break;
                    foreach (var openId in container.OpenIds)
                    {
                        WeUser user = WeUser.GetUser(openId);
                        DataRow row = resolver.TrySelectRowWithKeys(openId);
                        if (row == null)
                        {
                            row = resolver.NewRow();
                            DataRow subRow = subResolver.NewRow();
                            subRow.BeginEdit();
                            subRow["Id"] = subResolver.CreateUniId();
                            subRow["OpenId"] = openId;
                            subRow["SubscribeDate"] = user.SubscribeTime;
                            subRow["IsSubscribe"] = 1;
                            subRow.EndEdit();
                        }
                        user.AddToDataRow(row, WeConst.USER_MODE);
                        row["Version"] = timeVersion;
                    }
                    UpdateUtil.UpdateTableResolvers(source.Context, (Action<Transaction>)null, resolver, subResolver);
                    resolver.HostTable.Rows.Clear();
                    //subResolver.HostTable.Rows.Clear();
                    if (string.IsNullOrEmpty(container.NextOpenId))
                        break;
                    else
                        container = WeFanContainter.GetFans(container);
                }

                resolver.HostTable.Rows.Clear();
                // subResolver.HostTable.Rows.Clear();
                IParamBuilder builder = SqlParamBuilder.CreateParamBuilder(
                    SqlParamBuilder.CreateSingleSql(source.Context, "WU_VERSION", TkDataType.Int, "!=", timeVersion),
                    ParamBuilder.CreateSql("WU_SUBSCRIBE = 1"));

                resolver.Select(builder);
                if (resolver.HostTable.Rows.Count > 0)
                {
                    foreach (DataRow row in resolver.HostTable.Rows)
                    {
                        row["subscribe"] = 0;
                        DataRow subRow = subResolver.NewRow();
                        subRow.BeginEdit();
                        subRow["Id"] = subResolver.CreateUniId();
                        subRow["OpenId"] = row["OpenId"];
                        subRow["Subscribe"] = DateTime.Now;
                        subRow["IsSubscribe"] = 0;
                        subRow.EndEdit();
                    }
                    UpdateUtil.UpdateTableResolvers(source.Context, (Action<Transaction>)null, resolver, subResolver);
                }
            }
        }
Exemplo n.º 21
0
        public override OutputData DoAction(IInputData input)
        {
            try
            {
                string docId = input.QueryString["DocId"];
                using (TaxDocumentResolver destResolver = new TaxDocumentResolver(this))
                {
                    DataRow row = destResolver.TrySelectRowWithParam("SourceId", docId);
                    if (row != null)
                    {
                        throw new WebPostException("已经复制过该文档!");
                    }

                    var toolSource = new EmptyDbDataSource()
                    {
                        Context = DbContextUtil.CreateDbContext("Tools")
                    };
                    using (toolSource)
                        using (var srcResolver = new TaxDocumentResolver(toolSource))
                            using (var srcAttachResolver = new DocAttachmentResolver(toolSource))
                                using (var destAttachResolver = new DocAttachmentResolver(this))
                                {
                                    srcResolver.SelectWithKeys(docId);
                                    srcAttachResolver.SelectWithParam("DocId", docId);

                                    DataSetUtil.CopyDataTable(srcResolver.HostTable, destResolver.HostTable);
                                    destResolver.SetCommands(AdapterCommand.Insert);
                                    string id       = null;
                                    string keyField = destResolver.KeyField;
                                    foreach (DataRow destRow in destResolver.HostTable.Rows)
                                    {
                                        id = destResolver.CreateUniId();
                                        destRow.BeginEdit();
                                        destRow["SourceId"] = destRow[keyField];
                                        destRow[keyField]   = id;
                                        destRow.EndEdit();
                                    }

                                    DataTable attachTable = srcAttachResolver.HostTable;
                                    if (attachTable == null)
                                    {
                                        UpdateUtil.UpdateTableResolvers(null, destResolver);
                                    }
                                    else
                                    {
                                        DataTable destAttachTable = destAttachResolver.SelectTableStructure();
                                        DataSetUtil.CopyDataTable(attachTable, destAttachTable);
                                        foreach (DataRow attachRow in destAttachTable.Rows)
                                        {
                                            attachRow.BeginEdit();
                                            attachRow["AttId"] = destAttachResolver.CreateUniId();
                                            attachRow["DocId"] = id;
                                            attachRow.EndEdit();
                                        }
                                        destAttachResolver.SetCommands(AdapterCommand.Insert);
                                        UpdateUtil.UpdateTableResolvers(null, destResolver, destAttachResolver);
                                    }
                                    return(OutputData.CreateToolkitObject(destResolver.CreateKeyData()));
                                }
                }
            }
            catch (WebPostException ex)
            {
                return(OutputData.CreateToolkitObject(ex.CreateErrorResult()));
            }
        }
Exemplo n.º 22
0
        public override OutputData DoAction(IInputData input)
        {
            try
            {
                string docId = input.QueryString["DocId"];
                using (TaxDocumentResolver destResolver = new TaxDocumentResolver(this))
                {
                    DataRow row = destResolver.TrySelectRowWithParam("SourceId", docId);
                    if (row != null)
                        throw new WebPostException("已经复制过该文档!");

                    var toolSource = new EmptyDbDataSource()
                    {
                        Context = DbContextUtil.CreateDbContext("Tools")
                    };
                    using (toolSource)
                    using (var srcResolver = new TaxDocumentResolver(toolSource))
                    using (var srcAttachResolver = new DocAttachmentResolver(toolSource))
                    using (var destAttachResolver = new DocAttachmentResolver(this))
                    {
                        srcResolver.SelectWithKeys(docId);
                        srcAttachResolver.SelectWithParam("DocId", docId);

                        DataSetUtil.CopyDataTable(srcResolver.HostTable, destResolver.HostTable);
                        destResolver.SetCommands(AdapterCommand.Insert);
                        string id = null;
                        string keyField = destResolver.KeyField;
                        foreach (DataRow destRow in destResolver.HostTable.Rows)
                        {
                            id = destResolver.CreateUniId();
                            destRow.BeginEdit();
                            destRow["SourceId"] = destRow[keyField];
                            destRow[keyField] = id;
                            destRow.EndEdit();
                        }

                        DataTable attachTable = srcAttachResolver.HostTable;
                        if (attachTable == null)
                        {
                            UpdateUtil.UpdateTableResolvers(null, destResolver);
                        }
                        else
                        {
                            DataTable destAttachTable = destAttachResolver.SelectTableStructure();
                            DataSetUtil.CopyDataTable(attachTable, destAttachTable);
                            foreach (DataRow attachRow in destAttachTable.Rows)
                            {
                                attachRow.BeginEdit();
                                attachRow["AttId"] = destAttachResolver.CreateUniId();
                                attachRow["DocId"] = id;
                                attachRow.EndEdit();
                            }
                            destAttachResolver.SetCommands(AdapterCommand.Insert);
                            UpdateUtil.UpdateTableResolvers(null, destResolver, destAttachResolver);
                        }
                        return OutputData.CreateToolkitObject(destResolver.CreateKeyData());
                    }
                }
            }
            catch (WebPostException ex)
            {
                return OutputData.CreateToolkitObject(ex.CreateErrorResult());
            }
        }