first commit
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using Fitness_core_BE.Interfaces;
|
||||
using Fitness_core_BE.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Fitness_core_BE.Repos
|
||||
{
|
||||
public class ChatRepository : IChatRepo
|
||||
{
|
||||
private readonly CentralDbContext _context;
|
||||
|
||||
public ChatRepository(CentralDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<Chat?> GetChatByIdAsync(Guid chatId)
|
||||
{
|
||||
return await _context.Chat
|
||||
.AsNoTracking()
|
||||
.FirstOrDefaultAsync(c => c.Id == chatId && c.IsAcitve);
|
||||
}
|
||||
|
||||
public async Task<Chat?> GetChatBetweenUsersAsync(Guid userAId, Guid userBId)
|
||||
{
|
||||
return await _context.Chat
|
||||
.AsNoTracking()
|
||||
.FirstOrDefaultAsync(c =>
|
||||
c.IsAcitve &&
|
||||
(
|
||||
(c.FKSenderId == userAId && c.FKReceiverId == userBId) ||
|
||||
(c.FKSenderId == userBId && c.FKReceiverId == userAId)
|
||||
));
|
||||
}
|
||||
|
||||
public async Task CreateChatAsync(Chat chat)
|
||||
{
|
||||
await _context.Chat.AddAsync(chat);
|
||||
}
|
||||
|
||||
public async Task AddMessageAsync(ChatMessages message)
|
||||
{
|
||||
await _context.ChatMessages.AddAsync(message);
|
||||
}
|
||||
|
||||
public async Task<List<ChatMessages>> GetMessagesAsync(
|
||||
Guid chatId,
|
||||
int skip,
|
||||
int take)
|
||||
{
|
||||
return await _context.ChatMessages
|
||||
.AsNoTracking()
|
||||
.Where(m => m.FKChatId == chatId && m.IsAcitve)
|
||||
.OrderBy(m => m.CreatedAt)
|
||||
.Skip(skip)
|
||||
.Take(take)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<bool> IsUserInChatAsync(Guid chatId, Guid userId)
|
||||
{
|
||||
return await _context.Chat
|
||||
.AsNoTracking()
|
||||
.AnyAsync(c =>
|
||||
c.Id == chatId &&
|
||||
c.IsAcitve &&
|
||||
(c.FKSenderId == userId || c.FKReceiverId == userId));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user