Пример #1
0
        public FW_CALENDAR CheckIfFWCExists(IList <FW_CALENDAR> cedatalist, String key)
        {
            FW_CALENDAR retCEData = null;

            try
            {
                foreach (var ce in cedatalist)
                {
                    if (ce.Fiscal_Week == key)
                    {
                        //exists
                        retCEData = null;
                    }
                    else
                    {
                        retCEData = ce;
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                log.Info("Exception occured whiel checking CEDAta Existatnce.");
            }
            return(retCEData);
        }
Пример #2
0
        // DocumentCompleted event handle
        void IEBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            HtmlDocument doc        = null;
            string       docUrl     = ieBrowser.Url.ToString();
            bool         isErrorSet = false;

            try
            {
                /*if (doc.Title.Equals("Welcome to Windows Live") && loginCount++ < 3)
                 * {
                 *     // set email address and password, and try to login three times
                 *     try { doc.GetElementById("i0116").SetAttribute("value", userName); } catch {
                 *         ieBrowser.Navigate("http://login.live.com/#");
                 *         return;
                 *     }
                 *     doc.GetElementById("i0118").SetAttribute("value", password);
                 *     doc.GetElementById("idSIButton9").InvokeMember("click");
                 * }
                 * else
                 * {
                 *     // request jscript to call c# callback function with a parameter of navigation counter
                 *     doc.InvokeScript("setTimeout", new object[] { string.Format("window.external.getHtmlResult({0})", navigationCounter), 10 });
                 * }*/
                if (docUrl.StartsWith(signinUrl))
                {
                    doc = ((WebBrowser)sender).Document;

                    doc.GetElementById("UserName").SetAttribute("value", userName);
                    doc.GetElementById("Password").SetAttribute("value", password);
                    doc.GetElementById("loginButton").InvokeMember("click");
                }
            }
            catch (Exception re)
            {
                log.Info("Sign-In to Reach Server failed. Error is : " + re.StackTrace);
                isErrorSet = true;
            }


            if (!isErrorSet)
            {
                try
                {
                    if (docUrl.Contains(singintokenUrl))
                    {
                        ieBrowser.Navigate(ceUrl);
                        isErrorSet = false;
                    }
                }
                catch (Exception ne)
                {
                    log.Info("Reach Server Navigation failed. Error is : " + ne.StackTrace);
                    isErrorSet = true;
                }



                if (!isErrorSet)
                {
                    // request jscript to call c# callback function with a parameter of navigation counter
                    //doc.InvokeScript("setTimeout", new object[] { string.Format("window.external.getHtmlResult({0})", navigationCounter), 10 });*/
                    if (docUrl.Equals(ceUrl))
                    {
                        string        tempDir = "C:/IDTools/temp";
                        DirectoryInfo di;
                        string        tempFileName = null;
                        String        tempFile     = "/tempReachFormat.xml";
                        XmlDocument   xmlDoc       = null;
                        XmlNodeList   xnList       = null;
                        try
                        {
                            if (!Directory.Exists(tempDir))
                            {
                                di           = Directory.CreateDirectory(tempDir);
                                tempFileName = di.FullName + tempFile;
                            }
                            else
                            {
                                tempFileName = tempDir + tempFile;
                            }
                            StreamWriter writer = File.CreateText(tempFileName);
                            writer.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");

                            //.Replace("- <", "<").Replace("&","&amp;"));
                            StringBuilder strb = new StringBuilder(ieBrowser.Document.Body.InnerText.ToString());
                            strb = strb.Replace("&", "&amp;");
                            strb = strb.Replace("- <", "<").Replace("&", "&amp;");

                            strb = strb.Replace("&", "&amp;");
                            strb = strb.Replace("<", "&lt;");
                            strb = strb.Replace(">", "&gt;");
                            strb = strb.Replace("&lt;lcform", "<lcform");
                            strb = strb.Replace("&lt;/lcform&gt;", "</lcform>");
                            strb = strb.Replace("&lt;name", "<name");
                            strb = strb.Replace("&lt;/name&gt;", "</name>");
                            strb = strb.Replace("&lt;email", "<email");
                            strb = strb.Replace("&lt;/email&gt;", "</email>");
                            strb = strb.Replace("&lt;summary", "<summary");
                            strb = strb.Replace("&lt;/summary&gt;", "</summary>");
                            strb = strb.Replace("&lt;description", "<description");
                            strb = strb.Replace("&lt;/description&gt;", "</description>");
                            strb = strb.Replace("&lt;reftext", "<reftext");
                            strb = strb.Replace("&lt;/reftext&gt;", "</reftext>");
                            strb = strb.Replace("&lt;/xform&gt;", "</xform>");
                            strb = strb.Replace("&lt;/instances&gt;", "</instances>");
                            strb = strb.Replace("&lt;instances", "<instances");
                            strb = strb.Replace("&lt;xform", "<xform");
                            strb = strb.Replace("\" /&gt;", "\" />");
                            strb = strb.Replace("\"&gt;", "\">");
                            strb = strb.Replace("topic_title=\"\"?\"and \"? &lt;subcommand&gt;\"\"", "topic_title=\"  &lt;subcommand&gt;\"");
                            strb = strb.Replace("topic_title=\"Befehlszeilenhandbuch \"CLI Reference\"\"", "topic_title=\"  Befehlszeilenhandbuch CLI Reference\"");


                            writer.Write(strb.ToString());


                            xmlDoc = new XmlDocument();

                            /**string m = webBrowser1.Document.Body.InnerText.ToString().Replace("- <", "<");
                             * m = m.Replace("&", "&amp;");
                             * m = m.Replace("<","&lt;");
                             * m = m.Replace(">", "&gt;");
                             * m = m.Replace("&lt;lcform", "<lcform");
                             * m = m.Replace("&lt;/lcform&gt;", "</lcform>");
                             * m = m.Replace("&lt;name", "<name");
                             * m = m.Replace("&lt;/name&gt;", "</name>");
                             * m = m.Replace("&lt;email", "<email");
                             * m = m.Replace("&lt;/email&gt;", "</email>");
                             * m = m.Replace("&lt;summary", "<summary");
                             * m = m.Replace("&lt;/summary&gt;", "</summary>");
                             * m = m.Replace("&lt;description", "<description");
                             * m = m.Replace("&lt;/description&gt;", "</description>");
                             * m = m.Replace("&lt;reftext", "<reftext");
                             * m = m.Replace("&lt;/reftext&gt;", "</reftext>");
                             * m = m.Replace("&lt;/xform&gt;", "</xform>");
                             * m = m.Replace("&lt;/instances&gt;", "</instances>");
                             * m = m.Replace("&lt;instances", "<instances");
                             * m = m.Replace("&lt;xform", "<xform");
                             * m = m.Replace("\" /&gt;", "\" />");
                             * m = m.Replace("\"&gt;","\">");
                             * m = m.Replace("topic_title=\"\"?\"and \"? &lt;subcommand&gt;\"\"", "topic_title=\"?and ? &lt;subcommand&gt;\"");
                             *
                             * /* temp to date the strings
                             * DateTime tempdelete = Convert.ToDateTime("02/01/2016");
                             * string s2 = tempdelete.ToString("yyyy-MM-dd");
                             * DateTime dtnew = Convert.ToDateTime(s2); */
                            //MessageBox.Show(dtnew.AddDays(-7).ToString("MM-dd-yyyy"));
                            // System.Console.Write(m);**/
                            //   doc.Save(writer);
                            writer.Close();
                            xmlDoc.Load(tempFileName);
                            xnList = xmlDoc.SelectNodes("//lcform");
                            //File.Delete("LCR_Comments_" + String.Format("{0:yyyy_MM_dd}", DateTime.Today) + ".xlsx");
                            //FileInfo newFile = new FileInfo(@"D:\temp\LCR_Comments_" + String.Format("{0:yyyy_MM_dd}", DateTime.Today) + ".xlsx");
                            //FileInfo newFile = new FileInfo(@"LCR_Comments_" + String.Format("{0:yyyy_MM_dd}", DateTime.Today) + ".xlsx");
                            //ieBrowser.Dispose();
                            isErrorSet = false;
                            log.Info("Comment Extraction completed Successfully from Reach Server.");
                        }
                        catch (Exception ce)
                        {
                            log.Info("Comment Extraction failed. Error is : " + ce.StackTrace);
                            isErrorSet = true;
                        }

                        string schlogMessage = "";
                        //Save the Comments Extracted into the database
                        if (!isErrorSet)
                        {
                            try
                            {
                                log.Info("Comment Extracted Data saving to Database initiated.");
                                DateTime    currDate    = TodDateUtils.GetCurrentTimeInIST();
                                string      fiscalweek  = TodDateUtils.GetWeekOfYearFor(TodDateUtils.GetCurrentTimeInIST());
                                DateTime    ceStartDate = currDate.AddDays(-7).Date;
                                DateTime    ceEndDate   = currDate.AddDays(-1).Date;
                                FW_CALENDAR fwcal       = null;


                                using (var ctx = new TODEntities())
                                {
                                    fwcal             = new FW_CALENDAR();
                                    fwcal.ID          = 1;
                                    fwcal.Fiscal_Week = "FW" + fiscalweek;

                                    ctx.Entry <FW_CALENDAR>(fwcal).State = fwcal.Fiscal_Week == null ? EntityState.Added : EntityState.Unchanged;

                                    ctx.SaveChanges();

                                    var ceDataList = new List <CE_DATA>();
                                    foreach (XmlNode xn in xnList)
                                    {
                                        //prepare the cedata set based on the condition
                                        string   tempDate = xn.Attributes["created"].Value;
                                        DateTime dt       = Convert.ToDateTime(tempDate);
                                        if (dt.Date >= ceStartDate && dt.Date != DateTime.Now.Date)
                                        {
                                            CE_DATA cedataset = new CE_DATA();

                                            cedataset.FW_CALENDAR = fwcal;
                                            cedataset.FW_ID       = fwcal.Fiscal_Week;

                                            cedataset.REP_GEN_DATE = currDate;

                                            cedataset.CREATED_DATE  = dt;
                                            cedataset.CREATED_TIME  = dt;
                                            cedataset.FW_START_DATE = ceStartDate;
                                            cedataset.FW_END_DATE   = ceEndDate;

                                            cedataset = processNodeAttributes(cedataset, xn);

                                            string   tempText  = xn.InnerText;
                                            string[] words     = tempText.Split('|');
                                            int      interCoun = 7;
                                            for (int i = 0; i < words.Length; i++)
                                            {
                                                if (i != 0 && i % 2 == 0)
                                                {
                                                    if (interCoun < 10)
                                                    {
                                                        //worksheet.Cells[columnCount, interCoun].Style.Numberformat.Format = "###0";
                                                        int temp = int.Parse(words[i]);

                                                        //worksheet.Cells[columnCount, interCoun].Value = temp;
                                                        switch (interCoun)
                                                        {
                                                        case 7:
                                                            //accurate rating
                                                            cedataset.ACCURATE_RATING = temp;
                                                            break;

                                                        case 8:
                                                            //useful rating
                                                            cedataset.USEFUL_RATING = temp;
                                                            break;

                                                        case 9:
                                                            //easy to understand rating
                                                            cedataset.EASY_TO_UNDERSTAND_RATING = temp;
                                                            break;
                                                        }
                                                    }
                                                    else
                                                    {
                                                        switch (interCoun)
                                                        {
                                                        case 10:
                                                            //Article Resolved Issue
                                                            cedataset.ARTICLE_SOLVED_ISSUE = words[i];
                                                            break;

                                                        case 11:    //feedback
                                                            cedataset.FEEDBACK = words[i];
                                                            break;
                                                        }

                                                        //worksheet.Cells[columnCount, interCoun].Value = words[i];
                                                    }
                                                    interCoun++;
                                                }
                                            }
                                            cedataset.CE_STATUS = "Success";
                                            ctx.Entry <CE_DATA>(cedataset).State = cedataset.CE_SEQUENCE_ID == 0 ? EntityState.Added : EntityState.Unchanged;
                                            ceDataList.Add(cedataset);
                                        }
                                    }

                                    //attach the disconnected entities
                                    ctx.CE_DATA.AddRange(ceDataList);

                                    //save the cedata set to database
                                    ctx.SaveChanges();

                                    schlogMessage = "Comment Extraction scheduled @ " + currDate + " successfully extracted " + ceDataList.Count() + " records. CE Next Scheduled is " + TodDateUtils.GetFutureTimeInIST(7);
                                    TodScheduler.schedulerJobMessage = schlogMessage;
                                    TodScheduler.schStatus           = true;
                                    log.Info(schlogMessage);

                                    //save log info into log table
                                    TOD_TransactionLog todlog = new TOD_TransactionLog();
                                    todlog.logtype    = "CEDataLog";
                                    todlog.logdate    = DateTime.Now.Date.ToString();
                                    todlog.logMessage = schlogMessage;
                                    todlog.logStatus  = true.ToString();
                                    ctx.TOD_TransactionLog.Add(todlog);

                                    ctx.SaveChanges();
                                }
                            }
                            catch (DbEntityValidationException dbev)
                            {
                                schlogMessage = "Comment Extraction scheduled @ " + TodDateUtils.GetCurrentTimeInIST() + " failed. CE Next Scheduled is " + TodDateUtils.GetFutureTimeInIST(7);
                                TodScheduler.schedulerJobMessage = schlogMessage;
                                log.Info(schlogMessage);
                                TodScheduler.schStatus = false;
                                log.Info(dbev.Message);
                                log.Info("Saving CE Data Failed. Exception occured " + dbev.InnerException);
                            }
                            catch (DbUpdateException dbe)
                            {
                                schlogMessage = "Comment Extraction scheduled @ " + TodDateUtils.GetCurrentTimeInIST() + " failed. CE Next Scheduled is " + TodDateUtils.GetFutureTimeInIST(7);
                                TodScheduler.schedulerJobMessage = schlogMessage;
                                log.Info(schlogMessage);

                                TodScheduler.schStatus = false;
                                log.Info(dbe.Message);
                                log.Info("Saving CE Data Failed. Exception occured " + dbe.InnerException);
                            }
                            DisposeBrowser(true);
                        }
                    }
                }
            }
        }