using GroupService.Domain.Entities; using GroupService.Domain.Enums; using GroupService.Domain.IReposities; using IM.Commons; namespace GroupService.Domain { public class GroupMemberDomainService { private readonly IGroupMemberReposity reposity; public GroupMemberDomainService(IGroupMemberReposity reposity) { this.reposity = reposity; } public async Task> CreateAsync( Guid userId, Guid groupId, string nickName, string? avatar, GroupMemberRole role = GroupMemberRole.Normal) { var exist = await reposity.CheckMemberExistAsync(groupId, userId); if (exist) { return Result.Fail(ResultCode.ALREADY_IN_GROUP); } var groupMember = new GroupMember(userId, groupId, nickName, avatar, role); groupMember = reposity.Create(groupMember); return Result.Success(groupMember); } } }