示例#1
0
        /// <summary>
        /// 根据Type获取自己的收藏,只能由mainThread执行
        /// </summary>
        /// <param name="reParame"></param>
        /// <param name="type"></param>
        private void GetCollectionByType(RequestParameEntity reParame, string type, string url)
        {
            getType = type;

            var listUrl = url + type;

            EachListPage(listUrl, DownContentType.OwnCollection, new Action <string>(itemUrl =>
            {
                if (!mut.IsContinue)
                {
                    return;
                }

                itemUrl = HtmlHelp.NeedHost(listUrl, itemUrl);

                var ri = new RequestItemParameEntity()
                {
                    ItemUrl = itemUrl, SavePath = reParame.SavePath
                };

                if (isSingle)
                {
                    GetWorksItem(ri);
                }
                else
                {
                    while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue)
                    {
                        Thread.Sleep(1000);
                    }
                }
            }));
        }
示例#2
0
        private new void Update()
        {
            //下载更新软件
            var url      = XmlHelp.GetInnerTextByPath("Config:WebUrl") + updateSoft;
            var fileName = Path.GetFileName(updateSoft);
            var b        = HtmlHelp.DownFile(url, fileName);

            if (!b)
            {
                MessageBox.Show("下载更新文件失败!");
            }
            else
            {
                var aPath = Application.StartupPath + "/";

                var updateFileName = XmlHelp.GetInnerTextByPath("Config:UpdateFileName");
                if (File.Exists(updateFileName))
                {
                    File.Delete(updateFileName);
                }

                ZipHelp.ExtractToDirectory(fileName, aPath);
                File.Delete(fileName);

                //启动更新程序
                Process.Start(updateFileName);
                //关闭主进程
                var proc = Process.GetProcessesByName(XmlHelp.GetInnerTextByPath("Config:MainProcess").Replace(".exe", ""));
                foreach (var p in proc)
                {
                    p.Kill();
                }
            }
        }
示例#3
0
        /// <summary>
        /// 解压文件
        /// </summary>
        /// <param name="objParame"></param>
        public void UnZipFile(object objParame)
        {
            var parame   = (Dictionary <string, string>)objParame;
            var savePath = parame["SavePath"].Replace("\\", "/").Replace("//", "/");
            var fileUrl  = parame["FileUrl"].Replace("\\", "/").Replace("//", "/");
            var fileName = parame["FileName"].Replace("\\", "/").Replace("//", "/");
            var delay    = parame["Delay"];

            //将文件解压
            var zipDir = savePath + "/" + Path.GetFileNameWithoutExtension(fileUrl);

            try
            {
                ZipHelp.ExtractToDirectory(fileName, zipDir);

                //将文件解压后的文件夹中的图片转为GIF
                var fs = Directory.GetFiles(zipDir);
                GifHelp.ImageToGif(fs, zipDir + ".gif", int.Parse(delay));
            }
            catch (Exception ex)
            {
                AddErrorMsg(string.Format("解压文件{0}失败!\r\n{1}\r\n", fileName, ex.Message));
                HtmlHelp.SaveStringToTxt(ex.StackTrace + "\r\n", "Error.txt");
            }
            finally
            {
                mut.DisposeUnZipThread();
            }
        }
示例#4
0
        /// <summary>
        /// 获取单个画师,只能由DoGetThread执行
        /// </summary>
        /// <param name="listUrl">画师作品列表页</param>
        public void GetSingle(object objParame)
        {
            try
            {
                if (!mut.IsContinue)
                {
                    return;
                }

                //因为循环里没有做修改,所有可以放外面
                var parame = (RequestParameEntity)objParame;

                form.BeginInvoke(new Action(() => { form.RtxtSuccess.Text = ""; }));

                if (isSingle)
                {
                    form.Invoke(new Action(() => { form.TxtSavePath.Text = parame.SavePath; }));
                }

                EachListPage(parame.ListUrl, DownContentType.SinglePainter, new Action <string>(itemUrl =>
                {
                    if (!mut.IsContinue)
                    {
                        return;
                    }

                    itemUrl = HtmlHelp.NeedHost(parame.ListUrl, itemUrl);

                    var ri = new RequestItemParameEntity()
                    {
                        ItemUrl = itemUrl, SavePath = parame.SavePath
                    };

                    if (isSingle)
                    {
                        GetWorksItem(ri);
                    }
                    else
                    {
                        while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue)
                        {
                            Thread.Sleep(1000);
                        }
                    }
                }));
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
            finally
            {
                if (!isSingle)
                {
                    mut.RemoveGThread();
                }
            }
        }
示例#5
0
        private void btnlogin_Click(object sender, EventArgs e)
        {
            Global.userid = GUI_User_Name.Text;
            Dictionary <string, FeildDetail> formdata = new Dictionary <string, FeildDetail>()
            {
                { "__VIEWSTATE", new FeildDetail()
                  {
                      Xpath = "//*[@id='__VIEWSTATE']", ContentType = ContentType.AttributeValue, AttributeKey = "value"
                  } },
                { "__EVENTVALIDATION", new FeildDetail()
                  {
                      Xpath = "//*[@id='__EVENTVALIDATION']", ContentType = ContentType.AttributeValue, AttributeKey = "value"
                  } },
            };

            HtmlHelp.GetBodyInfo(() => login, formdata, null, "/html/body", "", out Dictionary <string, string> rootvalues, out List <Dictionary <string, string> > rangeValues);
            Dictionary <string, string> pams = new Dictionary <string, string>()
            {
                { "__VIEWSTATE", rootvalues["__VIEWSTATE"] },
                { "__EVENTVALIDATION", rootvalues["__EVENTVALIDATION"] },
                { "Account", Global.userid },
                { "PWD", GUI_User_Pwd.Text },
                { "CheckCode", GUI_verfyCode.Text },
                { "cmdok", "" }
            };

            Global.aspxauth = HttpHelp.LoginGetSessin("http://jw.jltc.edu.cn/login.aspx", pams, cookie: Global.Cookie);
            if (string.IsNullOrEmpty(Global.LoginCookie))
            {
                MessageBox.Show("用户名/密码/验证码错误");
                return;
            }
            UserSecret userSecret = new UserSecret
            {
                UserName = GUI_User_Name.Text,
                //PassWord = GUI_User_Pwd.Text?.EncryptDES(),
                PassWord         = GUI_rememberpassword.Checked ? GUI_User_Pwd.Text?.EncryptDES() : "",
                RememberPassword = GUI_rememberpassword.Checked ? true : false
            };
            string jsonstr = userSecret.ToJson();

            File.Delete(Global.FileUrl);
            using (FileStream fs = new FileStream(Global.FileUrl, FileMode.CreateNew))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.Write(jsonstr);
                }
            }
            Hide();

            //FormMain fm = new FormMain();
            //var result = fm.ShowDialog();
            //if (result == DialogResult.Cancel)
            //{
            //    Application.Exit();
            //}
        }
