mirror of
https://github.com/fergalmoran/podnoms.git
synced 2025-12-25 18:58:12 +00:00
59 lines
2.1 KiB
C#
59 lines
2.1 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
using PodNoms.Api.Models;
|
|
|
|
namespace PodNoms.Api.Persistence {
|
|
public interface IChatRepository : IRepository<ChatMessage> {
|
|
Task<IEnumerable<ChatMessage>> GetSentChats(string fromUserId);
|
|
Task<IEnumerable<ChatMessage>> GetReceivedChats(string fromUserId);
|
|
Task<IEnumerable<ChatMessage>> GetChats(string fromUserId, string toUserId);
|
|
Task<IEnumerable<ChatMessage>> GetAllChats(string userId);
|
|
}
|
|
public class ChatRepository : GenericRepository<ChatMessage>, IChatRepository {
|
|
public ChatRepository(PodNomsDbContext context, ILogger<ChatRepository> logger) : base(context, logger) {
|
|
|
|
}
|
|
|
|
public async Task<IEnumerable<ChatMessage>> GetAllChats(string userId) {
|
|
var chats = await GetAll()
|
|
.Where(c => c.FromUser.Id == userId || c.ToUser.Id == userId)
|
|
.Include(c => c.FromUser)
|
|
.Include(c => c.ToUser)
|
|
.ToListAsync();
|
|
|
|
return chats;
|
|
}
|
|
public async Task<IEnumerable<ChatMessage>> GetChats(string fromUserId, string toUserId) {
|
|
var chats = await GetAll()
|
|
.Where(c => c.FromUser.Id == fromUserId && c.ToUser.Id == toUserId)
|
|
.Include(c => c.FromUser)
|
|
.Include(c => c.ToUser)
|
|
.ToListAsync();
|
|
|
|
return chats;
|
|
}
|
|
|
|
public async Task<IEnumerable<ChatMessage>> GetReceivedChats(string toUserId) {
|
|
var chats = await GetAll()
|
|
.Where(c => c.ToUser.Id == toUserId)
|
|
.Include(c => c.FromUser)
|
|
.Include(c => c.ToUser)
|
|
.ToListAsync();
|
|
|
|
return chats;
|
|
}
|
|
|
|
public async Task<IEnumerable<ChatMessage>> GetSentChats(string fromUserId) {
|
|
var chats = await GetAll()
|
|
.Where(c => c.FromUser.Id == fromUserId)
|
|
.Include(c => c.FromUser)
|
|
.Include(c => c.ToUser)
|
|
.ToListAsync();
|
|
|
|
return chats;
|
|
}
|
|
}
|
|
} |