65 lines
2.0 KiB
C#
65 lines
2.0 KiB
C#
using GroupService.Domain.Entities;
|
|
using GroupService.Domain.IReposities;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace GroupService.Infrastructure.Reposities
|
|
{
|
|
public class GroupMemberReposity : IGroupMemberReposity
|
|
{
|
|
private readonly GroupDbContext db;
|
|
|
|
public GroupMemberReposity(GroupDbContext db)
|
|
{
|
|
this.db = db;
|
|
}
|
|
|
|
public async Task<bool> CheckMemberExistAsync(Guid groupId, Guid userId)
|
|
{
|
|
return await db.GroupMembers.AnyAsync(x => x.UserId == userId &&
|
|
x.GroupId == groupId
|
|
);
|
|
}
|
|
|
|
public GroupMember Create(GroupMember member)
|
|
{
|
|
db.GroupMembers.Add(member);
|
|
return member;
|
|
}
|
|
|
|
public async Task<IEnumerable<GroupMember>> FindByGroupIdAsync(Guid groupId)
|
|
{
|
|
return await db.GroupMembers.Where(x => x.GroupId == groupId).ToListAsync();
|
|
}
|
|
public async Task<GroupMember?> FindOneByGroupIdAndUserIdAsync(Guid groupId, Guid userId)
|
|
{
|
|
return await db.GroupMembers.FirstOrDefaultAsync(x => x.UserId == userId
|
|
&& x.GroupId == groupId
|
|
);
|
|
}
|
|
|
|
public async Task<IEnumerable<GroupMember>> FindByUserIdAsync(Guid userId)
|
|
{
|
|
return await db.GroupMembers.Where(x => x.UserId == userId).ToListAsync();
|
|
}
|
|
|
|
public async Task<GroupMember?> FindByIdAsync(Guid id)
|
|
{
|
|
return await db.GroupMembers.FirstOrDefaultAsync(x => x.Id == id);
|
|
}
|
|
|
|
public async Task<bool> CheckMemberAdminAsync(Guid groupId, Guid userId)
|
|
{
|
|
return await db.GroupMembers.AnyAsync(
|
|
x => x.GroupId == groupId && x.UserId == userId
|
|
&& (x.Role == Domain.Enums.GroupMemberRole.Administrator
|
|
|| x.Role == Domain.Enums.GroupMemberRole.Master)
|
|
);
|
|
}
|
|
|
|
public void CreateRange(IEnumerable<GroupMember> members)
|
|
{
|
|
db.GroupMembers.AddRange(members);
|
|
}
|
|
}
|
|
}
|