Exemplo n.º 1
0
        public async Task <IActionResult> Timeline()
        {
            try
            {
                Guid userId = User.GetUserId();
                List <TimelineDTO> timeline = new List <TimelineDTO>();

                //User Events
                var eventsTimeline = (await _eventRepo.UserEvents(userId)).Select(e => new TimelineDTO()
                {
                    Header    = e.Title,
                    Body      = TimelineHelper.GenerateMyCreateEventBody(e),
                    Image     = e.Photo,
                    CreateAt  = e.CreatedAt,
                    CustomId  = e.Id,
                    Type      = "create-event",
                    LineColor = "#a6714e"
                }).ToList();
                if (!eventsTimeline.IsNullOrEmpty())
                {
                    timeline.AddRange(eventsTimeline);
                }

                //Event Operations
                var eventOperationsTimeline = (await _eventOperationRepo.UserEventOperations(userId)).Select(eo => new TimelineDTO()
                {
                    Header    = eo.Event.Title,
                    Body      = TimelineHelper.GenerateMyJoinEventBody(eo.Event),
                    Image     = eo.Event.Photo,
                    CreateAt  = eo.CreatedAt,
                    CustomId  = eo.EventId,
                    Type      = "join-event",
                    LineColor = "#f78f8f"
                }).ToList();
                if (!eventOperationsTimeline.IsNullOrEmpty())
                {
                    timeline.AddRange(eventOperationsTimeline);
                }

                //Following Friend Operations
                var followFriendOperationsTimeline = (await _friendOperationRepo.Followings(userId)).Select(fo => new TimelineDTO()
                {
                    Header    = fo.FollowingUser.FirstName + " " + fo.FollowingUser.LastName,
                    Body      = TimelineHelper.GenerateMyFollowingBody(),
                    Image     = null,
                    CreateAt  = fo.CreatedAt,
                    CustomId  = fo.FollowingUserId,
                    Type      = "following",
                    LineColor = "#ffeea3"
                }).ToList();
                if (!followFriendOperationsTimeline.IsNullOrEmpty())
                {
                    timeline.AddRange(followFriendOperationsTimeline);
                }

                //Follow Friend Operations
                var followingFriendOperationsTimeline = (await _friendOperationRepo.Followers(userId)).Select(fo => new TimelineDTO()
                {
                    Header    = fo.FollowerUser.FirstName + " " + fo.FollowerUser.LastName,
                    Body      = TimelineHelper.GenerateMyFollowerBody(),
                    Image     = null,
                    CreateAt  = fo.CreatedAt,
                    CustomId  = fo.FollowerUserId,
                    Type      = "follower",
                    LineColor = "#ffeea3"
                }).ToList();
                if (!followingFriendOperationsTimeline.IsNullOrEmpty())
                {
                    timeline.AddRange(followingFriendOperationsTimeline);
                }

                //Comments
                var commentsTimeline = (await _commentRepo.UserComments(userId)).Select(c => new TimelineDTO()
                {
                    Header    = c.Event.Title,
                    Body      = TimelineHelper.GenerateMyCommentBody(userId, c),
                    Image     = null,
                    CreateAt  = c.CreatedAt,
                    CustomId  = c.EventId,
                    Type      = "comment-event",
                    LineColor = "#dcd5f2"
                }).ToList();
                if (!commentsTimeline.IsNullOrEmpty())
                {
                    timeline.AddRange(commentsTimeline);
                }

                if (timeline.IsNullOrEmpty())
                {
                    return(NotFound("Kayıt bulunamadı."));
                }

                return(Ok(timeline.OrderByDescending(t => t.CreateAt)));
            }
            catch (Exception ex)
            {
                _logHelper.Log("AccountController", 500, "Timeline", ex.Message);
                return(null);
            }
        }