Exemplo n.º 1
0
        public async Task <ActionResult <MicroPostViewModel> > PostMicroPost([FromBody] MicroPostViewModel microPostViewModel)
        {
            MicroPost       micropost     = new MicroPost();
            string          currentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            ApplicationUser currentUser   = await _context.Users.FirstOrDefaultAsync(x => x.Id == currentUserId).ConfigureAwait(false);

            micropost.Content   = microPostViewModel.Content;
            micropost.Author    = currentUser;
            micropost.CreatedAt = DateTime.Now;
            micropost.UpdatedAt = DateTime.Now;

            _context.MicroPost.Add(micropost);
            await _context.SaveChangesAsync();

            return(microPostViewModel);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <MicroPostsViewModel> > GetMicroPosts()
        {
            ApplicationUser user = null;

            try
            {
                user = await _context.Users.Include("FollowingUsers").Include("MicroPosts").SingleAsync(u => u.Id == User.FindFirstValue(ClaimTypes.NameIdentifier));
            }
            catch (Exception exception)
            {
                Console.WriteLine($"GetMicroPost exception: {exception.Message}");
            }

            MicroPostsViewModel microPostsViewModel = new MicroPostsViewModel();

            IQueryable <MicroPost> microposts;

            foreach (FollowersFollowing followingUser in user.FollowingUsers)
            {
                // Need to find a way to make this async
                microposts = _context.MicroPost.Where(w => w.Author.Id == followingUser.FollowerId).Include(i => i.Author);

                foreach (MicroPost microPost in microposts)
                {
                    MicroPostViewModel microPostViewModel = new MicroPostViewModel();

                    microPostViewModel.InjectFrom(microPost);
                    microPostViewModel.Author = microPost.Author.ScreenName;
                    microPostViewModel.Email  = microPost.Author.Email;
                    microPostsViewModel.MicroPosts.Add(microPostViewModel);
                }
            }

            foreach (MicroPost microPost in user.MicroPosts)
            {
                MicroPostViewModel microPostViewModel = new MicroPostViewModel();

                microPostViewModel.InjectFrom(microPost);
                microPostViewModel.Author = microPost.Author.ScreenName;
                microPostViewModel.Email  = microPost.Author.Email;
                microPostsViewModel.MicroPosts.Add(microPostViewModel);
            }


            return(microPostsViewModel);
        }