示例#6
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(ddlUserName.Text) || string.IsNullOrWhiteSpace(txtPassWord.Text))
                {
                    MessageBox.Show("用户名密码不能为空!", "提示");
                    return;
                }

                lblMsg.Text = "登录中,请稍等...";
                EnableControl(false, this);
                SaveUserInfo();

                var name   = ddlUserName.Text;
                var pwd    = txtPassWord.Text;
                var ca     = txtCaptcha.Text;
                var result = await Task.Run(() =>
                {
                    return(HtmlHelp.Login(name, pwd, ca));
                });

                if (result != null && result.Html.Contains("success"))
                {
                    btnSingle.Enabled  = true;
                    btnMutDown.Enabled = true;
                    picCaptcha.Visible = false;

                    lblMsg.Text = "登录成功!";
                }
                else
                {
                    lblMsg.Text = "注:若账号密码正确,可能是需要输入验证码!";
                    MessageBox.Show("登录失败!", "提示");

                    EnableControl(true, this);
                    btnSingle.Enabled  = false;
                    btnMutDown.Enabled = false;

                    //获取验证码
                    var buffter = HtmlHelp.GetCaptcha("https://accounts.pixiv.net/captcha");
                    if (buffter != null)
                    {
                        txtCaptcha.Enabled = true;
                        picCaptcha.Image   = Image.FromStream(new MemoryStream(buffter));
                        picCaptcha.Visible = true;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "异常信息");
            }
        }
示例#7
0
        private void GUI_refresh_Click(object sender, EventArgs e)
        {
            int key = 0;


            key = Global.semester.FirstOrDefault(q => q.Value == GUI_semester.Text).Key;

            if (GUI_week.Text == "")
            {
                GUI_week.Text = "1";
            }

            if (key == 0 || GUI_week.Text == "")
            {
                ShowTimeTable(timetable);
                return;
            }


            string ddlxnxqh = "20" + Convert.ToString(Global.year + (key / 10) - 1) + "-20" +
                              Convert.ToString(Global.year + (key / 10)) + "-" + Convert.ToString(key % 10);
            Dictionary <string, FeildDetail> formdata = new Dictionary <string, FeildDetail>()
            {
                {
                    "__VIEWSTATE",
                    new FeildDetail()
                    {
                        Xpath        = "//*[@id='__VIEWSTATE']", ContentType = ContentType.AttributeValue,
                        AttributeKey = "value"
                    }
                },
                //   { "__EVENTVALIDATION",new FeildDetail() { Xpath="//*[@id='__EVENTVALIDATION']", ContentType=ContentType.AttributeValue, AttributeKey="value" } },
            };

            HtmlHelp.GetBodyInfo(() => timetable, formdata, null, "/html/body", "",
                                 out Dictionary <string, string> rootvalues, out List <Dictionary <string, string> > rangeValues);
            string __VIEWSTATE = rootvalues["__VIEWSTATE"];
            Dictionary <string, string> pams = new Dictionary <string, string>()
            {
                { "__EVENTTARGET", "zc" },
                { "__EVENTARGUMENT", "" },
                { "__LASTFOCUS", "" },
                { "__VIEWSTATE", rootvalues["__VIEWSTATE"] },
                { "ddlxnxqh", ddlxnxqh },
                { "mx", "on" },
                { "zc", GUI_week.Text }
            };
            string html = HttpHelp.HttpPost("http://jw.jltc.edu.cn/JWXS/pkgl/XsKB_List.aspx", Global.LoginCookie, pams);

            ShowTimeTable(html);
        }
