Exemple #1
0
        private void TestConvert(RtfSource rtf, string html)
        {
            var actual = Rtf.ToHtml(rtf);

            ParseRender.AssertEqual(html, actual);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 //[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));
 }
Exemple #5
0
    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();
        }
    }
Exemple #6
0
        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 &nbsp;}\htmlrtf \'a0\htmlrtf0  {\*\htmltag &lt;}\htmlrtf <\htmlrtf0  {\*\htmltag &uml;}\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:&nbsp; &lt; &uml;<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);
        }
Exemple #7
0
 public frmWCCLicense()
 {
     InitializeComponent();
     browserwcclicense.DocumentText = Rtf.ToHtml(new RtfSource(new MemoryStream(Encoding.UTF8.GetBytes(Resources.wcc_eula))));
 }
Exemple #8
0
        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;'>&nbsp;<strong>Vipco SageX3 extend system</strong></h1>
                                                <hr style='width:80%;'/>
                                                <h4 style='font-family: Avenir, sans-serif; font-size: 15px;'> &nbsp;&nbsp;ระบบแจ้งเตือนการลงรับ วัตถุดิบ,วัสดุ หรือ เครื่องมือ จากระบบ 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;'>
                                                            &nbsp;&nbsp;&nbsp;&nbsp;เนื่องด้วยระบบ Vipco SageX3 extend system ได้ตรวจพบการรับเข้า วัตถุดิบ,วัสดุ หรือ เครื่องมือ ของกลุ่มงานที่ท่านมีความเกี่ยวข้อง ผ่านทางระบบ SageX3 
                                                            <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;ระบบจึงทำการแจ้งเตือนผู้เกี่ยวข้องทุกๆท่าน ให้เข้าตรวจสอบข้อมูลดังกล่าว โดยพร้อมทั้งนี้ระบบได้ทำการแนบ ข้อมูลคำขอสั่งซื้อและ ข้อมูลสั่งซื้อมาพร้อมกับอีเมล์ฉบับนี้
                                                        </td>
                                                    </tr>
                                                    <tr>
                                                        <td style='padding: 5px 0 30px 0;font-family: Avenir, sans-serif; font-size: 16px;'>
                                                            &nbsp;&nbsp;&nbsp;&nbsp;เลขที่งานที่ตรวจพบดังนี้ : {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;'>
                                                            &nbsp;This mail auto generated by VIPCO SageX3 extend system.<br/> &nbsp;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}.");
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        //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);
        }
Exemple #13
0
        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);
            }
        }
Exemple #14
0
        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);
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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>();
                 */
            }
            ////
        }
Exemple #18
0
 public frmWCCLicense()
 {
     InitializeComponent();
     browserwcclicense.DocumentText = Rtf.ToHtml(new RtfSource(new StreamReader(Resources.wcc_eula)));
 }
Exemple #19
0
        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>&nbsp;</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>&nbsp;</p></body></html>";

            var settings = new RtfHtmlWriterSettings();

            settings.ObjectVisitor = new Visitor();
            var output = Rtf.ToHtml(rtf, settings);

            Assert.AreEqual(html, output);
        }