public async Task <IHttpActionResult> GetPublicProfile(string userId, int joinedAmount, int launchedAmount) { var user = await db .Users .FirstOrDefaultAsync(u => u.Id == userId); var profile = await db .Profiles .FirstOrDefaultAsync(p => p.UserId == userId); // if neither presented if (user == null && profile == null) { return(NotFound()); } // if only one presents, reply 500, indicating that the two tables doesn't match if (user == null || profile == null) { return(StatusCode(HttpStatusCode.InternalServerError)); } var publicUserView = new PublicUserViewModel() { UserId = user.Id, Email = user.Email, UserName = user.UserName, Number = user.Number, NickName = profile.NickName, Picture = profile.Picture, Gender = profile.Gender, Brief = profile.Brief, CreatedAt = profile.CreatedAt, UpdatedAt = profile.UpdatedAt }; var JoinedMeetupIds = db.Joins.Where(j => j.UserId == user.Id); publicUserView.JoinedMeetups = db .Meetups .Where(m => JoinedMeetupIds.Count(j => j.MeetupId == m.Id) > 0) .Take(joinedAmount); publicUserView.JoinedMeetupsTotal = db .Meetups .Where(m => JoinedMeetupIds.Count(j => j.MeetupId == m.Id) > 0) .Count(); publicUserView.LaunchedMeetups = db .Meetups .Where(m => m.Sponsor == userId) .Take(launchedAmount); publicUserView.LaunchedMeetupsTotal = db .Meetups .Where(m => m.Sponsor == user.Id) .Count(); return(Ok(publicUserView)); }
public SpotifyUserController (SpotifyUser userRepo, IMapper mapper, SpotifyPlayer playerRepo, ICookieManager cookiesManager, PublicUserViewModel userModel, UserProfileViewModel model) { _model = model; _userModel = userModel; _userRepo = userRepo; _mapper = mapper; _playerRepo = playerRepo; _cookiesManager = cookiesManager; }