示例#8
0
        private void UpdateSoft()
        {
            try
            {
                var url  = XmlHelp.GetInnerTextByPath("Config:UpdateUrl");
                var json = HtmlHelp.Get(url);

                var result = JsonHelp.DeserializeObject <ResultEntity>(json);

                if (result.Code == "1")
                {
                    var url2 = XmlHelp.GetInnerTextByPath("Config:WebUrl");
                    var zip  = Path.GetFileName(result.FileName);
                    var b    = HtmlHelp.DownFile(url2 + result.FileName, zip, progressBar1);

                    if (!b)
                    {
                        throw new Exception();
                    }

                    //解压下载的文件
                    var aPath = Application.StartupPath + "/";
                    ZipHelp.ExtractToDirectory(zip, aPath + "NewPixiv");

                    //删除下载的压缩文件
                    File.Delete(aPath + zip);

                    //替换文件
                    ReplaceFile(aPath, aPath + "NewPixiv");

                    //删除解压后的文件
                    Directory.Delete(aPath + "NewPixiv", true);

                    //重新启动主程序
                    var mainPreocess = XmlHelp.GetInnerTextByPath("Config:MainProcess");
                    Process.Start(mainPreocess);
                }
                else
                {
                    MessageBox.Show(result.Message);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("更新文件失败!");
            }
        }
示例#9
0
        /// <summary>
        /// 下载搜索
        /// Url 必须是完整的地址,只能由mainThread执行
        /// </summary>
        /// <param name="objParame"></param>
        public void GetSearch(object objParame)
        {
            try
            {
                var parame = (RequestParameEntity)objParame;
                EachListPage(parame.ListUrl, DownContentType.GetSearch, new Action <string>(itemUrl =>
                {
                    if (!mut.IsContinue)
                    {
                        return;
                    }

                    itemUrl = "/member_illust.php?mode=medium&illust_id=" + itemUrl;
                    itemUrl = HtmlHelp.NeedHost(parame.ListUrl, itemUrl);

                    //都下载同一个地方,不用克隆
                    var ri = new RequestItemParameEntity()
                    {
                        ItemUrl = itemUrl, SavePath = parame.SavePath
                    };

                    if (isSingle)
                    {
                        GetWorksItem(ri);
                    }
                    else
                    {
                        while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue)
                        {
                            Thread.Sleep(1000);
                        }
                    }
                }));
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
            finally
            {
                if (mainThread != null && mainThread.IsAlive)
                {
                    mainThread.Abort();
                }
            }
        }
示例#10
0
            public static void AddPoints(NeedM s, Dictionary <string, List <Point> > dict)
            {
                List <string> allPpeTypes = s.PpeTypes.ToList();

                foreach (string ppeType in allPpeTypes)
                {
                    string className = Ppe.TypesToClasses[ppeType];
                    string need      = Ppe.NeedFromType(ppeType, s.OtherPpeTypes);

                    Point p = new Point {
                        Location  = s.LocationArry,
                        PopupHtml = $"<div class='need'><h1>Need</h1>{s.TwitterHtml}{HtmlHelp.LabelledTag("PPE:", HtmlHelp.ColorBoxHtml(need, className))}{HtmlHelp.LabelledTag("Organisation:", s.Organisation)}{s.PostedHtml}</div>"
                    };

                    dict[ppeType].Add(p);
                }
            }
示例#11
0
        /// <summary>
        /// 下载相关作品
        /// </summary>
        /// <param name="objParame"></param>
        public void GetRelatedWorks(object objParame)
        {
            try
            {
                var parame = (RequestParameEntity)objParame;
                var ids    = GetRelatedWorksIds(parame);
                if (ids != null && ids.Count > 0)
                {
                    foreach (var id in ids)
                    {
                        var itemUrl = "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=" + id;
                        var ri      = new RequestItemParameEntity()
                        {
                            ItemUrl = itemUrl, SavePath = parame.SavePath
                        };

                        if (isSingle)
                        {
                            GetWorksItem(ri);
                        }
                        else
                        {
                            while (!mut.DoDownAction(ri, GetWorksItem) && mut.IsContinue)
                            {
                                Thread.Sleep(1000);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
            finally
            {
                //if (mainThread != null && mainThread.IsAlive)
                //{
                //    mainThread.Abort();
                //}
            }
        }
示例#12
0
        private void SetColorText(string htmlFragment)
        {
            if (htmlFragment == null || htmlFragment.Length == 0)
            {
                return;
            }

            Paragraph paragraph;

            if (this.Blocks.Count == 0 ||
                (paragraph = this.Blocks[this.Blocks.Count - 1] as Paragraph) == null)
            {
                paragraph = new Paragraph();
                this.Blocks.Add(paragraph);
            }
            var nextOffset = 0;

            var regEx = new Regex(@"(\[color=#FFFFFF\](?<colortxt>.*?)\[/color\])", RegexOptions.IgnoreCase | RegexOptions.Singleline);

            foreach (Match match in regEx.Matches(htmlFragment))
            {
                if (match.Index == nextOffset)
                {
                    nextOffset = match.Index + match.Length;
                    paragraph.Inlines.Add(new Run {
                        Text = "(此处反白)->" + HtmlHelp.NoTag(match.Groups["colortxt"].Value) + "<-", Foreground = new SolidColorBrush(Colors.Red)
                    });
                }
                else if (match.Index > nextOffset)
                {
                    this.SetImgText(htmlFragment.Substring(nextOffset, match.Index - nextOffset));
                    nextOffset = match.Index + match.Length;
                    paragraph.Inlines.Add(new Run {
                        Text = "(此处反白)->" + HtmlHelp.NoTag(match.Groups["colortxt"].Value) + "<-", Foreground = new SolidColorBrush(Colors.Red)
                    });
                }
            }

            if (nextOffset < htmlFragment.Length)
            {
                this.SetImgText(htmlFragment.Substring(nextOffset));
            }
        }
示例#13
0
            static string toPopupHtml(NeedM s, bool isLoggedIn)
            {
                StringBuilder sb = new StringBuilder();

                sb.Append("<div class='need_met'>");
                sb.Append("<h1>Met Needs</h1>");
                sb.Append(s.TwitterHtml);
                if (isLoggedIn)
                {
                    sb.Append($"<a class='edit_link' target='_blank' title='View Record' href='/edit-needs/{s.Id}'><i class='fas fa-link fa-2x'></i></a>");
                }
                sb.Append(HtmlHelp.LabelledTag("Postcode:", s.Postcode));
                sb.Append(HtmlHelp.LabelledTag("Organisation:", s.Organisation));
                sb.Append(HtmlHelp.LabelledList("Needs Met:", s.PpeTypes));
                sb.Append(HtmlHelp.LabelledTag("Other Needs Met:", s.OtherPpeTypes));
                sb.Append(s.PostedHtml);
                sb.Append("</div>");
                return(sb.ToString());
            }
示例#14
0
 /// <summary>
 /// 获取所有关注的画师,只能由mainThread执行
 /// </summary>
 public void GetAllFollow(object objParame)
 {
     try
     {
         GetAllFollowByType((RequestParameEntity)objParame, "show");
         GetAllFollowByType((RequestParameEntity)objParame, "hide");
     }
     catch (Exception ex)
     {
         AddErrorMsg(ex.Message + "\r\n");
         HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
     }
     finally
     {
         if (mainThread != null && mainThread.IsAlive)
         {
             mainThread.Abort();
         }
     }
 }
示例#15
0
        private void CheckUpdate()
        {
            try
            {
                var updateFile = XmlHelp.GetInnerTextByPath("Config:UpdateFileName");

                var ps = Process.GetProcessesByName(updateFile.Replace(".exe", ""));
                foreach (var p in ps)
                {
                    p.Kill();
                }
                if (File.Exists(updateFile))
                {
                    File.Delete(updateFile);
                }

                var url = XmlHelp.GetInnerTextByPath("Config:CheckVersionUrl");

                var json = HtmlHelp.Get(url);

                var result = JsonHelp.DeserializeObject <ResultEntity>(json);

                if (result.Code == "-1")
                {
                    MessageBox.Show(result.Message);
                }
                else if (result.Code == "1")
                {
                    UpdateDetailForm f = new UpdateDetailForm();
                    f.updateSoft   = result.UpdateSoft;
                    f.updateDetail = result.UpdateDetail;

                    f.Show();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("检查更新失败!");
                //MessageBox.Show(e.Message);
            }
        }
示例#16
0
        /// <summary>
        /// 获取单个图片
        /// </summary>
        /// <param name="itemUrl"></param>
        /// <param name="html"></param>
        public void GetSigImage(string itemUrl, string html, string savePath)
        {
            var imgR = new Regex(RegexHelp.Other.GetSingleImage, RegexOptions.Singleline);
            var imgM = imgR.Match(html);

            if (imgM == null || imgM.Groups["Url"].Value == "")
            {
                AddErrorMsg(string.Format("获取URL:{0} 的图片失败!\r\n", itemUrl));
                return;
            }

            var imgUrl = HtmlHelp.NeedHost(itemUrl, imgM.Groups["Url"].Value);

            lock (Multithreading.ObjLockExistFile)
            {
                if (File.Exists(savePath + "/" + Path.GetFileName(imgUrl)))
                {
                    if (form.ChkNeglect.Checked)
                    {
                        AddErrorMsg(string.Format("跳过已存在的图片:{0}!\r\n", imgUrl));
                    }
                    return;
                }
            }

            AddSuccessMsg(string.Format("正在下载图片:{0} \r\n", imgUrl));

            var  filePath = savePath + "/" + Path.GetFileName(imgUrl);
            bool b        = DownHelp.DownImage(imgUrl, filePath, 1024, itemUrl, 5);

            if (b)
            {
                AddSuccessMsg(string.Format("下载图片:{0} 成功\r\n", imgUrl));
            }
            else
            {
                var txt = string.Format("下载图片:{0} 失败\r\n Url:{1}\r\n", imgUrl, itemUrl);
                AddErrorMsg(txt);
                HtmlHelp.SaveStringToTxt(txt, "FaildMsg.txt");
            }
        }
示例#17
0
            static string toPopupHtml(SupplyM s, bool isLoggedIn)
            {
                StringBuilder sb = new StringBuilder();

                sb.Append("<div class='supply'>");
                sb.Append("<h1>Supplies Post</h1>");
                sb.Append(s.WebsiteHtml);
                if (isLoggedIn)
                {
                    sb.Append($"<a class='edit_link' target='_blank' title='View Record' href='/edit-supplies/{s.Id}'><i class='fas fa-link fa-2x'></i></a>");
                }
                sb.Append(HtmlHelp.LabelledTag("Organisation:", s.Organisation));
                sb.Append(HtmlHelp.LabelledTag("Description:", s.Description));
                sb.Append(HtmlHelp.LabelledList("Supplies:", s.PpeTypes));
                sb.Append(HtmlHelp.LabelledTag("Other Supplies:", s.OtherPpeTypes));
                sb.Append(HtmlHelp.LabelledTag("Capacity:", s.CapacityNotes));                 //TODO:TD switch to compiled info from ppetTypes for new posts
                //TODO:contact details
                sb.Append(s.PostedHtml);
                sb.Append("</div>");
                return(sb.ToString());
            }
示例#18
0
        /// <summary>
        /// 下载指定画师的收藏
        /// </summary>
        /// <param name="objParame"></param>
        public void GetAuthorCollection(object objParame)
        {
            try
            {
                var parame = (RequestParameEntity)objParame;

                GetCollectionByType(parame, parame.ID, "https://www.pixiv.net/bookmark.php?id=");
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
            finally
            {
                if (mainThread != null && mainThread.IsAlive)
                {
                    mainThread.Abort();
                }
            }
        }
示例#19
0
        /// <summary>
        /// 获取单个作品
        /// </summary>
        /// <param name="objParame"></param>
        public void GetSingleWorks(object objParame)
        {
            try
            {
                if (!mut.IsContinue)
                {
                    return;
                }

                //因为循环里没有做修改,所有可以放外面
                var parame = (RequestParameEntity)objParame;

                form.BeginInvoke(new Action(() => { form.RtxtSuccess.Text = ""; }));

                var ri = new RequestItemParameEntity()
                {
                    ItemUrl = parame.ListUrl, SavePath = parame.SavePath
                };

                GetWorksItem(ri);

                if (parame.DownRelatedWorks)
                {
                    GetRelatedWorks(objParame);
                }
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
            finally
            {
                if (mainThread != null && mainThread.IsAlive)
                {
                    mainThread.Abort();
                }
            }
        }
示例#20
0
        public static Need FromWebNeed(WebNeed s)
        {
            Need respVal = new Need {
                UshahidiId         = s.UshahidiId,
                Timestamp          = s.Timestamp,
                StatusId           = (int)PostStatus.Published, //always
                PublishAnonymously = s.PublishAnonymously,
                ContactName        = s.ContactName,             //NN
                JobTitle           = s.JobTitle,
                Email = Settings.DefaultEmail,                  //Email = s.Email,//no point - empty  //TODO:ensure volunteers do this
                //PhoneNumber = s.PhoneNumber,//no point - empty  //TODO:ensure volunteers do this
                OrganisationName = s.OrganisationName,
                Department       = s.Department,
                OrgTypeId        = s.OrgTypeId,
                OrgTypeOther     = s.OrgTypeOther,
                TownOrCity       = s.TownOrCity,
                TweetId          = s.TweetId,
                Postcode         = s.Postcode,         //NN
                TellUsMore       = s.TellUsMore,
                Latitude         = s.Latitude,
                Longitude        = s.Longitude,
            };


            if (respVal.ContactName != null && respVal.ContactName.Length > 100)
            {
                Debugger.Break();
            }
            if (respVal.Department != null && respVal.Department.Length > 200)
            {
                Debugger.Break();
            }
            if (respVal.Email != null && respVal.Email.Length > 320)
            {
                Debugger.Break();
            }
            if (respVal.JobTitle != null && respVal.JobTitle.Length > 100)
            {
                Debugger.Break();
            }
            if (respVal.OrgTypeOther != null && respVal.OrgTypeOther.Length > 300)
            {
                Debugger.Break();
            }
            if (respVal.OrganisationName != null && respVal.OrganisationName.Length > 200)
            {
                Debugger.Break();
            }
            if (respVal.PhoneNumber != null && respVal.PhoneNumber.Length > 100)
            {
                Debugger.Break();
            }
            if (respVal.Postcode != null && respVal.Postcode.Length > 8)
            {
                Debugger.Break();
            }
            if (respVal.TownOrCity != null && respVal.TownOrCity.Length > 200)
            {
                Debugger.Break();
            }

            respVal.NeedPpeTypes = s.NeedPpeTypes.SelectToList(ppe => FromWebNeedPpeType(ppe, respVal));
            List <byte> t = s.NeedPpeTypes.GroupBy(g => g.PpeTypeId).Where(g => g.Count() > 1).SelectToList(g => g.Key);

            if (t.Count > 0)
            {
                Debug.WriteLine($"UshahidiId {s.UshahidiId} Need has duplicate PPE types {HtmlHelp.BuildString(t, ", ")}");
                respVal = null;
            }

            //if(s.UshahidiId == 471)
            //{
            //	Debug.WriteLine($"UshahidiId {s.UshahidiId} has an awesome postcode {respVal.Postcode}");
            //	respVal = null;
            //}

            return(respVal);
        }
示例#21
0
        /// <summary>
        /// 获取指定作品的动画
        /// </summary>
        public void GetCanvasZipFile(string itemUrl, string savePath, string pid)
        {
            //可以获取zip的url
            var zipHtmlUrl = string.Format("https://www.pixiv.net/ajax/illust/{0}/ugoira_meta", pid);

            var html = DownHelp.GetHtmlString(zipHtmlUrl, Encoding.UTF8, 5);
            var fReg = new Regex(RegexHelp.Other.GetAnimation, RegexOptions.Singleline);
            var fM   = fReg.Match(html);

            if (fM == null || fM.Groups["Url"].Value == "")
            {
                AddErrorMsg(string.Format("获取 {0} 的动画失败!\r\n", itemUrl));
                return;
            }

            //zip的Url路径
            var fileUrl = fM.Groups["Url"].Value.Replace("\\/", "/");

            //zip文件名
            var fileName = savePath + "/" + Path.GetFileName(fileUrl);

            lock (Multithreading.ObjLockExistFile)
            {
                if (File.Exists(fileName))
                {
                    if (form.ChkNeglect.Checked)
                    {
                        AddErrorMsg(string.Format("文件{0}已存在,已忽略!\r\n", fileName));
                    }
                    return;
                }
            }

            //获取文件总大小
            var total = HtmlHelp.GetFileContenLength(fileUrl, itemUrl);

            if (total == 0)
            {
                AddErrorMsg(string.Format("获取 {0} 的大小失败!\r\n", fileUrl));
                return;
            }

            //分批获取文件
            var b = HtmlHelp.DownFile(fileUrl, fileName, itemUrl, 299999, total);

            if (b)
            {
                AddSuccessMsg(string.Format("下载 {0} 的文件成功!\r\n", fileUrl));
            }
            else
            {
                AddErrorMsg(string.Format("下载 {0} 的文件失败!\r\n Url:{1}\r\n", fileUrl, itemUrl));
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }
                return;
            }

            //获取delay
            var dr    = new Regex(RegexHelp.Other.GetDelay, RegexOptions.Singleline);
            var dm    = dr.Match(html);
            var delay = "50";

            if (dm != null && dm.Groups["Delay"].Value != "")
            {
                delay = dm.Groups["Delay"].Value;
            }

            var dic = new Dictionary <string, string>()
            {
                { "SavePath", savePath },
                { "FileUrl", fileUrl },
                { "FileName", fileName },
                { "Delay", delay }
            };

            while (!mut.UnZipFile(dic, UnZipFile))
            {
                Thread.Sleep(5000);
            }
        }
示例#22
0
        private void SetImgText(string htmlFragment)
        {
            if (htmlFragment == null || htmlFragment.Length == 0)
            {
                return;
            }

            Paragraph paragraph;

            if (this.Blocks.Count == 0 ||
                (paragraph = this.Blocks[this.Blocks.Count - 1] as Paragraph) == null)
            {
                paragraph = new Paragraph();
                this.Blocks.Add(paragraph);
            }
            var nextOffset = 0;

            var regEx = new Regex(@"(\[img=(?<imgname>.*?)\](?<imgtxt>.*?)\[/img\])", RegexOptions.IgnoreCase | RegexOptions.Singleline);

            foreach (Match match in regEx.Matches(htmlFragment))
            {
                if (match.Index == nextOffset)
                {
                    nextOffset = match.Index + match.Length;

                    var run = new Run {
                        Text = "[此处有图片]", Foreground = new SolidColorBrush(Color.FromArgb(255, 150, 230, 230))
                    };
                    var link = new Hyperlink {
                    };
                    link.Click += new RoutedEventHandler((sender, e) =>
                    {
                        Navi.NavigationTo("/ImageView.xaml?url=" + HttpUtility.UrlEncode(match.Groups["imgtxt"].Value));
                    });
                    link.Inlines.Add(run);
                    paragraph.Inlines.Add(link);
                }
                else if (match.Index > nextOffset)
                {
                    this.SetImgText(htmlFragment.Substring(nextOffset, match.Index - nextOffset));
                    nextOffset = match.Index + match.Length;

                    var run = new Run {
                        Text = "[此处有图片]", Foreground = new SolidColorBrush(Color.FromArgb(255, 150, 230, 230))
                    };
                    var link = new Hyperlink {
                    };
                    link.Click += new RoutedEventHandler((sender, e) =>
                    {
                        Navi.NavigationTo("/ImageView.xaml?url=" + HttpUtility.UrlEncode(match.Groups["imgtxt"].Value));
                    });
                    link.Inlines.Add(run);
                    paragraph.Inlines.Add(link);
                }
            }

            if (nextOffset < htmlFragment.Length)
            {
                paragraph.Inlines.Add(new Run {
                    Text = HtmlHelp.NoTag(htmlFragment.Substring(nextOffset))
                });
            }
        }
示例#23
0
        /// <summary>
        /// 遍历列表页面,获取所有子项目,并自动获取下一页
        /// </summary>
        /// <param name="listUrl"></param>
        /// <param name="type"></param>
        /// <param name="doWork"></param>
        private void EachListPage(string listUrl, DownContentType type, Action <string> doWork)
        {
            try
            {
                while (mut.IsContinue)
                {
                    if (isSingle)
                    {
                        form.Invoke(new Action(() => { form.RtxtSuccess.Text = ""; form.TxtCurrListUrl.Text = listUrl; }));
                    }

                    AddSuccessMsg(string.Format("正在获取URL:{0} 的html!\r\n", listUrl));

                    var html = DownHelp.GetHtmlString(listUrl, Encoding.UTF8, 5);
                    if (html == "")
                    {
                        AddErrorMsg(string.Format("获取URL:{0} 的html失败!\r\n", listUrl));
                        return;
                    }

                    AddSuccessMsg(string.Format("获取URL:{0} 的html成功!\r\n", listUrl));

                    Regex pReg = new Regex(RegexHelp.GetRegex(type, RegexType.ListParentRegex), RegexOptions.Singleline);
                    var   pm   = pReg.Match(html);
                    if (pm == null || pm.Value == "")
                    {
                        AddErrorMsg(string.Format("获取URL:{0} 的父容器失败!\r\n", listUrl));
                        return;
                    }

                    var pHtml = pm.Value;

                    Regex lReg = new Regex(RegexHelp.GetRegex(type, RegexType.ListRegex), RegexOptions.Singleline);
                    var   lms  = lReg.Matches(pHtml);
                    if (lms == null || lms.Count <= 0)
                    {
                        AddErrorMsg(string.Format("获取URL:{0} 子项目失败!\r\n", listUrl));
                        return;
                    }

                    foreach (Match item in lms)
                    {
                        if (!mut.IsContinue)
                        {
                            return;
                        }

                        var itemUrl = item.Groups["Url"].Value;

                        doWork(itemUrl);
                    }

                    if (!mut.IsContinue)
                    {
                        return;
                    }

                    Regex nReg = new Regex(RegexHelp.GetRegex(type, RegexType.NextListRegex), RegexOptions.Singleline);
                    var   nm   = nReg.Match(html);
                    if (nm == null || nm.Groups["Next"].Value == "")
                    {
                        AddErrorMsg(string.Format("没有在:{0} 中获取到下一页!\r\n", listUrl));
                        form.Invoke(new Action(() =>
                        {
                            if (form.RadAllFollow.Checked && type == DownContentType.AllFollow)
                            {
                                form.LblOtherText.Text = string.Format("关注的{0}公开的画师已没有一下页!", getType == "show" ? "" : "非");
                            }
                            else if (form.RadSingle.Checked && type == DownContentType.SinglePainter)
                            {
                                form.LblOtherText.Text = "当前画师作品已没有一下页!";
                            }
                            else if (form.RadCollection.Checked && type == DownContentType.OwnCollection)
                            {
                                if (getType == "show" || getType == "hide")
                                {
                                    form.LblOtherText.Text = string.Format("收藏的{0}公开的作品已没有一下页!", getType == "show" ? "" : "非");
                                }
                                else
                                {
                                    form.LblOtherText.Text = string.Format("画师{0}收藏的作品已没有一下页!", getType);
                                }
                            }
                            else if (form.RadCollection.Checked && type == DownContentType.GetSearch)
                            {
                                form.LblOtherText.Text = string.Format("搜索的内容已没有一下页!");
                            }
                        }));
                        return;
                    }

                    var nextUrl = HtmlHelp.NeedHost(listUrl, nm.Groups["Next"].Value);
                    //EachListPage(nextUrl, type, doWork);
                    listUrl = nextUrl;
                    AddSuccessMsg(string.Format("正在获取下一页:{0}!\r\n", listUrl));
                }
            }
            catch (Exception ex)
            {
                AddErrorMsg(ex.Message + "\r\n");
                HtmlHelp.SaveStringToTxt(ex.Message + "\r\n" + ex.StackTrace + "\r\n\r\n", "Error.txt");
            }
        }
示例#24
0
        /// <summary>
        /// 获取更多图片
        /// </summary>
        /// <param name="moreUrl">查看更多Url</param>
        public void GetMoreImage(string moreUrl, string savePath)
        {
            AddSuccessMsg(string.Format("正在获取URL:{0} 的html!\r\n", moreUrl));

            var html = DownHelp.GetHtmlString(moreUrl, Encoding.UTF8, 5);

            if (html == "")
            {
                AddErrorMsg(string.Format("获取URL:{0} 的html失败!\r\n", moreUrl));
                return;
            }

            AddSuccessMsg(string.Format("获取URL:{0} 的html成功!\r\n", moreUrl));


            //获取放大镜集合
            var mReg = new Regex(RegexHelp.Other.GetMaxButton, RegexOptions.Singleline);
            var mms  = mReg.Matches(html);

            if (mms != null && mms.Count > 0)
            {
                //获取放大后的图片
                foreach (Match m in mms)
                {
                    var mUrl = m.Groups["Url"].Value;
                    mUrl = HtmlHelp.NeedHost(moreUrl, mUrl);
                    var mHtml = DownHelp.GetHtmlString(mUrl, Encoding.UTF8, 5);

                    var mmReg = new Regex(RegexHelp.Other.GetImageWhenMax, RegexOptions.Singleline);
                    var mmm   = mmReg.Match(mHtml);
                    if (mmm == null || mmm.Groups["Url"].Value == "")
                    {
                        AddErrorMsg(string.Format("获取URL:{0} 的图片失败!\r\n", mUrl));
                        return;
                    }

                    var imgUrl = HtmlHelp.NeedHost(mUrl, mmm.Groups["Url"].Value);

                    lock (Multithreading.ObjLockExistFile)
                    {
                        if (File.Exists(savePath + "/" + Path.GetFileName(imgUrl)))
                        {
                            if (form.ChkNeglect.Checked)
                            {
                                AddErrorMsg(string.Format("跳过已存在的图片:{0}!\r\n", imgUrl));
                            }
                            continue;
                        }
                    }

                    AddSuccessMsg(string.Format("正在下载图片:{0} \r\n", imgUrl));
                    var  filePath = savePath + "/" + Path.GetFileName(imgUrl);
                    bool b        = DownHelp.DownImage(imgUrl, filePath, 1024, moreUrl, 5);

                    if (b)
                    {
                        AddSuccessMsg(string.Format("下载图片:{0} 成功\r\n", imgUrl));
                    }
                    else
                    {
                        var txt = string.Format("下载图片:{0} 失败\r\n Url:{1}\r\n", imgUrl, moreUrl);
                        AddErrorMsg(txt);
                        HtmlHelp.SaveStringToTxt(txt, "FaildMsg.txt");
                    }
                }
            }
            else
            {
                AddErrorMsg(string.Format("没有获取到放大镜集合:{0}!\r\n", moreUrl));
                return;

                //直接获取图片
                var msReg = new Regex(RegexHelp.Other.GetImageWhenNotMax, RegexOptions.Singleline);
                var imgMs = msReg.Matches(html);

                foreach (Match m in imgMs)
                {
                    var imgUrl = m.Groups["Url"].Value;
                    imgUrl = HtmlHelp.NeedHost(moreUrl, imgUrl);

                    lock (Multithreading.ObjLockExistFile)
                    {
                        if (File.Exists(savePath + "/" + Path.GetFileName(imgUrl)))
                        {
                            if (form.ChkNeglect.Checked)
                            {
                                AddErrorMsg(string.Format("跳过已存在的图片:{0}!\r\n", imgUrl));
                            }
                            continue;
                        }
                    }

                    AddSuccessMsg(string.Format("正在下载图片:{0} \r\n", imgUrl));

                    var  filePath = savePath + "/" + Path.GetFileName(imgUrl);
                    bool b        = DownHelp.DownImage(imgUrl, filePath, 1024, moreUrl, 5);

                    if (b)
                    {
                        AddSuccessMsg(string.Format("下载图片:{0} 成功\r\n", imgUrl));
                    }
                    else
                    {
                        var txt = string.Format("下载图片:{0} 失败\r\n Url:{1}\r\n", imgUrl, moreUrl);
                        AddErrorMsg(txt);
                        HtmlHelp.SaveStringToTxt(txt, "FaildMsg.txt");
                    }
                }
            }
        }
示例#25
0
        private void SetEmojiText(string htmlFragment)
        {
            if (htmlFragment == null || htmlFragment.Length == 0)
            {
                return;
            }

            this.Blocks.Clear();

            Paragraph paragraph;

            if (this.Blocks.Count == 0 ||
                (paragraph = this.Blocks[this.Blocks.Count - 1] as Paragraph) == null)
            {
                paragraph = new Paragraph();
                this.Blocks.Add(paragraph);
            }
            var nextOffset = 0;

            var regEx = new Regex(@"(\[emot=(?<emoji>.*?)/\])", RegexOptions.IgnoreCase | RegexOptions.Singleline);

            foreach (Match match in regEx.Matches(htmlFragment))
            {
                if (match.Index == nextOffset)
                {
                    nextOffset = match.Index + match.Length;
                    if (match.Groups["emoji"].Value.Split(',').Count() > 1)
                    {
                        var grid = new Grid();
                        grid.Background = new SolidColorBrush(Colors.White);
                        grid.Margin     = new Thickness(1, 0, 1, 0);
                        var image = new Image();
                        var bi    = new BitmapImage(new Uri("/Assets/Emoji/"
                                                            + match.Groups["emoji"].Value.Split(',')[0] + "/" + match.Groups["emoji"].Value.Split(',')[1] + ".png", UriKind.RelativeOrAbsolute));
                        image.Source = bi;
                        image.Height = 60;
                        grid.Children.Add(image);
                        var container = new InlineUIContainer();
                        container.Child = grid;
                        paragraph.Inlines.Add(container);
                    }
                    else
                    {
                        this.SetAtText(HtmlHelp.NoHTML(match.Groups["emoji"].Value));
                    }
                }
                else if (match.Index > nextOffset)
                {
                    this.SetAtText(HtmlHelp.NoHTML(htmlFragment.Substring(nextOffset, match.Index - nextOffset)));
                    nextOffset = match.Index + match.Length;
                    if (match.Groups["emoji"].Value.Split(',').Count() > 1)
                    {
                        var grid = new Grid();
                        grid.Background = new SolidColorBrush(Colors.White);
                        grid.Margin     = new Thickness(1, 0, 1, 0);
                        var image = new Image();
                        var bi    = new BitmapImage(new Uri("/Assets/Emoji/"
                                                            + match.Groups["emoji"].Value.Split(',')[0] + "/" + match.Groups["emoji"].Value.Split(',')[1] + ".png", UriKind.RelativeOrAbsolute));
                        image.Source = bi;
                        image.Height = 60;
                        grid.Children.Add(image);
                        var container = new InlineUIContainer();
                        container.Child = grid;
                        paragraph.Inlines.Add(container);
                    }
                    else
                    {
                        this.SetAtText(HtmlHelp.NoHTML(match.Groups["emoji"].Value));
                    }
                }
            }

            if (nextOffset < htmlFragment.Length)
            {
                this.SetAtText(HtmlHelp.NoHTML(htmlFragment.Substring(nextOffset)));
            }
        }
        private void Help_Click(object sender, RoutedEventArgs e)
        {
            HtmlHelp help = new HtmlHelp("MainWindow", this);

            help.Show();
        }
示例#27
0
        private void ExportHtmlMDM()
        {
            MakeDir();
            string tableDataDirName      = "表数据示例";
            string tableStructureDirName = "表结构说明";

            lblMessage.Content = "读取Excel文件...";

            MdmBizHelper heper = new MdmBizHelper();
            var          codeDomainSystemSetAll = heper.ParseExcelToEntity(this.txtMDMFilePath.Text, "");

            #region 创建目录
            //一级域
            var level1domain = codeDomainSystemSetAll.Select(p => p.一级域代码).Distinct();
            foreach (var l1item in level1domain)
            {
                if (!string.IsNullOrWhiteSpace(l1item))
                {
                    if (!Directory.Exists(System.IO.Path.Combine(rootdir, mdmdir, l1item)))
                    {
                        Directory.CreateDirectory(System.IO.Path.Combine(rootdir, mdmdir, l1item));
                    }
                }
            }
            //二级域
            var level2domain = codeDomainSystemSetAll.Select(p => new { p.一级域代码, p.二级域代码 }).Distinct();
            foreach (var l2item in level2domain)
            {
                if (!string.IsNullOrWhiteSpace(l2item.一级域代码) && !string.IsNullOrWhiteSpace(l2item.二级域代码))
                {
                    if (!Directory.Exists(System.IO.Path.Combine(rootdir, mdmdir, l2item.一级域代码, l2item.二级域代码)))
                    {
                        Directory.CreateDirectory(System.IO.Path.Combine(rootdir, mdmdir, l2item.一级域代码, l2item.二级域代码));
                    }
                }
            }


            //三级域
            var level3domain = codeDomainSystemSetAll.Select(p => new { p.一级域代码, p.二级域代码, p.级域代码 }).Distinct();
            foreach (var l3item in level3domain)
            {
                if (!string.IsNullOrWhiteSpace(l3item.一级域代码) && !string.IsNullOrWhiteSpace(l3item.二级域代码) && !string.IsNullOrWhiteSpace(l3item.级域代码))
                {
                    if (!Directory.Exists(System.IO.Path.Combine(rootdir, mdmdir, l3item.一级域代码, l3item.二级域代码, l3item.级域代码)))
                    {
                        Directory.CreateDirectory(System.IO.Path.Combine(rootdir, mdmdir, l3item.一级域代码, l3item.二级域代码, l3item.级域代码));
                    }
                }
            }
            #endregion

            #region 生成页面

            foreach (var codesysitem in codeDomainSystemSetAll)
            {
                var storePath = string.Empty;
                if (!string.IsNullOrWhiteSpace(codesysitem.级域代码))
                {
                    storePath = System.IO.Path.Combine(rootdir, mdmdir, codesysitem.一级域代码, codesysitem.二级域代码, codesysitem.级域代码);
                }
                else if (!string.IsNullOrWhiteSpace(codesysitem.二级域代码))
                {
                    storePath = System.IO.Path.Combine(rootdir, mdmdir, codesysitem.一级域代码, codesysitem.二级域代码);
                }
                else if (!string.IsNullOrWhiteSpace(codesysitem.一级域代码))
                {
                    storePath = System.IO.Path.Combine(rootdir, mdmdir, codesysitem.一级域代码);
                }

                var storePathFull = System.IO.Path.Combine(storePath, $"{codesysitem.代码系统}.html");

                HtmlHelp.CreateMDMCodeSystemHtml(codesysitem, true, storePathFull);
            }


            #endregion

            #region 生成索引
            //存放目录为根目录
            string mdmIndexPath = System.IO.Path.Combine(rootdir, $"{"主数据目录"}.html");

            HtmlHelp.CreateMDMCodeSysIndexHtml(codeDomainSystemSetAll, true, mdmIndexPath, rootdir, mdmdir);

            #endregion
            lblMessage.Content = "完成mdm的html处理...";
        }
示例#28
0
        private void ShowTimeTable(string timetable)
        {
            //lvkb.Clear();
            Task.Factory.StartNew(() =>
            {
                Thread.Sleep(1000);
                lvkb.BeginInvoke(new Action(() =>
                {
                    GUI_tips.Hide();
                    lvkb.Clear();
                    barLoad.Show();
                    loadText.Show();
                    barLoad.Value = 0;
                    loadText.Text = "正在准备数据";
                }));
                //timetable = HttpHelp.HttpGet("http://jw.jltc.edu.cn/JWXS/pkgl/XsKB_List.aspx", Global.LoginCookie);
                List <List <string> > data = HtmlHelp.GetTable(timetable);
                if (data == null)
                {
                    lvkb.BeginInvoke(new Action(() => { loadText.Text = "数据准备完毕"; }));
                    Thread.Sleep(1000);
                    for (int i = 0; i < barLoad.Maximum; i++)
                    {
                        lvkb.BeginInvoke(new Action(() => { barLoad.Value = i; }));
                        Thread.Sleep(10);
                    }

                    lvkb.BeginInvoke(new Action(() =>
                    {
                        GUI_tips.Text = "检测到当前课表为空";
                        barLoad.Hide();
                        loadText.Hide();
                        GUI_tips.Show();
                    }));
                    return;
                }

                itemCount = data[0].Count;
                lvkb.BeginInvoke(new Action(() => { loadText.Text = "数据准备完毕"; }));
                Thread.Sleep(1000);
                for (int i = 0; i < barLoad.Maximum; i++)
                {
                    lvkb.BeginInvoke(new Action(() => { barLoad.Value = i; }));
                    Thread.Sleep(10);
                }

                lvkb.BeginInvoke(new Action(() =>
                {
                    barLoad.Hide();
                    loadText.Hide();
                    ImageList imgList = new ImageList
                    {
                        ImageSize = new Size(1, 100)
                    };
                    lvkb.SmallImageList            = imgList;
                    int itemwidth                  = Width / data[0].Count;
                    List <ListViewItem> table_data = new List <ListViewItem> {
                    };
                    data[0][0] = "";
                    foreach (string s1 in data[0])
                    {
                        lvkb.Columns.Add(s1, itemwidth, HorizontalAlignment.Left);
                    }

                    for (int i = 1; i < data.Count; i++)
                    {
                        ListViewItem item = new ListViewItem(data[i][0], 0);
                        for (int j = 1; j < data[i].Count; j++)
                        {
                            item.SubItems.Add(data[i][j]);
                        }

                        table_data.Add(item);
                    }

                    lvkb.Items.AddRange(table_data.ToArray());
                }));
            });
        }
示例#29
0
        public static Supplier FromWebSupply(WebSupply s, string currentUserId)
        {
            Supplier respVal = new Supplier {
                UshahidiId        = s.UshahidiId,
                Timestamp         = s.Timestamp,
                StatusId          = (int)PostStatus.Published,        //always
                Name              = s.Name,
                Description       = s.Description,
                SupplierTypeId    = s.SupplierTypeId,
                SupplierTypeOther = s.SupplierTypeOther,
                //Email = s.Email,//imports from g sheets
                Website = Urls.GetFullValidHttpUrl(s.Website),
                //PhoneNumber = s.PhoneNumber,//imports from g sheets
                //ContactName = s.ContactName,//imports from g sheets
                Postcode      = s.Postcode,           //NN
                TellUsMore    = s.TellUsMore,
                Latitude      = s.Latitude,
                Longitude     = s.Longitude,
                CapacityNotes = s.CapacityNotes
            };

            respVal.SupplierPpeTypes = s.SupplierPpeTypes.SelectToList(ppe => FromWebSupplyPpeType(ppe, respVal));
            List <byte> t = s.SupplierPpeTypes.GroupBy(g => g.PpeTypeId).Where(g => g.Count() > 1).SelectToList(g => g.Key);

            if (t.Count > 0)
            {
                Debug.WriteLine($"UshahidiId {s.UshahidiId} Supplier has duplicate PPE types {HtmlHelp.BuildString(t, ", ")}");
                respVal = null;
            }
            //else
            //{
            //	if(!String.IsNullOrWhiteSpace(s.ContactDetailsForNotes)) //TODO:remove when confirmed
            //	{
            //		SupplierNote newNote = new SupplierNote
            //		{
            //			Supplier = respVal,
            //			Note = new Note
            //			{
            //				Timestamp = DateTimeOffset.Now,
            //				UserId = currentUserId,
            //				Text = $"Contact Details From Ushahidi :{Environment.NewLine}{s.ContactDetailsForNotes}",
            //			}
            //		};
            //		respVal.SupplierNotes.Add(newNote);
            //	}
            //}
            return(respVal);
        }
示例#30
0
        private void ExportHtml()
        {
            string tableDataDirName      = "表数据示例";
            string tableStructureDirName = "表结构说明";

            Directory.CreateDirectory(".//tmp");

            Directory.CreateDirectory(".//tmp//resources");


            //定义目录DataTable 结构
            Synyi.DBChmCreater.Entity.DataTableCollection dataTableStructures = new Synyi.DBChmCreater.Entity.DataTableCollection("<b>数据库表目录</b>");

            //将选中项的总数 设置为进度条最大值 +1项是表目录文件
            Dispatcher.Invoke(new Action(() =>
            {
                tpbExport.Value   = 0;
                tpbExport.Maximum = ckbData.SelectedItems.Count + ckbTables.SelectedItems.Count + 1;// ckbData.CheckedItems.Count + ckbTables.CheckedItems.Count + 1;
            }));

            //获取需要导出的表结构 选中项
            List <string> selectTabStructList = new List <string>();

            foreach (var item in ckbTables.SelectedItems) // CheckedItems)
            {
                selectTabStructList.Add(item.ToString());
            }

            #region 导出表结构 数据字典部分 导出为html
            if (selectTabStructList.Count > 0)
            {
                lblMessage.Content = "准备表结构文件...";
                //得到选中的表结构的字段信息
                var lstDt      = dal.GetTableStruct(selectTabStructList);
                var pathTables = $"./tmp/{tableStructureDirName}";
                Directory.CreateDirectory(pathTables);
                var tables     = dal.GetTables();
                var allSchemas = tables.Select(p => p.Domain).Distinct();
                foreach (var item in allSchemas)
                {
                    Directory.CreateDirectory(System.IO.Path.Combine(pathTables, item));
                }
                var tableIndex = 1;
                foreach (var dt in lstDt)
                {
                    //得到表描述
                    var array   = dt.TableName.Split('.');
                    var domain  = array[0];
                    var tabname = array[1];
                    var drs     = tables.Where(p => p.TableName == tabname).Where(p => p.Domain == domain).FirstOrDefault();// Select("表名='" + tabname + "' and 域='" + domain + "'");
                    var desp    = string.Empty;
                    if (drs != null)
                    {
                        desp = drs.TableDescription;
                    }
                    //创建表字段信息的html
                    HtmlHelp.CreateHtml(dt, true, System.IO.Path.Combine(pathTables, dt[0].tableschema, $"{dt.TableName}.html"), true, desp, true);
                    //构建表目录
                    dataTableStructures.Add(new DataTableItem {
                        TableNo = tableIndex++, Domain = drs.Domain, TableName = $"<a href=\"{tableStructureDirName}\\{drs.Domain}\\{ dt.TableName}.html\">{ dt.TableName.Split('.').GetValue(1)}</a>", TableDescription = desp
                    });
                    //改变进度
                    Dispatcher.Invoke(new Action(() => { tpbExport.Value++; }));
                }
                //导出表目录
                HtmlHelp.CreateHtml(dataTableStructures, false, "./tmp/" + defaultHtml, false, string.Empty, false); //默认页面
                Dispatcher.Invoke(new Action(() => { tpbExport.Value++; }));
            }
            #endregion

            #region 导出表数据  表中的数据示例 导出为html
            //传递需要导出数据的table选中项  得到数据内容
            selectTabStructList.Clear();
            foreach (var item in ckbData.SelectedItems)  //CheckedItems)
            {
                selectTabStructList.Add(item.ToString());
            }
            if (selectTabStructList.Count > 0)
            {
                Dispatcher.Invoke(new Action(() => { lblMessage.Content = "正在生成表数据数据..."; }));

                //读取ini
                int result = ini.GetInt32("Set", "maxrow", -1);

                var lstDt = dal.GetTableData(selectTabStructList, result);
                //创建常用数据的html
                var pathTables = $"./tmp/{tableDataDirName}";
                Directory.CreateDirectory(pathTables);
                var selecttabdataschemas = selectTabStructList.Select(p => p.Split('.')[0]).Distinct();
                foreach (var item in selecttabdataschemas)
                {
                    Directory.CreateDirectory(System.IO.Path.Combine(pathTables, item));
                }

                foreach (var dt in lstDt)
                {
                    HtmlHelp.CreateHtml2(dt, true, System.IO.Path.Combine(System.IO.Path.Combine(pathTables, dt.TableName.Split('.')[0]), dt.TableName + ".html"), true);
                    Dispatcher.Invoke(new Action(() => { tpbExport.Value++; }));
                }
            }

            Dispatcher.Invoke(new Action(() => { lblMessage.Content = "成功生成HTML..."; }));
            #endregion
        }