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)); }
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); }
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)); }