Beispiel #1
0
        public async Task <IActionResult> GetEpicomPost([FromRoute] int outbreakId)
        {
            OutbreakEpicomDTO epicomDto = new OutbreakEpicomDTO();

            var forumIdTask = outbreakRepository.GetEventDescription(outbreakId, OutbreakEventType.EpiComForum);
            var topicIdTask = outbreakRepository.GetEventDescription(outbreakId, OutbreakEventType.EpiComTopic);
            var title       = outbreakRepository.GetEventDescription(outbreakId, OutbreakEventType.EpiComTitle);

            var body = await readStore.QuerySingleAsync <dynamic>("exec GenerateEpiComMessageBody @outbreakId", new { outbreakId });

            if (int.TryParse(await forumIdTask, out var forumId))
            {
                epicomDto.ForumId = forumId;
            }

            if (int.TryParse(await topicIdTask, out var topicId))
            {
                epicomDto.TopicId = topicId;
            }

            epicomDto.Title   = await title;
            epicomDto.Message = body.HTML;

            return(Ok(epicomDto));
        }
Beispiel #2
0
        public async Task <OutbreakEpicomDTO> GetEpicomPostDetails(int postId)
        {
            var client = await getClient();

            var detailsString = await client.GetEpicomPostDetailAsync(postId);

            XDocument doc;

            OutbreakEpicomDTO epicomDto = new OutbreakEpicomDTO {
            };

            epicomDto.PostId = postId;

            try
            {
                doc = XDocument.Parse(detailsString);
            } catch (Exception e) {
                return(epicomDto);
            }

            XNamespace ns = doc.Root.GetDefaultNamespace();

            var forumNames = await GetForumNames();

            var forumElements = doc.Descendants(ns + "Forum");

            var forumDescription = forumElements.Select(d => d.Value).FirstOrDefault();

            var forumId = forumNames
                          .Where(code => code.Description.Equals(forumDescription))
                          .Select(code => code.Code)
                          .FirstOrDefault();

            epicomDto.ForumId = int.Parse(forumId);

            var topicElements = doc.Descendants(ns + "Topic");

            var topicDescription = topicElements.Select(d => d.Value).FirstOrDefault();

            epicomDto.TopicDescription = topicDescription;

            string topicId = null;

            if (forumId != null)
            {
                var topics = await GetTopicsByForumId(Convert.ToInt32(forumId));

                topicId = topics
                          .Where(code => code.Description.Equals(topicDescription))
                          .Select(code => code.Code)
                          .FirstOrDefault();
            }

            epicomDto.TopicId = int.Parse(topicId);

            epicomDto.ForumDescription = forumDescription;

            var postIdElements = doc.Descendants(ns + "Post_ID");

            epicomDto.PostId = int.Parse(postIdElements.Select(d => d.Value).FirstOrDefault());

            var postDateElements = doc.Descendants(ns + "Post_Date");

            epicomDto.Date = DateTime.Parse(postDateElements.Select(d => d.Value).FirstOrDefault());

            var titleElements = doc.Descendants(ns + "Title");

            epicomDto.Title = titleElements.Select(d => d.Value).FirstOrDefault();

            var authorElements = doc.Descendants(ns + "Author_Name");

            epicomDto.Author = authorElements.Select(d => d.Value).FirstOrDefault();

            var detailsElement = doc.Descendants(ns + "Post_Detail");

            epicomDto.Message = detailsElement.Select(d => d.Value).FirstOrDefault();

            return(epicomDto);
        }
Beispiel #3
0
        public async Task <IActionResult> GetOutbreakEpicomById([FromRoute] int outbreakId)
        {
            //string sql = @"SELECT ISNULL((
            //    SELECT TOP 1(
            //        SELECT DS_DESC AS [text()]
            //        FROM dbo.OUTBREAK_EVENTS
            //        WHERE ID_EVENT = OE.ID_EVENT
            //        ORDER BY ID_SEQUENCE FOR XML PATH(''), TYPE
            //    ).value('.', 'nvarchar(max)')
            //FROM OUTBREAK_EVENTS OE
            //WHERE OE.ID_OUTBREAK = @outbreakId AND OE.CD_EVENT_TYPE = 'EPICOM_POST_ID'
            //ORDER BY OE.DT_EVENT DESC
            //),'')";

            //var epicomUserId = await readContext.EpiUser
            //    .Where(user => user.IdUser.Equals(User.Identity.Name))
            //    .Select(user => user.DsEpicomId)
            //    .FirstOrDefaultAsync();

            //int epicomID;

            //bool idExists = int.TryParse(epicomUserId, out epicomID);

            //OutbreakEpicomDTO epicomDto = new OutbreakEpicomDTO
            //{
            //    PendingPostId = null,
            //    PostId = null,
            //    TopicId = null,
            //    ForumId = null,
            //    Title = null,
            //    Date = null,
            //    EpicomUserId = null
            //};

            //epicomDto.EpicomUserId = epicomUserId;

            var sPostId = await outbreakRepository.GetEventDescription(outbreakId, OutbreakEventType.EpiComPostId);

            var sPendingPostId = await outbreakRepository.GetEventDescription(outbreakId, OutbreakEventType.PendingEpiComPostId);

            //epicomDto.PendingPostId = pendingPostId;
            //epicomDto.PostId = postId;

            int postId = default(int);

            int.TryParse(sPostId, out postId);

            OutbreakEpicomDTO post;

            if (postId == default(int))
            {
                post = new OutbreakEpicomDTO {
                };
                if (postId > 0)
                {
                    post.PostId = postId;
                }
            }
            else
            {
                post = await epicomRepository.GetEpicomPostDetails(postId);
            }

            int pendingPostId = default(int);

            if (int.TryParse(sPendingPostId, out pendingPostId))
            {
                post.PendingPostId = pendingPostId;
            }

            return(Ok(post));
        }