public List <IPrivateChatStatus> GetPrivateChatStatuses(int userId) { using (var db = new HellolingoEntities()) { var entityResult = db.TextChatTrackers.AsNoTracking() .OrderByDescending(a => a.StatusAt) .Where(a => a.UserId == userId && a.Status != TrackerStatus.AutoBlocked) .Select(a => new { a.Status, a.StatusAt, a.Partner }) // IMPORTANT LINE: It prevents EF from having to load all related data (e.g. users, statuses details, etc...) .ToList(); return(entityResult.Select( status => (IPrivateChatStatus) new PrivateChatStatus { Partner = new TextChatUser { FirstName = status.Partner.FirstName, Id = status.Partner.Id, LastName = status.Partner.LastName, Country = status.Partner.CountryId, Location = status.Partner.Location, Gender = status.Partner.Gender, Age = AgeInYearsHelper.GetAgeFrom(status.Partner.BirthYear, status.Partner.BirthMonth), Knows = status.Partner.KnowsId, Learns = status.Partner.LearnsId, Knows2 = status.Partner.Knows2Id, Learns2 = status.Partner.Learns2Id }, StatusId = status.Status, StatusAt = status.StatusAt }).ToList()); } }
private ClientSideUser ClientSideUserFromUser(User user, AspNetUser aspNetUser) { return(new ClientSideUser { Id = user.Id, FirstName = user.FirstName, LastName = user.LastName, Email = aspNetUser.Email, BirthMonth = user.BirthMonth, BirthYear = user.BirthYear, Age = AgeInYearsHelper.GetAgeFrom(user.BirthYear, user.BirthMonth), Gender = user.Gender, Country = user.CountryId, Location = user.Location, Learns = user.LearnsId, Learns2 = user.Learns2Id, Learns3 = user.Learns3Id, Knows = user.KnowsId, Knows2 = user.Knows2Id, Knows3 = user.Knows3Id, Introduction = user.Introduction, LookToLearnWithTextChat = user.Tags.Any(t => t.Id == UserTags.LookToLearnWithTextChat), LookToLearnWithVoiceChat = user.Tags.Any(t => t.Id == UserTags.LookToLearnWithVoiceChat), LookToLearnWithGames = user.Tags.Any(t => t.Id == UserTags.LookToLearnWithGames), LookToLearnWithMore = user.Tags.Any(t => t.Id == UserTags.LookToLearnWithMore), IsSharedTalkMember = user.Tags.Any(t => t.Id == UserTags.FormerSharedTalkMember), IsLivemochaMember = user.Tags.Any(t => t.Id == UserTags.LivemochaMember), IsSharedLingoMember = user.Tags.Any(t => t.Id == UserTags.SharedLingoMember), WantsToHelpHellolingo = user.Tags.Any(t => t.Id == UserTags.WantsToHelpHellolingo), IsNoPrivateChat = user.Tags.Any(t => t.Id == UserTags.TextChatNoPrivateChat), IsEmailConfirmed = user.StatusId != UserStatuses.PendingEmailValidation, }); }
public PublicUserLight(User user) { Id = user.Id; FirstName = user.FirstName; LastName = user.LastName; Gender = user.Gender; Age = AgeInYearsHelper.GetAgeFrom(user.BirthYear, user.BirthMonth); Country = user.CountryId; Knows = user.KnowsId; Learns = user.LearnsId; Knows2 = user.Knows2Id; Learns2 = user.Learns2Id; }
public PublicUser(User user) { Id = user.Id; FirstName = user.FirstName; LastName = user.LastName; Gender = user.Gender; Age = AgeInYearsHelper.GetAgeFrom(user.BirthYear, user.BirthMonth); Country = user.CountryId; Location = user.Location; Knows = user.KnowsId; Learns = user.LearnsId; Knows2 = user.Knows2Id; Learns2 = user.Learns2Id; Introduction = user.Introduction; IsSharedTalkMember = user.Tags.Any(t => t.Id == UserTags.FormerSharedTalkMember); // Show SharedTalk members to other SharedTalk members only IsLivemochaMember = user.Tags.Any(t => t.Id == UserTags.LivemochaMember); // Show Livemocha members to other Livemocha members only IsSharedLingoMember = user.Tags.Any(t => t.Id == UserTags.SharedLingoMember); // Show Livemocha members to other Livemocha members only }