public async Task AddMessage(Message message) { var renter = await GetUser(message.RenterEmail); var lessor = await GetUser(message.LessorEmail); var junction = new List <MessagesWithUsers>() { new MessagesWithUsers() { Message = message, MessageId = message.MessageID, User = renter, UserEmail = renter.Email }, new MessagesWithUsers() { Message = message, MessageId = message.MessageID, User = lessor, UserEmail = lessor.Email } }; await MessagesWithUsersJunction.AddRangeAsync(junction); await Messages.AddAsync(message); await SaveChangesAsync(); }
public async Task <List <Message> > GetMessages(User user, List <Message> messageAlreadyRead, int amount) { var messages = await MessagesWithUsersJunction .Where(mwu => mwu.UserEmail == user.Email) .Select(mwu => mwu.Message) .Where(msg => !messageAlreadyRead.Contains(msg)) .OrderByDescending(msg => msg.CreatedDate) .Include(msg => msg.MessagesWithUsers) .ThenInclude(mwu => mwu.User) .Include(msg => msg.CarProfile) .Take(amount) .ToListAsync(); return(messages); }