예제 #1
0
        public async Task <List <Content> > CaseNumberReaderAsync(string token)
        {
            //SDAuthLib sd = new SDAuthLib();
            //sd.GetSDToken();
            // string token = sd.AccessToken;
            // int j = 0;
            List <Content> writeCon = new List <Content>();
            //List<string> id = new List<string>();
            // List<DateTime> time = new List<DateTime>();
            var mails = OutlookEmails.ReadMailItems();

            foreach (var mail in mails)
            {
                String pattern1   = @"[1]\d{14}";
                String CaseReader = mail.EmailSubject;
                Match  match1     = Regex.Match(CaseReader, pattern1, RegexOptions.IgnoreCase);
                if (match1.Success)
                {
                    Content data = new Content()
                    {
                        caseId = match1.Value, alias = mail.EmailTo
                    };
                    data.time  = mail.EmailDate;
                    data.iDate = mail.EmailDate.ToString("MM/dd");
                    //data.iTime = mail.EmailDate.ToString("HH:mm");

                    //var localFormat = "HH:mm TT";
                    //data.iTime = mail.EmailDate.ToString("HH:mm tt");
                    string convert = mail.EmailDate.ToString("HHmm");
                    int    conTime = Int16.Parse(convert);
                    if (conTime > 1200)
                    {
                        StringBuilder sb1 = new StringBuilder();
                        sb1.Append(mail.EmailDate.ToString("hh:mm").ToString());
                        sb1.Append(" PM");
                        data.iTime = sb1.ToString();
                    }
                    else
                    {
                        //data.iTime = mail.EmailDate.ToString("hh:mm").ToString() + " AM";
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append(mail.EmailDate.ToString("hh:mm").ToString());
                        sb2.Append(" AM");
                        data.iTime = sb2.ToString();
                    }

                    // data.iDate = ;
                    String pattern2 = @"Task";
                    Match  match2   = Regex.Match(CaseReader, pattern2, RegexOptions.IgnoreCase);
                    if (match2.Success)
                    {
                        data.isTask = "Collaboration Task";
                    }
                    else
                    {
                        data.isTask = "Case";
                    }
                    StringBuilder ser = new StringBuilder();
                    ser.Append(mail.EmailSubject);
                    ser.Append(mail.EmailBody);
                    string pattern3 = @"\s[A|B|C]\s";
                    Match  match3   = Regex.Match(ser.ToString(), pattern3, RegexOptions.IgnoreCase);
                    if (match3.Success)
                    {
                        data.severity = match3.Value;
                    }
                    else
                    {
                        data.severity = "";
                    }
                    //read the data from json
                    string json = await ReadApi(match1.Value, token);

                    // TokenInfoText.Text += $"Token: {sd.AccessToken}" + Environment.NewLine;
                    // TokenInfoText.Text += $"JSON: {ReadApi}" + Environment.NewLine;
                    dynamic dobj = JsonConvert.DeserializeObject <dynamic>(json);
                    data.Name           = dobj["AgentId"].ToString();
                    data.Topic          = dobj["Title"].ToString();
                    data.SupportCountry = dobj["SupportCountry"].ToString();
                    data.ServiceLevel   = dobj["EntitlementInformation"]["ServiceLevel"].ToString();
                    data.SLA            = "";
                    data.vertical       = "";
                    writeCon.Add(data);
                    //id.Add(match1.Value);
                    //time.Add(mail.EmailDate);
                }
            }
            //Sort the numbers from the oldest to the lastest.
            // id.Sort();
            //remove the dulplicate numbers
            // List<string> id1=id.Distinct().ToList();
            // time.ToString();
            // Console.WriteLine(string.Join("\n", time));
            //  return id1;
            List <Content> nonDuplicateList = new List <Content>();

            foreach (Content mem in writeCon)
            {
                if (nonDuplicateList.Exists(x => x.caseId == mem.caseId) == false)
                {
                    nonDuplicateList.Add(mem);
                }
            }

            /* var sortedData =
             * (from s in nonDuplicateList
             *  select new
             *  {
             *      s.caseId,
             *      s.time,
             *      s.alias,
             *      s.severity
             *  }).Distinct().OrderBy(x => x.caseId).ToList();
             * foreach (var i in sortedData)
             * {
             *   Console.WriteLine("caseId:   " + i.caseId + "          " + "SentTime:   " + i.time + "          " + "Alias:   " + i.alias);
             *
             * }*/
            return(nonDuplicateList);
        }
예제 #2
0
        public static List <OutlookEmails> ReadMailItems()
        {
            Application outlookApplication = null;
            NameSpace   outlookNamespace   = null;
            MAPIFolder  inboxFolder        = null;

            Items mailItems = null;
            List <OutlookEmails> listEmailDetails = new List <OutlookEmails>();
            OutlookEmails        emailDetails;

            try
            {
                outlookApplication = new Application();
                outlookNamespace   = outlookApplication.GetNamespace("MAPI");
                inboxFolder        = outlookNamespace.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
                //mailItems = inboxFolder.Items;
                DateTime startTime = DateTime.Now;
                DateTime endTime   = startTime.AddDays(-150);

                /*sFilter = "[ReceivedTime] >= '"
                 + startTime.ToString("MM/dd/yyyy HH:mm")
                 + "' AND [ReceivedTime] <= '"
                 + endTime.ToString("MM/dd/yyyy HH:mm") + "'";
                 */
                sFilter = "[ReceivedTime] <= '"
                          + startTime.ToString("MM/dd/yyyy HH:mm")
                          + "' AND [ReceivedTime] >= '"
                          + endTime.ToString("MM/dd/yyyy HH:mm") + "'";
                //    04/30/2020 14:53
                //sFilter = "[ReceivedTime] >= '07/05/2020 00:00' AND [ReceivedTime] <= '09/05/2020 00:00' ";

                //mailItems = mailItems.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy hh:mm:ss tt") + "'");
                //mailItems = mailItems.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy HH:mm") + "'");
                mailItems = inboxFolder.Items.Restrict(sFilter);
                //mailItems.Restrict(sFilter);
                //foreach (dynamic item in mailItems)
                foreach (dynamic item in mailItems)
                {
                    if (item is MailItem)
                    {
                        emailDetails              = new OutlookEmails();
                        emailDetails.EmailFrom    = item.SenderEmailAddress;
                        emailDetails.EmailSubject = item.Subject;
                        emailDetails.EmailBody    = item.Body;
                        emailDetails.EmailTo      = item.To;
                        emailDetails.EmailDate    = item.ReceivedTime;

                        listEmailDetails.Add(emailDetails);

                        ReleaseComObject(item);
                    }
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                ReleaseComObject(mailItems);
                ReleaseComObject(inboxFolder);
                ReleaseComObject(outlookNamespace);
                ReleaseComObject(outlookApplication);
            }
            return(listEmailDetails);
        }