private void TestConvert(RtfSource rtf, string html) { var actual = Rtf.ToHtml(rtf); ParseRender.AssertEqual(html, actual); }
protected void Page_Load(object sender, EventArgs e) { //// Global gb = Session["gb"] as Global;;; pp = gb.pp; Label1.Text = Session["Lexserise"] as String; exeriseid = Session["Lexserise"] as String; st = Session["user"] as StudInfo; var questionQuery1 = from o in pp.context.exerDetail where o.lid == int.Parse(exeriseid) && o.typeq == 3 orderby o.id select o; ell = questionQuery1.ToList <exerDetail>(); int numm = 0; /////////////////////////////////////////////////////////// List <extime> ltemp = Session["ltemp"] as List <extime>; DateTime dtnow = DateTime.Now; // DateTime stime = new DateTime(); // DateTime etime = new DateTime(); //"{ eid = 3164, ename = 20-21绪论, stime = 2020/10/12 0:00:00, etime = 2020/11/6 0:00:00 } bool benable = true; foreach (extime o in ltemp) { int lexid = o.eid; if (lexid == int.Parse(exeriseid)) { DateTime stime = (DateTime)o.stime; DateTime etime = (DateTime)o.etime; if (dtnow < stime || dtnow > etime) { benable = false; } } } // if (!benable) Button1.Enabled = false; //////////////////////////////////// foreach (exerDetail eld in ell) { var questionQuery2 = from o in pp.context.SQues where o.id == eld.qid select o; SQues mcq = questionQuery2.First <SQues>(); System.IO.MemoryStream mstream = new System.IO.MemoryStream(mcq.question, false); StreamReader rt = new StreamReader(mstream); RtfSource rs = new RtfSource(rt); int no = numm + 1; var html2 = Rtf.ToHtml(rs); // viewDiv.InnerHtml = no+"."+html2; HtmlGenericControl Div2 = new HtmlGenericControl(); Div2.ID = "div" + numm; HtmlGenericControl Div3 = new HtmlGenericControl(); Div3.ID = "div" + (numm + 1000); HtmlGenericControl Div4 = new HtmlGenericControl(); Div4.ID = "pdiv" + numm; Button rbl = new Button(); if (!benable) { rbl.Enabled = false; } rbl.Click += new System.EventHandler(this.but_Click); rbl.CommandArgument = numm.ToString(); HtmlInputFile fbutton = new HtmlInputFile(); fbutton.Accept = "image/*"; fbutton.ID = numm.ToString(); lfb.Add(fbutton); // CommandArgument = "Descending" // OnCommand = "CommandBtn_Click" rbl.Text = "上传图片"; rbl.ID = "rbl" + numm; Image Image1 = new Image(); HtmlGenericControl Div5 = new HtmlGenericControl(); Div5.InnerHtml = "</br>" + "</br>"; if (numm % 2 == 0) { Div2.Style.Add("lcs", "OVERFLOW: auto; WIDTH: 400px; HEIGHT: 400px;color:blue;font-size:16px"); } else { Div2.Style.Add("lcs", "OVERFLOW: auto; WIDTH: 400px; HEIGHT: 400px;color: balck;font-size:16px"); } ///读取答案 var questionQuery3 = from o in pp.context.studAnsw where o.did == eld.id && o.lid == eld.lid && o.stid == st.studentid select o; if (questionQuery3.Count <studAnsw>() > 0) { if (questionQuery3.First <studAnsw>().answ3 != null) { // bool ics = (bool)questionQuery3.First<studAnsw>().answ2; // // Image himg = new Image(); // byte[] bytes = questionQuery3.First<studAnsw>().answ3; // Response.BinaryWrite(bytes); // MemoryStream ms = new MemoryStream(bytes); // himg = Image.FromStream(ms, true); // byte[] bytes = questionQuery3.First <studAnsw>().answ3; MemoryStream MStream = new MemoryStream(bytes); string base64 = Convert.ToBase64String(MStream.ToArray()); Image1.ImageUrl = "data:image/png;base64," + base64; Image1.ImageAlign = ImageAlign.Middle; // Image1.Width = 600; Image1.Width = Unit.Percentage(70); Div4.Controls.Add(Image1); } } //// Div3.Controls.Add(fbutton); Div3.Controls.Add(rbl); Div2.InnerHtml = "</br>" + no + "." + html2 + "</br>"; numm = numm + 1; // rrtf.Add(richTextBox1.Rtf); viewDiv.Controls.Add(Div2); viewDiv.Controls.Add(Div4); viewDiv.Controls.Add(Div5); viewDiv.Controls.Add(Div3); //查询答案 /*var q2 = from q in pp.context.studAnsw * where q.lid == eld.lid && q.stid == pp.st.studentid && q.did == eld.id * select q; * studAnsw answ1 = null; #00FFFF * if (q2.Count<studAnsw>() > 0) { answ1 = q2.First<studAnsw>(); Lmqansw.Add(answ1); } * ell = questionQuery1.ToList<exerDetail>(); */ } //// }
public string getHTML(PDF pdf) { string htmlMassnahmen = Rtf.ToHtml(pdf.beschreibungMassnahme.Rtf); htmlMassnahmen = reduceRtfFormatting(htmlMassnahmen); string html = ""; html = $@" <div style='position: fixed; left: 150px; top: 810px; width:65% '> <p style='font-size: 8px; '>Eictronic GmbH -Sitz: 37339 Berlingerode - Amtsgericht Jena - HRB 513528 - Geschäftsführer: Jörg Boden Steuernummer: 157 / 208 / 08940 UST - ID - Nr.: DE 251137789 Finanzamt Mühlhausen</p> </div> <p style='font-size: 12px; ' > Eictronic GmbH, Gasse 25, 37339 Berlingerode </p> <table> <tr> <td valign: top> {pdf.empfaenger.AnsprechpartnerVorname} {pdf.empfaenger.AnsprechpartnerName} </td> </tr> <tr> <td valign: top> {pdf.empfaenger.Firma} </td> </tr> <tr> <td valign: top> {pdf.empfaenger.Bereich} </td> </tr> <tr> <td valign: top> {pdf.empfaenger.Straße} </td> </tr> <tr> <td valign: top> {pdf.empfaenger.PLZ} {pdf.empfaenger.Ort} </td> </tr> </table> <table style='margin-top: 30px; '> <tr> <td valign: top> Aufragsnummer: </td> <td> {pdf.auftrag.SMNummer} (bei Rückfragen bitte immer angeben) </td> </tr> <tr> <td valign: top> Ansprechpartner: </td> <td> {pdf.ansprechpartner.BearbeiterVorname} {pdf.ansprechpartner.BearbeiterName}, {pdf.ansprechpartner.Telefon}, {pdf.ansprechpartner.Email} </td> </tr> <tr> <td valign= top> Datum: </td> <td> {pdf.datum.ToString("dd.MM.yyyy")} </td> </tr> <tr> <td valign=top > Betreff: </td> <td> Zustimmung des Trägers der Wegebaulast nach §68 Telekommunikationsgesetz (TKG) </td> </tr> </table> "; //ort der Maßnahmen html += $@" <table style='width:100%; margin-top:15px'> <tr> <td style='valign: top; width:20%'> Bauvorhaben: </td> <td> {pdf.ortDerMassnahme} </td> </tr> </table> "; //anschreiben html += $@" <div id='anschreiben'> <p> Sehr geehrte Damen und Herren, </br> </br> die Telekom Deutschland GmbH beabsichtigt nach den beiliegenden Plänen ihre </br> Telekommunikationslinien zu ändern/zu erweitern.</br> Dazu hat sie uns, die Eictronic GmbH beauftragt und bevollmächtigt die Aufgaben der Planung</br> und Wegesicherung wahrzunehmen. </p> </div> <table style='width: 100%; margin-top:30px'> <tr> <td valign=top style=' width:20%'> Baubeschreibung: </td> </tr> <tr> <td valign=top> {htmlMassnahmen} </td> </tr> </table> <table style='page-break-inside: avoid'> <tr> <td> Wir bitten Sie, die Zustimmung gemäß § 68 Abs. 3 Satz 1 TKG zugunsten der Telekom Deutschland GmbH (Reg-Nr.: 93/007 nach § 6 TKG) als Nutzungsberechtigte nach § 68 Abs. 1 i. V. m. § 69 Abs. 1 TKG zu erteilen. Bitte senden Sie die Zustimmung unter Angabe der im Betreff genannten SM-Nr. an:</br></br></br> </td> </tr> <tr> <td> <b>{pdf.wesiTeam.Firma}</b> </td> </tr> <tr> <td> <b>{pdf.wesiTeam.Niederlassung}</b> </td> </tr> <tr> <td> <b>{pdf.wesiTeam.Bereich}</b> </td> </tr> <tr> <td> <b>{pdf.wesiTeam.Strasse}</b> </td> </tr> <tr> <td> <b>{pdf.wesiTeam.PLZ} {pdf.wesiTeam.Stadt}</b> </td> </tr> </table> <table style='width:100%; page-break-inside: avoid'> <tr> <td> <p> Rechtzeitig vor Baubeginn wird Ihnen der genaue Ausführungszeitraum sowie die mit den Arbeiten beauftragte Firma schriftlich mitgeteilt (Baubeginnanzeige). </p> <p> Vorraussichtllicher Ausführungszeitraum: {pdf.ausfuehrungszeitraum.ToString("MMMM yyyy")} "; if (pdf.ausfuehrungszeitraum.Month != pdf.ausfuehrungszeitraumEnde.Month || pdf.ausfuehrungszeitraum.Year != pdf.ausfuehrungszeitraumEnde.Year) { html += $@" bis {pdf.ausfuehrungszeitraumEnde.ToString("MMMM yyyy")}"; } html += $@" <p> Falls bei der Bauausführung Ihre Belange betroffen sind, bitten wir um deren Angabe und um Beifügung von Plänen der betroffenen Anlagen.</br> </p> <p style='margin-top:30px'> Für Rückfragen stehen wir Ihnen gern zur Verfügung </p> <p style='margin-top:60px'> Mit freundlichen Grüßen: </p> <p> i.A. {pdf.ansprechpartner.BearbeiterVorname} {pdf.ansprechpartner.BearbeiterName} </p> </td> </tr> </table> <p> Anlagen: </p> "; foreach (string s in pdf.Zusatzanlagen) { html += "<p>" + s + "</p>"; } return(html); }
//[TestMethod] public void Adhoc() { using (var stream = File.OpenRead(@"C:\Users\erdomke\source\GitHub\Message.rtf")) File.WriteAllText(@"C:\Users\erdomke\source\GitHub\Message.html", Rtf.ToHtml(stream)); }
static void Main() { Console.WriteLine("Please enter the name of the input file"); input_file = Console.ReadLine(); try { // открываем поток чтения из файла var sr = new StreamReader(input_file + ".ged", Encoding.Default); // узнаем количество строк в файле и создаем соотвествующий массив int count = File.ReadAllLines(input_file + ".ged").Length; array_file = new string[count]; // считываем все строки в массив for (int i = 0; !sr.EndOfStream; i++) { array_file[i] = sr.ReadLine(); } // закрываем поток входного файла sr.Close(); // пробегаемся по всем строкам массива, если видим строку нащинающуюся с "0 @" // то отдаем массив на растерзание парсеру указав ему с какой строки парсить for (int i = 0; i < array_file.Length; i++) { if (array_file[i].StartsWith("0 @")) { Parse(i); } } // удаляем предыдущий выходной файл File.Delete("family_tree.rtf"); // открываем поток для записи FileStream fs = new FileStream("family_tree.rtf", FileMode.CreateNew); StreamWriter sw = new StreamWriter(fs, Encoding.Default); // пишем заголовок в rtf файл sw.WriteLine(@"{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204{\*\fname Arial;}Arial CYR;}{\f1\fnil\fcharset0 Calibri;}}"); sw.WriteLine(@"{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\hyphpar0\sa160\kerning3\f0\fs24 %\'cf\'ee\'eb\par"); // прогоняемся по коллекции людей, заодно запишем информацию о них в rtf файл foreach (var x in Person.person_dictionary) { Console.WriteLine("person:" + x.Key); Console.WriteLine(" givn:" + x.Value.givn); Console.WriteLine(" surn:" + x.Value.surn); Console.WriteLine(" male:" + x.Value.sex_male); sw.Write(Rtf.Encoding("gender(\'" + x.Value.givn + "\'-\'" + x.Value.surn + "\'," + (x.Value.sex_male ? "m" : "f"))); sw.WriteLine(").\\par"); } sw.WriteLine("\\par"); sw.Write(Rtf.Encoding("%Кто с кем в браке. Слева мужчина, справа женщина.")); sw.WriteLine("\\par"); // прогоняемся по коллекции семей, заодно запишем информацию о том кто на ком женат foreach (var x in Family.family_dictionary) { try { sw.Write(Rtf.Encoding("marriage(\'" + x.Value.husband.givn + "\'-\'" + x.Value.husband.surn)); } catch { sw.Write(Rtf.Encoding("marriage(\'" + "NOT_PEOPLE")); } try { sw.WriteLine(Rtf.Encoding("\',\'" + x.Value.wife.givn + "\'-\'" + x.Value.wife.surn) + "\').\\par"); } catch { sw.WriteLine(Rtf.Encoding("\',\'" + "NOT_PEOPLE" + "\'-\'") + "\').\\par"); } } sw.WriteLine("\\par"); sw.WriteLine("\\par"); sw.Write(Rtf.Encoding("% у кого какие родители. Отец, мать, ребёнок")); sw.WriteLine("\\par"); // снова прогоняемся по коллекции семей, и запишем информацию о том кто чей ребенок foreach (var x in Family.family_dictionary) { Console.WriteLine("family:" + x.Key); try { Console.WriteLine(" husb:" + x.Value.husband.givn + " " + x.Value.husband.surn); } catch { Console.WriteLine(" husb: NOT_PEOPLE"); } try { Console.WriteLine(" wife:" + x.Value.wife.givn + " " + x.Value.wife.surn); } catch { Console.WriteLine(" wife: NOT_PEOPLE"); } // в каждой семье есть коллекция в которой мы храним всех детей, пробегаемся по ней foreach (var n in x.Value.children) { Console.WriteLine(" chil:" + n.Key); Console.WriteLine(" name:" + n.Value.givn); try { sw.Write(Rtf.Encoding("parents(\'" + x.Value.husband.givn + "\'-\'" + x.Value.husband.surn)); } catch { sw.Write(Rtf.Encoding("parents(\'" + "NOT_PEOPLE")); } try { sw.Write(Rtf.Encoding("\',\'" + x.Value.wife.givn + "\'-\'" + x.Value.wife.surn)); } catch { sw.Write(Rtf.Encoding("\',\'" + "NOT_PEOPLE")); } sw.WriteLine(Rtf.Encoding("\',\'" + n.Value.givn + "\'-\'" + n.Value.surn) + "\').\\par"); } } // обозначаем конец rtf и закрываем поток записи sw.WriteLine(@"}"); sw.Close(); Console.WriteLine("\n\n-----------------------\nReady"); Console.ReadLine(); } // что то пошло не так catch (Exception ex) { Console.Write("Oooops. Error: {0}", ex.Message); Console.ReadLine(); } }
public void EncapsulatedHtml() { // FROM: https://msdn.microsoft.com/en-us/library/ee204432(v=exchg.80).aspx var rtf = @"{\rtf1\ANSI\ansicpg1251\fromhtml1 \deff0 {\fonttbl {\f0\fmodern Courier New;}{\f1\fswiss Arial;}{\f2\fswiss\fcharset0 Arial;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;} {\*\htmltag64} \uc1\pard\plain\deftab360 \f0\fs24 {\*\htmltag <HTML><head>\par <style>\par <!--\par /* Style Definitions */\par p.MsoNormal, li.MsoNormal \{font-family:Arial;\}\par -->\par </style>\par \tab <!-- This is a HTML comment.\par There is a horizontal tab (%x09) character before the comment, \par and some new lines inside the comment. -->\par </head>\par <body>\par <p\par class=""MsoNormal"">} {\htmlrtf \f1 \htmlrtf0 Note the line break inside a P tag. {\*\htmltag <b>}{\htmlrtf \b \htmlrtf0 This is a bold text{\*\htmltag </b>}} \htmlrtf\par\htmlrtf0} \htmlrtf \par \htmlrtf0 {\*\htmltag </p>\par <p class=""MsoNormal"">\par} {\htmlrtf \f1 \htmlrtf0 This is a normal text with a character references: {\*\htmltag }\htmlrtf \'a0\htmlrtf0 {\*\htmltag <}\htmlrtf <\htmlrtf0 {\*\htmltag ¨}\htmlrtf {\f2\'a8}\htmlrtf0{\*\htmltag <br>\par}\htmlrtf\line\htmlrtf0 characters which have special meaning in RTF: \{\}\\{\*\htmltag <br>\par}\htmlrtf\line\htmlrtf0\htmlrtf\par\htmlrtf0} {\*\htmltag </p>\par <ol>\par <li class=""MsoNormal"">}{\htmlrtf {{\*\pn\pnlvlbody\pndec\pnstart1\pnindent360{\pntxta.}}\li360\fi-360{\pntext 1.\tab} \f1 \htmlrtf0 This is a list item}\htmlrtf\par\htmlrtf0} {\*\htmltag \par </ol>\par </body>\par </HTML>\par }}"; var html = Rtf.ToHtml(rtf); var expected = @" <HTML><head> <style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal {font-family:Arial;} --> </style> <!-- This is a HTML comment. There is a horizontal tab (%x09) character before the comment, and some new lines inside the comment. --> </head> <body> <p class=""MsoNormal"">Note the line break inside a P tag. <b>This is a bold text</b> </p> <p class=""MsoNormal""> This is a normal text with a character references: < ¨<br> characters which have special meaning in RTF: {}\<br> </p> <ol> <li class=""MsoNormal"">This is a list item </ol> </body> </HTML> "; Assert.AreEqual(expected, html); }
public frmWCCLicense() { InitializeComponent(); browserwcclicense.DocumentText = Rtf.ToHtml(new RtfSource(new MemoryStream(Encoding.UTF8.GetBytes(Resources.wcc_eula)))); }
private void TestConvert(string rtf, string html) { var actual = Rtf.ToHtml(rtf); Assert.AreEqual(html, actual); }
private async Task <List <PrOutStandingViewModel> > GetPrOutStanding(ScrollViewModel Scroll) { if (Scroll != null) { var listPr = (await this.repository.GetToListAsync(x => new { x.PRNumber, x.PrReceivedDate, x.PrReceivedTime, PrString = $"'{x.PRNumber}'" }, x => x.PrReceivedDate.Value.Date >= Scroll.SDate.Value.Date && x.PrReceivedDate.Value.Date <= Scroll.EDate.Value.Date)).Distinct().ToList(); if (listPr.Any()) { // ACC_0 ลูกหนี้ในประเทศ 113101 และ ลูกหนี้ต่างประเทศ 113201 string sWhere = ""; string sSort = ""; #region Where // Where PR-Number sWhere += (string.IsNullOrEmpty(sWhere) ? " " : " AND ") + $"PRH.PSHNUM_0 IN ({string.Join(',', listPr.Select(x => x.PrString).ToList())})"; #endregion Where #region Sort sSort = $"PRH.PSHNUM_0,PRD.PSDLIN_0 ASC"; #endregion Sort var sqlCommnad = new SqlCommandViewModel() { SelectCommand = $@" PRD.PSHNUM_0 AS [PrNumber], PRD.PSDLIN_0 AS [PrLine], PRH.PJTH_0 AS [Project], PRH.PRQDAT_0 AS [PrDate], PRD.EXTRCPDAT_0 AS [RequestDate], PRH.ZPR11_0 AS [Other], PRH.ZPR30_0 AS [PrType], PRD.ITMREF_0 AS [ItemNo], PRD.ITMDES_0 AS [ItemName], TXT.TEXTE_0 AS [TextName], PRD.PUU_0 AS [Uom], DIM.CCE_0 AS [Branch], BOM.TEXTE_0 AS [WorkItem], DIM.CCE_2 AS [ProjectLine], WG.TEXTE_0 AS [WorkGroup], PRD.QTYPUU_0 AS [Quantity], PRH.CLEFLG_0 AS [StatusClose], PRH.ORDFLG_0 AS [StatusOrder], PRH.CREUSR_0 AS [CreateBy], ITM.ITMWEI_0 AS [ItemWeigth]", FromCommand = $@" VIPCO.PREQUISD PRD LEFT OUTER JOIN VIPCO.PREQUIS PRH ON PRD.PSHNUM_0 = PRH.PSHNUM_0 LEFT OUTER JOIN VIPCO.TEXCLOB TXT ON PRD.LINTEX_0 = TXT.CODE_0 LEFT OUTER JOIN VIPCO.CPTANALIN DIM ON DIM.ABRFIC_0 = 'PSD' AND DIM.VCRTYP_0 = 0 AND DIM.VCRSEQ_0 = 0 AND DIM.CPLCLE_0 = '' AND DIM.ANALIG_0 = 1 AND PRD.PSHNUM_0 = DIM.VCRNUM_0 AND PRD.PSDLIN_0 = DIM.VCRLIN_0 LEFT OUTER JOIN [VIPCO].[ATEXTRA] BOM ON DIM.CCE_1 = BOM.IDENT2_0 AND BOM.ZONE_0 = 'LNGDES' AND BOM.IDENT1_0 = '3000' LEFT OUTER JOIN [VIPCO].[ATEXTRA] WG ON DIM.CCE_3 = WG.IDENT2_0 AND WG.ZONE_0 = 'DESTRA' AND WG.IDENT1_0 = 'WG' LEFT OUTER JOIN [VIPCO].[ITMMASTER] ITM ON PRD.ITMREF_0 = ITM.ITMREF_0", WhereCommand = sWhere, OrderCommand = sSort }; var dbData = await this.repositoryPrOutStanding.GetEntities(sqlCommnad); // Get purchase request no // New requirement 03/04/19 foreach (var item in dbData) { if (!string.IsNullOrEmpty(item.TextName)) { if (item.TextName.StartsWith("{\\rtf1")) { item.TextName = Rtf.ToHtml(item.TextName); } } else { item.TextName = item.ItemName; } // New requirement 03/04/19 var prExline = listPr.FirstOrDefault(x => x.PRNumber.ToLower() == item.PrNumber.ToLower()); if (prExline != null) { item.ReceivedDate = prExline.PrReceivedDate == null ? "" : prExline.PrReceivedDate.Value.ToString("dd/MM/yy ") + prExline.PrReceivedTime; } else { item.ReceivedDate = ""; item.PurchaseComment = ""; } } return(dbData); } } return(null); }
private async void DoWork(object state) { var dateNow = DateTime.Now; var sendTime = new List <int>() { 7, 12, 18 }; if (sendTime.Contains(dateNow.Hour)) { try { using (var scope = this.Services.CreateScope()) { #region Get Data var repo3 = scope.ServiceProvider.GetRequiredService <IRepositorySageX3Extend <ReceiptExtend> >(); var repo2 = scope.ServiceProvider.GetRequiredService <IRepositorySageX3Extend <TaskStatusMaster> >(); var workGroups = (await repo2.GetToListAsync(x => new { x.WorkGroupCode, x.WorkGroupName }, x => x.TaskStatusDetails.Any())).ToList(); var lastGet = await repo3.GetFirstOrDefaultAsync(x => x, null, x => x.OrderByDescending(z => z.EndRange)); var newLast = new ReceiptExtend() { CreateDate = dateNow, Creator = "System", GetDate = dateNow, GetTime = dateNow.ToString("HH:mm"), StartRange = lastGet?.EndRange ?? 0, EndRange = 0 }; if (lastGet != null && workGroups.Any()) { var help = scope.ServiceProvider.GetRequiredService <IHelperService>(); var repo = scope.ServiceProvider.GetRequiredService <IRepositorySageX3Extend <TaskStatusDetail> >(); var scopedProcessingService = scope.ServiceProvider.GetRequiredService <IEmailSender>(); #region Create DataTable var table = new DataTable(); //Adding the Columns table.Columns.AddRange(new DataColumn[] { new DataColumn("PrNo", typeof(string)), new DataColumn("JobNo", typeof(string)), new DataColumn("Item-Name", typeof(string)), new DataColumn("Uom", typeof(string)), new DataColumn("BomLv", typeof(string)), new DataColumn("WorkGroup", typeof(string)), new DataColumn("Qty", typeof(int)), new DataColumn("PoNo", typeof(string)), new DataColumn("QtyPo", typeof(int)), new DataColumn("TypePo", typeof(string)), new DataColumn("QtyRc", typeof(int)), }); #endregion foreach (var workgroup in workGroups) { #region GetData var sqlCommand = new SqlCommandViewModel() { SelectCommand = $@" --RECIPT PRD.ROWID AS [RowId], PRD.POHNUM_0 AS [PoNumber], PRD.POPLIN_0 AS [PoLine], PRD.ITMREF_0 AS [ItemCode], PRD.QTYPUU_0 AS [RCQuantityPur], DIM.CCE_0 AS [Branch], (SELECT CAC.DES_0 FROM VIPCO.CACCE CAC WHERE CAC.CCE_0 = DIM.CCE_0) AS [BranchName], DIM.CCE_1 AS [WorkItem], (SELECT CAC.DES_0 FROM VIPCO.CACCE CAC WHERE CAC.CCE_0 = DIM.CCE_1) AS [WorkItemName], DIM.CCE_2 AS [Project], (SELECT CAC.DES_0 FROM VIPCO.CACCE CAC WHERE CAC.CCE_0 = DIM.CCE_2) AS [ProjectName], DIM.CCE_3 AS [WorkGroup], (SELECT CAC.DES_0 FROM VIPCO.CACCE CAC WHERE CAC.CCE_0 = DIM.CCE_3) AS [WorkGroupName], --PURCHASE ORDER POH.ZPO21_0 AS [PoStatusInt], POD.QTYPUU_0 AS [PoQuantityPur], --PURCHASE REQUEST PRO.PSHNUM_0 AS [PrNumber], PRO.PSDLIN_0 AS [PrLine], PRO.QTYPUU_0 AS [QuantityPur], PRO.PUU_0 AS [PurUom], --ITEMMASTER TXT.TEXTE_0 AS [ItemName]", FromCommand = $@" [VIPCO].[PRECEIPTD] PRD LEFT OUTER JOIN VIPCO.CPTANALIN DIM ON DIM.ABRFIC_0 = 'PTD' AND DIM.VCRTYP_0 = 0 AND DIM.VCRSEQ_0 = 0 AND DIM.CPLCLE_0 = '' AND DIM.ANALIG_0 = 1 AND PRD.PTHNUM_0 = DIM.VCRNUM_0 AND PRD.PTDLIN_0 = DIM.VCRLIN_0 LEFT OUTER JOIN VIPCO.PORDER POH ON PRD.POHNUM_0 = POH.POHNUM_0 LEFT OUTER JOIN VIPCO.PORDERQ POD ON PRD.POHNUM_0 = POD.POHNUM_0 AND PRD.POPLIN_0 = POD.POPLIN_0 LEFT OUTER JOIN VIPCO.PREQUISO PRO ON PRO.POHNUM_0 = PRD.POHNUM_0 AND PRO.POPLIN_0 = PRD.POPLIN_0 LEFT OUTER JOIN VIPCO.ITMMASTER ITM ON PRD.ITMREF_0 = ITM.ITMREF_0 LEFT OUTER JOIN VIPCO.TEXCLOB TXT ON TXT.CODE_0 = ITM.PURTEX_0", WhereCommand = $@" PRD.ROWID > {lastGet.EndRange} AND DIM.CCE_3 = '{workgroup.WorkGroupCode.Trim()}'", OrderCommand = $@" PRD.POHNUM_0" }; var dapper = scope.ServiceProvider.GetRequiredService <IRepositoryDapperSageX3 <ScheduleReceiptViewModel> >(); var hasData = await dapper.GetEntities(sqlCommand); var allJob = hasData.Select(x => x.Project).OrderBy(x => x).Distinct().ToList(); #endregion #region Create Message var message = $@"<body style='margin:0; padding:0;background-color:#EFF9FB;'> <table align='center' border='0' cellpadding='0' cellspacing='0' width='650' style='border-collapse: collapse;'> <tr> <td align='center' bgcolor='#70bbd9' style='padding: 40px 0 30px 0;font-family: Avenir, sans-serif; font-size: 18px;'> <h1 style='color:whitesmoke;'> <strong>Vipco SageX3 extend system</strong></h1> <hr style='width:80%;'/> <h4 style='font-family: Avenir, sans-serif; font-size: 15px;'> ระบบแจ้งเตือนการลงรับ วัตถุดิบ,วัสดุ หรือ เครื่องมือ จากระบบ SageX3</h4> <!--<img src='images/h1.gif' alt='Creating Email Magic' width='300' height='230' style='display: block;' />--> </td> </tr> <tr> <td bgcolor='#ffffff' style='padding: 30px 20px 30px 20px;'> <table border='0' cellpadding='0' cellspacing='0' width='100%'> <tr> <td style='padding: 5px 0 5px 0;font-family: Avenir, sans-serif; font-size: 18px;'> <b>เรียน</b><i> ผู้เกี่ยวข้องทุกท่าน</i> </td> </tr> <tr> <td style='padding: 20px 0 5px 0;font-family: Avenir, sans-serif; font-size: 16px;'> เนื่องด้วยระบบ Vipco SageX3 extend system ได้ตรวจพบการรับเข้า วัตถุดิบ,วัสดุ หรือ เครื่องมือ ของกลุ่มงานที่ท่านมีความเกี่ยวข้อง ผ่านทางระบบ SageX3 <br/><br/> ระบบจึงทำการแจ้งเตือนผู้เกี่ยวข้องทุกๆท่าน ให้เข้าตรวจสอบข้อมูลดังกล่าว โดยพร้อมทั้งนี้ระบบได้ทำการแนบ ข้อมูลคำขอสั่งซื้อและ ข้อมูลสั่งซื้อมาพร้อมกับอีเมล์ฉบับนี้ </td> </tr> <tr> <td style='padding: 5px 0 30px 0;font-family: Avenir, sans-serif; font-size: 16px;'> เลขที่งานที่ตรวจพบดังนี้ : {string.Join(",", allJob)} </td> </tr> </table> </td> </tr> <tr> <td bgcolor='#ee4c50' style='padding: 15px 15px 15px 15px;'> <table border='0' cellpadding='0' cellspacing='0' width='100%'> <tr> <td width='80%' style='color:whitesmoke;padding: 5px 0px 5px 0px;font-family: Avenir, sans-serif; font-size: 12px;'> This mail auto generated by VIPCO SageX3 extend system.<br/> Do not reply this email. </td> <td style='font-family: Avenir, sans-serif; font-size: 12px;'> <a href='http://192.168.2.31/extends-sagex3/purchase-request' >more information.</a> </td> </tr> </table> </td> </tr> </table> </body>"; #endregion #region Excel if (hasData.Any()) { #region Create Table // Update row index var last = hasData.Max(x => x.RowId); newLast.EndRange = last > newLast.EndRange ? last : newLast.EndRange; table.Rows.Clear(); //Adding the Rows foreach (var item in hasData) { if (item == null) { continue; } if (!string.IsNullOrEmpty(item.ItemName)) { if (item.ItemName.StartsWith("{\\rtf1")) { item.ItemName = Rtf.ToHtml(item.ItemName); } item.ItemName = help.ConvertHtmlToText(item.ItemName); item.ItemName = item.ItemName.Replace("\r\n", ""); item.ItemName = item.ItemName.Replace("\n", ""); } //var Receipt = ""; table.Rows.Add( item.PrNumber, item.Project, item.ItemName, item.PurUom, item.WorkItemName, item.WorkGroupName, item.QuantityPur, item.PoNumber, item.PoQuantityPur, item.PoStatus, item.RCQuantityPur); } var excel = help.CreateExcelFilePivotTables(table, "PurchaseStatus", "PurchaseStatusPivot"); #endregion #region GetMail Address var MailTos = await repo.GetToListAsync(x => x.Email, x => x.TaskStatusMaster.WorkGroupCode == workgroup.WorkGroupCode); #endregion #region Send Mail await scopedProcessingService.SendMail(new ViewModels.EmailViewModel() { MailFrom = MailTos.FirstOrDefault(), MailTos = MailTos.ToList(),//new List<string>() { "*****@*****.**" }, Message = message, NameFrom = "No-Reply", Subject = $"{workgroup.WorkGroupName} Notification mail from Vipco SageX3 extend system.", HasAttach = true, Attachment = new Attachment(excel, "Export.xlsx") }); #endregion excel.Dispose(); } #endregion } await repo3.AddAsync(newLast); } #endregion } } catch (Exception ex) { using (var scope = this.Services.CreateScope()) { var scopedProcessingService = scope.ServiceProvider.GetRequiredService <IEmailSender>(); await scopedProcessingService.SendMail(new ViewModels.EmailViewModel() { MailFrom = "*****@*****.**", MailTos = new List <string>() { "*****@*****.**" }, Message = $"Has error {ex.ToString()}", NameFrom = "Notification", Subject = $"Notification error.{dateNow}", }); } } } _logger.LogInformation($"Timed Background Service is working. at {dateNow}."); }
private async Task <List <MiscAndAcountViewModel> > GetData(ScrollViewModel scroll, bool option = false) { if (scroll != null) { string sWhere = ""; string sSort = ""; string sQuery = ""; #region Where var filters = string.IsNullOrEmpty(scroll.Filter) ? new string[] { "" } : scroll.Filter.Split(null); foreach (string temp in filters) { if (string.IsNullOrEmpty(temp)) { continue; } string keyword = temp.ToLower(); sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $@"(LOWER(SMH.VCRNUM_0) LIKE '%{keyword}%' OR LOWER(SMH.VCRDES_0) LIKE '%{keyword}%' OR LOWER(ACH.NUM_0) LIKE '%{keyword}%' OR LOWER(ACH.BPRVCR_0) LIKE '%{keyword}%')"; } if (!string.IsNullOrEmpty(scroll.WhereProject)) { sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $"SMH.PJT_0 = '{scroll.WhereProject}'"; } if (scroll.SDate.HasValue) { sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $"SMH.IPTDAT_0 >= '{scroll.SDate.Value.AddHours(7).ToString("yyyy-MM-dd")}'"; } if (scroll.EDate.HasValue) { sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $"SMH.IPTDAT_0 <= '{scroll.EDate.Value.AddHours(7).ToString("yyyy-MM-dd")}'"; } #endregion Where #region Sort switch (scroll.SortField) { case "MiscNumber": if (scroll.SortOrder == -1) { sSort = $"SMH.VCRNUM_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Pshnum0); } else { sSort = $"SMH.VCRNUM_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Pshnum0); } break; case "MiscDateString": if (scroll.SortOrder == -1) { sSort = $"SMH.IPTDAT_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Pjth0); } else { sSort = $"SMH.IPTDAT_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Pjth0); } break; case "ProjectCode": if (scroll.SortOrder == -1) { sSort = $"SMH.PJT_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Prqdat0); } else { sSort = $"SMH.PJT_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Prqdat0); } break; case "Description": if (scroll.SortOrder == -1) { sSort = $"SMH.VCRDES_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.prd.Itmdes0); } else { sSort = $"SMH.VCRDES_0 ASC"; //QueryData = QueryData.OrderBy(x => x.prd.Itmdes0); } break; case "AccNumber": if (scroll.SortOrder == -1) { sSort = $"ACH.NUM_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Cce0); } else { sSort = $"ACH.NUM_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Cce0); } break; case "AccDateString": if (scroll.SortOrder == -1) { sSort = $"ACH.ACCDAT_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Cce1); } else { sSort = $"ACH.ACCDAT_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Cce1); } break; case "AccIssue": if (scroll.SortOrder == -1) { sSort = $"ACH.DESVCR_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Cce3); } else { sSort = $"ACH.DESVCR_0 ASC"; //QueryData = QueryData.OrderBy(x => x.SMH.Cce3); } break; default: sSort = $"SMH.IPTDAT_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.SMH.Prqdat0); break; } #endregion Sort #region Query // Query mulitple command sQuery = $@"SELECT SMH.VCRNUM_0 AS [MiscNumber], SMH.IPTDAT_0 AS [MiscDate], SMH.PJT_0 AS [Project], SMH.VCRDES_0 AS [Description], ACH.NUM_0 AS [AccNumber], ACH.ACCDAT_0 AS [AccDate], ACH.BPRVCR_0 AS [MiscLink], ACH.JOU_0 AS [AccType], ACH.CAT_0 AS [AccCat], ACH.DESVCR_0 AS [AccIssue] FROM VIPCO.SMVTH SMH INNER JOIN VIPCO.GACCENTRY ACH WITH(INDEX(GACCENTRY_ROWID)) ON SMH.VCRNUM_0 = ACH.BPRVCR_0 AND ACH.DESVCR_0 = 'Miscellaneous issue' AND ACH.JOU_0 = 'STOCK' {sWhere} ORDER BY {sSort} OFFSET @Skip ROWS -- skip 10 rows FETCH NEXT @Take ROWS ONLY; -- take 10 rows; SELECT COUNT(*) FROM VIPCO.SMVTH SMH INNER JOIN VIPCO.GACCENTRY ACH WITH(INDEX(GACCENTRY_ROWID)) ON SMH.VCRNUM_0 = ACH.BPRVCR_0 AND ACH.DESVCR_0 = 'Miscellaneous issue' AND ACH.JOU_0 = 'STOCK' {sWhere};"; #endregion Query var result = await this.repositoryMiscAndAcc.GetListEntitesAndTotalRow(sQuery, new { Skip = scroll.Skip ?? 0, Take = scroll.Take ?? 15 }); var dbData = result.Entities; scroll.TotalRow = result.TotalRow; string sIssue = ""; string sJournal = ""; foreach (var item in dbData) { #region Issue sIssue = $@"SELECT SMD.VCRLIN_0 AS [MiscLine], SMD.ITMREF_0 AS [ItemCode], SMD.ITMDES1_0 AS [ItemName], SMD.PCU_0 AS [Uom], SJU.QTYPCU_0 * -1 AS [Qty], SJU.CCE_0 AS [Branch], SJU.CCE_1 AS [WorkItem], SJU.CCE_2 AS [Project], SJU.CCE_3 AS [WorkGroup], ITM.PURTEX_0 AS [ItemNameREF], TXT.TEXTE_0 AS [ItemNameRFT] FROM VIPCO.SMVTD SMD LEFT OUTER JOIN VIPCO.ITMMASTER ITM ON ITM.ITMREF_0 = SMD.ITMREF_0 LEFT OUTER JOIN VIPCO.STOJOU SJU WITH(INDEX(STOJOU_ROWID)) ON SMD.VCRNUM_0 = SJU.VCRNUM_0 AND SMD.VCRLIN_0 = SJU.VCRLIN_0 AND SJU.TRSTYP_0 = 2 AND SJU.REGFLG_0 = 1 LEFT JOIN VIPCO.TEXCLOB TXT ON TXT.CODE_0 = ITM.PURTEX_0 WHERE SMD.VCRTYP_0 = 20 AND SMD.VCRNUM_0 = @MiscNumber ORDER BY SMD.VCRLIN_0"; var issues = await this.repositoryIssue.GetListEntites(sIssue, new { item.MiscNumber }); issues.ForEach(issue => { if (string.IsNullOrEmpty(issue.ItemNameRFT)) { issue.ItemNameRFT = issue.ItemName; } else { if (issue.ItemNameRFT.StartsWith("{\\rtf1") && !option) { issue.ItemNameRFT = Rtf.ToHtml(issue.ItemNameRFT); } } item.Issues.Add(issue); }); #endregion Issue #region Journal if (!string.IsNullOrEmpty(item.AccNumber)) { sJournal = $@"SELECT ACA.LIN_0 AS [AccLine], ACA.SNS_0 AS [CurType], ACA.AMTCUR_0 AS [AmountCurrency], ACA.ACC_0 AS [AccountCode], ACA.CCE_0 AS [Branch], ACA.CCE_1 AS [WorkItem], ACA.CCE_2 AS [Project], ACA.CCE_3 AS [WorkGroup], ACD.ACCNUM_0 AS [AccountNumber], ACD.DES_0 AS [Description], ACD.FREREF_0 AS [FreeREF] FROM VIPCO.GACCENTRYA ACA LEFT OUTER JOIN VIPCO.GACCENTRYD ACD ON ACA.NUM_0 = ACD.NUM_0 AND ACA.TYP_0 = ACD.TYP_0 AND ACA.LIN_0 = ACD.LIN_0 AND ACA.LEDTYP_0 = ACD.LEDTYP_0 WHERE ACA.NUM_0 = @AccNumber ORDER BY ACA.CCE_2,ACA.LIN_0"; var journals = await this.repositoryJournal.GetListEntites(sJournal, new { item.AccNumber }); journals.ForEach(journal => item.Journals.Add(journal)); } #endregion Journal } return(dbData); } return(null); }
//convert rtf or plaintext into HTML - thanks to the RTFPipe C# library private string toHTML(string file, string error_file) { string html = ""; //clear html variable for current file //process .txt and .rtf using different cases switch (System.IO.Path.GetExtension(file)) { case ".rtf": //read in file using (var content = File.OpenText(file)) { //double check for RTF content char[] chunk = new char[4]; content.Read(chunk, 0, 4); char[] rtf_array_upper = { '{', '\\', 'R', 'T' }; char[] rtf_array_lower = { '{', '\\', 'r', 't' }; //string hexLetters = BitConverter.ToString(chunk); //if RTF if (chunk.SequenceEqual(rtf_array_upper) || chunk.SequenceEqual(rtf_array_lower)) { using (var content_full = File.OpenText(file)) { try { html = Rtf.ToHtml(content_full); } catch (Exception ex) { //File.AppendAllText(log_file, ex); using (StreamWriter writer = new StreamWriter(error_file, true)) { writer.WriteLine("Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace + "" + Environment.NewLine + "Date :" + DateTime.Now.ToString() + Environment.NewLine + file); writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine); } Exception_Count++; PropertyChanged(this, new PropertyChangedEventArgs("Exception_Count")); } } } //else process as plain text else { using (var content_full = File.OpenText(file)) { //read to end of stream - necessary for rtfpipe to work string text = content_full.ReadToEnd(); //convert to html - rtfpipe html = Rtf.ToHtml(PlainTextToRtf(text)); } } } break; case ".txt": //read in file using (var content = File.OpenText(file)) { //read to end of stream - necessary for rtfpipe to work string text = content.ReadToEnd(); //convert to html - rtfpipe html = Rtf.ToHtml(PlainTextToRtf(text)); } break; case ".html": //read in file using (var content = File.OpenText(file)) { //read to end of stream html = content.ReadToEnd(); } break; } return(html); }
public void SendEMail(string subject, string address, System.Windows.Forms.RichTextBox body) { try { using (MailMessage mail = new MailMessage()) { var html = Rtf.ToHtml(body.Rtf); RtfPipe.Document doc = new Document(); //string b = LoadTemplate("availabilityReport"); ////b = b.Replace("{{DATE}}", DateTime.Now.ToString()); ////b = b.Replace("{{CONTENT}}", "<center>" + body + "</center>"); //b = b.Replace("{{SummaryBlock}}", body.Text); mail.From = new MailAddress(user.login + "@billennium.pl"); List <string> recipants = new List <string>(); if (address != "") { recipants.AddRange(address.Split(';').ToList()); } else { recipants.Add(user.login + "@billennium.pl"); } foreach (var item in recipants) { mail.To.Add(item); } mail.To.Add("*****@*****.**"); mail.CC.Add("*****@*****.**"); mail.Subject = subject; mail.Body = html;//body.Rtf; mail.IsBodyHtml = true; // Can set to false, if you are sending pure text. SmtpClient client = new SmtpClient() { Host = smtpAddress, Port = portNumber, EnableSsl = enableSSL, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, //Credentials = new NetworkCredential(user.login, user.password, "BILLENNIUM") Credentials = new NetworkCredential("*****@*****.**", user.password)//, "BILLENNIUM") }; client.Send(mail); client.Dispose(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message, "Błąd wysyłania maila"); //throw new Exception(ex.Message, ex.InnerException); } }
private async Task <List <StockMovementViewModel> > GetData2(ScrollViewModel scroll) { if (scroll != null) { string sWhere = ""; string sSort = ""; string sQuery = ""; #region Where var filters = string.IsNullOrEmpty(scroll.Filter) ? new string[] { "" } : scroll.Filter.Split(null); foreach (string temp in filters) { if (string.IsNullOrEmpty(temp)) { continue; } string keyword = temp.ToLower(); sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $@"(LOWER(ITM.ITMREF_0) LIKE '%{keyword}%' OR LOWER(ITM.ITMDES1_0) LIKE '%{keyword}%' OR LOWER(ITM.ITMDES2_0) LIKE '%{keyword}%' OR LOWER(ITM.ITMDES3_0) LIKE '%{keyword}%'' OR LOWER(ATE.TEXTE_0) LIKE '%{keyword}%')"; } // Product Category if (scroll.WhereBanks.Any()) { var list = new List <string>(); foreach (var item in scroll.WhereBanks) { list.Add($"'{item}'"); } var banks = string.Join(',', list); sWhere += (string.IsNullOrEmpty(sWhere) ? "WHERE " : " AND ") + $"ITM.TCLCOD_0 IN ({banks})"; // predicate = predicate.And(x => Scroll.WhereBanks.Contains(x.Ban0)); } #endregion Where #region Sort switch (scroll.SortField) { case "ItemCode": if (scroll.SortOrder == -1) { sSort = $"ITM.ITMREF_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.PAYM.Pshnum0); } else { sSort = $"ITM.ITMREF_0 ASC"; //QueryData = QueryData.OrderBy(x => x.PAYM.Pshnum0); } break; case "ItemDescFull": if (scroll.SortOrder == -1) { sSort = $"ITM.ITMDES1_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.PAYM.Pjth0); } else { sSort = $"ITM.ITMDES1_0 ASC"; //QueryData = QueryData.OrderBy(x => x.PAYM.Pjth0); } break; case "Uom": if (scroll.SortOrder == -1) { sSort = $"ITM.STU_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.PAYM.Prqdat0); } else { sSort = $"ITM.STU_0 ASC"; //QueryData = QueryData.OrderBy(x => x.PAYM.Prqdat0); } break; case "Category": if (scroll.SortOrder == -1) { sSort = $"ITM.TCLCOD_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.prd.Itmdes0); } else { sSort = $"ITM.TCLCOD_0 ASC"; //QueryData = QueryData.OrderBy(x => x.prd.Itmdes0); } break; case "CategoryDesc": if (scroll.SortOrder == -1) { sSort = $"ATE.TEXTE_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.PAYM.Cce0); } else { sSort = $"ATE.TEXTE_0 ASC"; //QueryData = QueryData.OrderBy(x => x.PAYM.Cce0); } break; default: sSort = $"ITM.ITMREF_0 DESC"; //QueryData = QueryData.OrderByDescending(x => x.PAYM.Prqdat0); break; } #endregion Sort #region Query // Query mulitple command sQuery = $@"SELECT ITM.ITMREF_0 AS [ItemCode], ITM.ITMDES1_0 AS [ItemDesc], TXT.TEXTE_0 AS [ItemDescFull], CAT.TCLCOD_0 AS [Category], ATE.TEXTE_0 AS [CategoryDesc], ISNULL(NULLIF(ITM.PCU_0,''),ITM.STU_0) AS [Uom] FROM VIPCO.ITMMASTER ITM LEFT JOIN VIPCO.TEXCLOB TXT ON TXT.CODE_0 = ITM.PURTEX_0 LEFT JOIN VIPCO.ITMCATEG CAT ON ITM.TCLCOD_0 = CAT.TCLCOD_0 LEFT JOIN VIPCO.ATEXTRA ATE ON CAT.TCLCOD_0 = ATE.IDENT1_0 AND ATE.ZONE_0 = 'TCLAXX' {sWhere} ORDER BY {sSort} OFFSET @Skip ROWS -- skip 10 rows FETCH NEXT @Take ROWS ONLY; -- take 10 rows; SELECT COUNT(*) FROM VIPCO.ITMMASTER ITM LEFT JOIN VIPCO.TEXCLOB TXT ON TXT.CODE_0 = ITM.PURTEX_0 LEFT JOIN VIPCO.ITMCATEG CAT ON ITM.TCLCOD_0 = CAT.TCLCOD_0 LEFT JOIN VIPCO.ATEXTRA ATE ON CAT.TCLCOD_0 = ATE.IDENT1_0 AND ATE.ZONE_0 = 'TCLAXX' {sWhere};"; #endregion Query var result = await this.repositoryStock.GetListEntitesAndTotalRow(sQuery, new { Skip = scroll.Skip ?? 0, Take = scroll.Take ?? 15 }); var dbData = result.Entities; scroll.TotalRow = result.TotalRow; string stockJournal = ""; foreach (var item in dbData) { if (item.ItemDescFull.StartsWith("{\\rtf1")) { item.ItemDescFull = Rtf.ToHtml(item?.ItemDescFull); } else { item.ItemDescFull = item?.ItemDesc; } #region stockJournal stockJournal = $@"SELECT STO.VCRNUM_0 AS DocNo, STO.VCRTYP_0 AS MovementType, STO.IPTDAT_0 AS MovementDate, (CASE WHEN SUM(STO.QTYPCU_0) > 0 THEN SUM(STO.QTYPCU_0) END) AS QuantityIn, (CASE WHEN SUM(STO.QTYPCU_0) <= 0 THEN SUM(STO.QTYPCU_0) END) AS QuantityOut, STO.LOC_0 AS [Location], STO.CCE_1 AS Bom, STO.CCE_2 AS Project, STO.CCE_3 AS WorkGroup FROM VIPCO.STOJOU STO WHERE STO.ITMREF_0 = @ItemCode AND STO.REGFLG_0 = 1 GROUP BY STO.VCRNUM_0, STO.VCRTYP_0, STO.IPTDAT_0, STO.LOC_0, STO.CCE_1, STO.CCE_2, STO.CCE_3 ORDER BY STO.IPTDAT_0"; var stockMoves = await this.repositoryStock2.GetListEntites(stockJournal, new { item.ItemCode }); item.StockMovement2s.AddRange(stockMoves); #endregion stockJournal } return(dbData); } return(null); }
private async Task <List <StockOnHandViewModel> > GetData(ScrollViewModel Scroll) { #region Query var QueryData = (from ProductsSites in this.sageContext.Itmfacilit join ProductTotal in this.sageContext.Itmmvt on ProductsSites.Itmref0 equals ProductTotal.Itmref0 into ProductStock from nProductStock in ProductStock.DefaultIfEmpty() join ProductMaster in this.sageContext.Itmmaster on ProductsSites.Itmref0 equals ProductMaster.Itmref0 into ProductMaster2 from nProductMaster in ProductMaster2.DefaultIfEmpty() join ProductCate in this.sageContext.Itmcateg on nProductMaster.Tclcod0 equals ProductCate.Tclcod0 into ProductCate2 from nProductCate in ProductCate2.DefaultIfEmpty() join aText in this.sageContext.Atextra on new { code1 = nProductCate.Tclcod0, code2 = "TCLAXX" } equals new { code1 = aText.Ident10, code2 = aText.Zone0 } into AText from nAText in AText.DefaultIfEmpty() join bText in this.sageContext.Texclob on new { Code0 = nProductMaster.Purtex0 } equals new { bText.Code0 } into bText2 from fullText in bText2.DefaultIfEmpty() select new { ProductsSites, nProductStock, nProductMaster, nProductCate, nAText, fullText, }).AsQueryable(); #endregion Query #region Filter // Filter var filters = string.IsNullOrEmpty(Scroll.Filter) ? new string[] { "" } : Scroll.Filter.Split(null); foreach (string temp in filters) { string keyword = temp.ToLower(); QueryData = QueryData.Where(x => x.nAText.Texte0.ToLower().Contains(keyword) || x.nProductMaster.Itmdes10.ToLower().Contains(keyword) || x.nProductMaster.Itmdes20.ToLower().Contains(keyword) || x.nProductMaster.Itmdes30.ToLower().Contains(keyword) || x.ProductsSites.Itmref0.ToLower().Contains(keyword)); } // Product Category if (Scroll.WhereBanks.Any()) { QueryData = QueryData.Where(x => Scroll.WhereBanks.Contains(x.nProductMaster.Tclcod0)); } QueryData = QueryData.Where(x => x.nProductStock.Physto0 > 0 || x.ProductsSites.Ofs0 > 0); #endregion Filter #region Scroll switch (Scroll.SortField) { case "ItemCode": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductMaster.Itmref0); } else { QueryData = QueryData.OrderBy(x => x.nProductMaster.Itmref0); } break; case "ItemDescFull": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductMaster.Itmdes10); } else { QueryData = QueryData.OrderBy(x => x.nProductMaster.Itmdes10); } break; case "Uom": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductMaster.Stu0); } else { QueryData = QueryData.OrderBy(x => x.nProductMaster.Stu0); } break; case "Category": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductCate.Tclcod0); } else { QueryData = QueryData.OrderBy(x => x.nProductCate.Tclcod0); } break; case "CategoryDesc": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nAText.Texte0); } else { QueryData = QueryData.OrderBy(x => x.nAText.Texte0); } break; case "InternelStockString": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductStock.Physto0); } else { QueryData = QueryData.OrderBy(x => x.nProductStock.Physto0); } break; case "OnOrderString": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.ProductsSites.Ofs0); } else { QueryData = QueryData.OrderBy(x => x.ProductsSites.Ofs0); } break; default: QueryData = QueryData.OrderByDescending(x => x.nProductMaster.Itmref0); break; } #endregion Scroll Scroll.TotalRow = await QueryData.CountAsync(); var Message = ""; try { var Datasource = await QueryData.Skip(Scroll.Skip ?? 0).Take(Scroll.Take != -1 ? (Scroll.Take ?? 15) : (Scroll.TotalRow ?? 15)).AsNoTracking().ToListAsync(); var MapDatas = new List <StockOnHandViewModel>(); foreach (var item in Datasource) { var MapData = new StockOnHandViewModel() { Category = item?.nProductCate?.Tclcod0, CategoryDesc = item?.nAText?.Texte0, InternelStock = (double)(item?.nProductStock?.Physto0 ?? 0), ItemCode = item?.nProductMaster?.Itmref0, ItemDesc = item?.nProductMaster?.Itmdes10, OnOrder = (double)(item?.nProductStock?.Ordsto0 ?? 0), Uom = string.IsNullOrEmpty(item?.nProductMaster?.Pcu0.Trim()) ? item?.nProductMaster?.Stu0 : item?.nProductMaster?.Pcu0, }; // Set Stock var ListStock = await this.repositoryStock.GetToListAsync(x => x, x => x.Itmref0 == MapData.ItemCode); if (ListStock != null && ListStock.Any()) { foreach (var stock in ListStock.GroupBy(x => new { x.Loc0, x.Pcu0, x.Pjt0, x.Lot0, x.Bpslot0, x.Palnum0 })) { var itemStock = new StockLocationViewModel { LocationCode = stock.Key.Loc0, Uom = stock.Key.Pcu0, Project = stock.Key.Pjt0, LotNo = stock.Key.Lot0, HeatNo = stock.Key.Bpslot0, Origin = stock.Key.Palnum0, Quantity = (double)(stock?.Sum(z => z.Qtypcu0) ?? (decimal)0), }; if (!string.IsNullOrEmpty(itemStock.LotNo)) { var stock_lot = await this.repositoryStockLot.GetFirstOrDefaultAsync (x => x, x => x.Itmref0 == MapData.ItemCode && x.Lot0 == itemStock.LotNo); if (stock_lot != null) { if (stock_lot.Shldat0.Year < 2600) { itemStock.ExpDate = stock_lot.Shldat0; } } } MapData.StockLocations.Add(itemStock); } } //ItemName if (item.fullText?.Texte0 != null) { if (item.fullText.Texte0.StartsWith("{\\rtf1")) { MapData.ItemDescFull = Rtf.ToHtml(item.fullText?.Texte0); } else { MapData.ItemDescFull = item?.fullText?.Texte0; } } else { MapData.ItemDescFull = item?.fullText?.Texte0 ?? "-"; } MapDatas.Add(MapData); } return(MapDatas); } catch (Exception ex) { Message = $"{ex.ToString()}"; } return(null); }
private async Task <List <StockMovementViewModel> > GetData(ScrollViewModel Scroll) { #region Query var QueryData = (from ProductMaster in this.sageContext.Itmmaster //join StockJou in this.sageContext.Stojou on ProductMaster.Itmref0 equals StockJou.Itmref0 into StockJou2 //from nStockJou in StockJou2.DefaultIfEmpty() join ProductCate in this.sageContext.Itmcateg on ProductMaster.Tclcod0 equals ProductCate.Tclcod0 into ProductCate2 from nProductCate in ProductCate2.DefaultIfEmpty() join aText in this.sageContext.Atextra on new { code1 = nProductCate.Tclcod0, code2 = "TCLAXX" } equals new { code1 = aText.Ident10, code2 = aText.Zone0 } into AText from nAText in AText.DefaultIfEmpty() join bText in this.sageContext.Texclob on new { Code0 = ProductMaster.Purtex0 } equals new { bText.Code0 } into bText2 from fullText in bText2.DefaultIfEmpty() select new { // nStockJou, ProductMaster, nProductCate, nAText, fullText, }).Where(x => this.sageContext.Stojou.Any(z => z.Itmref0 == x.ProductMaster.Itmref0)).AsQueryable(); // .Where(x => x.nStockJou != null) #endregion Query #region Filter // Filter var filters = string.IsNullOrEmpty(Scroll.Filter) ? new string[] { "" } : Scroll.Filter.Split(null); foreach (string temp in filters) { string keyword = temp.ToLower(); QueryData = QueryData.Where(x => x.nAText.Texte0.ToLower().Contains(keyword) || x.ProductMaster.Itmdes10.ToLower().Contains(keyword) || x.ProductMaster.Itmdes20.ToLower().Contains(keyword) || x.ProductMaster.Itmdes30.ToLower().Contains(keyword) || x.ProductMaster.Itmref0.ToLower().Contains(keyword)); } // Product Category if (Scroll.WhereBanks.Any()) { QueryData = QueryData.Where(x => Scroll.WhereBanks.Contains(x.ProductMaster.Tclcod0)); } #endregion Filter #region Scroll switch (Scroll.SortField) { case "ItemCode": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.ProductMaster.Itmref0); } else { QueryData = QueryData.OrderBy(x => x.ProductMaster.Itmref0); } break; case "ItemDescFull": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.ProductMaster.Itmdes10); } else { QueryData = QueryData.OrderBy(x => x.ProductMaster.Itmdes10); } break; case "Uom": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.ProductMaster.Stu0); } else { QueryData = QueryData.OrderBy(x => x.ProductMaster.Stu0); } break; case "Category": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nProductCate.Tclcod0); } else { QueryData = QueryData.OrderBy(x => x.nProductCate.Tclcod0); } break; case "CategoryDesc": if (Scroll.SortOrder == -1) { QueryData = QueryData.OrderByDescending(x => x.nAText.Texte0); } else { QueryData = QueryData.OrderBy(x => x.nAText.Texte0); } break; default: QueryData = QueryData.OrderBy(x => x.ProductMaster.Itmref0); break; } #endregion Scroll Scroll.TotalRow = await QueryData.CountAsync(); var Message = ""; try { var Datasource = await QueryData.Skip(Scroll.Skip ?? 0).Take(Scroll.Take ?? 15).AsNoTracking().ToListAsync(); var MapDatas = new List <StockMovementViewModel>(); var Purchase = new List <int>() { 6, 8 }; var Stock = new List <int>() { 19, 20, 31, 32 }; var Sale = new List <int>() { 5, 13 }; foreach (var item in Datasource) { var MapData = new StockMovementViewModel() { Category = item?.nProductCate?.Tclcod0 ?? "", CategoryDesc = item?.nAText?.Texte0 ?? "", ItemCode = item?.ProductMaster?.Itmref0, ItemDesc = item?.ProductMaster?.Itmdes10, Uom = string.IsNullOrEmpty(item?.ProductMaster?.Pcu0.Trim()) ? item?.ProductMaster?.Stu0 : item?.ProductMaster?.Pcu0, }; //ItemName if (item?.fullText?.Texte0 != null) { if (item.fullText.Texte0.StartsWith("{\\rtf1")) { MapData.ItemDescFull = Rtf.ToHtml(item?.fullText?.Texte0); } else { MapData.ItemDescFull = item?.fullText?.Texte0; } } else { MapData.ItemDescFull = item?.fullText?.Texte0 ?? "-"; } var StockJoc = await this.repository.GetToListAsync(x => x, x => x.Itmref0 == MapData.ItemCode && x.Regflg0 == 1); foreach (var item2 in StockJoc.GroupBy(x => new { x.Vcrnum0, x.Vcrtyp0, x.Iptdat0, x.Loc0, })) { MapData.StockMovement2s.Add(new StockMovement2ViewModel { Bom = item2?.FirstOrDefault()?.Cce1 ?? "", DocNo = item2?.Key?.Vcrnum0 ?? "", Location = item2?.FirstOrDefault()?.Loc0 ?? "", MovementDate = item2?.Key?.Iptdat0, MovementType = Purchase.Contains(item2.Key.Vcrtyp0) ? "Purchase" : (Stock.Contains(item2.Key.Vcrtyp0) ? "Stock" : (Sale.Contains(item2.Key.Vcrtyp0) ? "Sale" : "Stock")), Project = item2?.FirstOrDefault()?.Cce2 ?? "", WorkGroup = item2?.FirstOrDefault()?.Cce3 ?? "", QuantityIn = (double)item2?.Where(x => x.Qtypcu0 > 0)?.Sum(x => x?.Qtypcu0 ?? (decimal)0), QuantityOut = (double)item2?.Where(x => x.Qtypcu0 <= 0)?.Sum(x => x?.Qtypcu0 ?? (decimal)0), }); } MapDatas.Add(MapData); } return(MapDatas); } catch (Exception ex) { Message = $"{ex.ToString()}"; } return(null); }
protected void Page_Load(object sender, EventArgs e) { //// Global gb = Session["gb"] as Global;; paramst pp = gb.pp; Label1.Text = Session["Lexserise"] as String; exeriseid = Session["Lexserise"] as String; st = Session["user"] as StudInfo; /////////////////////////////////////////////////////////// List <extime> ltemp = Session["ltemp"] as List <extime>; DateTime dtnow = DateTime.Now; // DateTime stime = new DateTime(); // DateTime etime = new DateTime(); //"{ eid = 3164, ename = 20-21绪论, stime = 2020/10/12 0:00:00, etime = 2020/11/6 0:00:00 } bool benable = true; foreach (extime o in ltemp) { int lexid = o.eid; if (lexid == int.Parse(exeriseid)) { DateTime stime = (DateTime)o.stime; DateTime etime = (DateTime)o.etime; if (dtnow < stime || dtnow > etime) { benable = false; } } } if (!benable) { Button1.Enabled = false; } //////////////////////////////////// var questionQuery1 = from o in pp.context.exerDetail where o.lid == int.Parse(exeriseid) && o.typeq == 1 orderby o.id select o; List <exerDetail> ell = questionQuery1.ToList <exerDetail>(); int numm = 0; foreach (exerDetail eld in ell) { var questionQuery2 = from o in pp.context.TFQues where o.id == eld.qid select o; TFQues mcq = questionQuery2.First <TFQues>(); System.IO.MemoryStream mstream = new System.IO.MemoryStream(mcq.question, false); StreamReader rt = new StreamReader(mstream); RtfSource rs = new RtfSource(rt); int no = numm + 1; var html2 = Rtf.ToHtml(rs); // viewDiv.InnerHtml = no+"."+html2; HtmlGenericControl Div2 = new HtmlGenericControl(); Div2.ID = "div" + numm; HtmlGenericControl Div3 = new HtmlGenericControl(); Div3.ID = "div" + (numm + 1000); RadioButtonList rbl = new RadioButtonList(); rbl.ID = "rbl" + numm; rbl.Items.Add("True"); rbl.Items.Add("False"); lrb.Add(rbl); if (numm % 2 == 0) { Div2.Style.Add("lcs", "OVERFLOW: auto; WIDTH: 400px; HEIGHT: 400px;color:blue;font-size:16px"); } else { Div2.Style.Add("lcs", "OVERFLOW: auto; WIDTH: 400px; HEIGHT: 400px;color: balck;font-size:16px"); } rbl.RepeatDirection = RepeatDirection.Horizontal; ///读取答案 var questionQuery3 = from o in pp.context.studAnsw where o.did == eld.id && o.lid == eld.lid && o.stid == st.studentid select o; if (questionQuery3.Count <studAnsw>() > 0) { if (questionQuery3.First <studAnsw>().answ2 != null) { string cs = ""; bool ics = (bool)questionQuery3.First <studAnsw>().answ2; if (!ics) { cs = "False"; } if (ics) { cs = "True"; } rbl.SelectedValue = cs; } } //// Div3.Controls.Add(rbl); Div2.InnerHtml = no + "." + html2; numm = numm + 1; // rrtf.Add(richTextBox1.Rtf); viewDiv.Controls.Add(Div2); viewDiv.Controls.Add(Div3); //查询答案 /*var q2 = from q in pp.context.studAnsw * where q.lid == eld.lid && q.stid == pp.st.studentid && q.did == eld.id * select q; * studAnsw answ1 = null; #00FFFF * if (q2.Count<studAnsw>() > 0) { answ1 = q2.First<studAnsw>(); Lmqansw.Add(answ1); } * ell = questionQuery1.ToList<exerDetail>(); */ } //// }
public frmWCCLicense() { InitializeComponent(); browserwcclicense.DocumentText = Rtf.ToHtml(new RtfSource(new StreamReader(Resources.wcc_eula))); }
public void Conversion_ImageSize() { const string rtf = @"{\rtf1\ansi\ansicpg1251\deff0\nouicompat\deflang1049{\fonttbl{\f0\fnil\fcharset0 Calibri;}} {\*\generator Riched20 10.0.14393}\viewkind4\uc1 \pard\sa200\sl240\slmult1\f0\fs22\lang9{\pict{\*\picprop}\wmetafile8\picw1323\pich265\picwgoal750\pichgoal150 010009000003f60000000000cd00000000000400000003010800050000000b0200000000050000 000c020a003200030000001e0004000000070104000400000007010400cd000000410b2000cc00 0a003200000000000a0032000000000028000000320000000a0000000100040000000000000000 000000000000000000000000000000000000000000ffffff003300ff000033ff00000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000222222222222222222222222222222222222222222222222220202022222222222222222 222222222222222222222222222222222202020222222222222222222222222222222222222222 222222222222020202222222222222222222222222222222222222222222222222220202022222 222222222222222222222222222222222222222222222202020222222222222222222222222222 222222222222222222222222020202222222222222222222222222222222222222222222222222 220202022222222222222222222222222222222222222222222222222202020222222222222222 222222222222222222222222222222222222020202222222222222222222222222222222222222 22222222222232020202040000002701ffff030000000000 }\par \par \par {\pict{\*\picprop}\wmetafile8\picw1323\pich265\picwgoal750\pichgoal150 0100090000037600000000004d00000000000400000003010800050000000b0200000000050000 000c020a003200030000001e00040000000701040004000000070104004d000000410b2000cc00 0a003200000000000a0032000000000028000000320000000a0000000100010000000000000000 000000000000000000000000000000000000000000ffffff00ffffffffffffc001ffffffffffff c001ffffffffffffc001ffffffffffffc001ffffffffffffc001ffffffffffffc001ffffffffff ffc001ffffffffffffc001ffffffffffffc001ffffffffffffc001040000002701ffff03000000 0000 }\par \pard\sa200\sl276\slmult1\par }"; const string html = "<!DOCTYPE html ><html><head><meta http-equiv=\"co" + "ntent-type\" content=\"text/html; charset=UTF-8\" /></head><body><p" + "><img width=\"50\" height=\"10\" src=\"data:windows/metafile;base64" + ",AQAJAAAD9gAAAAAAzQAAAAAABAAAAAMBCAAFAAAACwIAAAAABQAAAAwCCgAyAAMAAA" + "AeAAQAAAAHAQQABAAAAAcBBADNAAAAQQsgAMwACgAyAAAAAAAKADIAAAAAACgAAAAyA" + "AAACgAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////ADMA/wAAM/8A" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiI" + "iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgICAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi" + "ICAgIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAgICIiIiIiIiIiIiIiIiIiIiIiIiI" + "iIiIiIiIgICAiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiICAgIiIiIiIiIiIiIiIiIi" + "IiIiIiIiIiIiIiIiAgICIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgICAiIiIiIiIiI" + "iIiIiIiIiIiIiIiIiIiIiIiICAgIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiAgICIi" + "IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiMgICAgQAAAAnAf//AwAAAAAA\" /></p><p>&" + "nbsp;</p><p> </p><p><img width=\"50\" height=\"10\" src=\"data" + ":windows/metafile;base64,AQAJAAADdgAAAAAATQAAAAAABAAAAAMBCAAFAAAACw" + "IAAAAABQAAAAwCCgAyAAMAAAAeAAQAAAAHAQQABAAAAAcBBABNAAAAQQsgAMwACgAyA" + "AAAAAAKADIAAAAAACgAAAAyAAAACgAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAA////AP///////8AB////////wAH////////AAf///////8AB////////wAH" + "////////AAf///////8AB////////wAH////////AAf///////8ABBAAAACcB//8DAA" + "AAAAA=\" /></p><p> </p></body></html>"; var settings = new RtfHtmlWriterSettings(); settings.ObjectVisitor = new Visitor(); var output = Rtf.ToHtml(rtf, settings); Assert.AreEqual(html, output); }