Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        /// <param name="store"></param>
        /// <param name="category"></param>
        /// <returns>true if we were able to set attachments; false otherwise</returns>
        public bool TryGetAndAttachDocuments(EmailMessage message, Entity.Store store, string category)
        {
            var regex = new System.Text.RegularExpressions.Regex(@"RFI:\s(?<rfi>\d+)\b");

            var match = regex.Match(category);

            var group = match.Groups;

            var sid = group["rfi"].Value;

            int rfiNumber;

            if (int.TryParse(sid, out rfiNumber))
            {
                var creds = Configuration.ConfigHandler.InstanceOf.GetCredentials;

                var crawler = new EvocoWebCrawler.HttpClient(creds);

                System.IO.Stream docStream;

                if (crawler.TryNavigateStoreRfi(store.Number, store.Sequence, rfiNumber, out docStream))
                {
                    var rfiAttachments = crawler.GetHttpFileAttachment(docStream);

                    int count = 1;

                    foreach (var item in rfiAttachments)
                    {
                        //we're going to rename the rfi attachments to match the RHA convention:
                        // {storenumber}_RFI {rfinumber,D3}_Attachment {ordinal,D2}.{extension}
                        // example: 6188_RFI 044_Attachment 01.pdf
                        var parser = new Parser();

                        var extension = parser.GetAttachmentExtension(item.Key);

                        var name = string.Format("{0}_RFI {1}_Attachment {2}{3}", store.Number.ToString(), rfiNumber.ToString("D3"), count.ToString("D2"), extension);

                        message.Attachments.AddFileAttachment(name, item.Value);

                        Logger.LoggerAsync.InstanceOf.GeneralLogger.Info("Found and attached file: ", name);

                        count++;
                    }

                    return(true);
                }
            }

            return(false);
        }