private GroupUser MapGroupUserDto(GroupUserDto groupUserDto) { GroupUser groupUser = _mapper.Map <GroupUser>(groupUserDto); ClientProfile profile = _database.ClientProfileRepository.GetByName(groupUserDto.Username); if (profile != null) { groupUser.ApplicationUserId = profile.Id; return(groupUser); } return(null); }
public async Task <GroupUserDto> AddUserToGroup(GroupUserDto groupUserDto) { GroupUser groupUser = MapGroupUserDto(groupUserDto); if (groupUser == null) { return(null); } groupUser = await _database.GroupUserRepository.Create(groupUser); return(await MapGroupUser(groupUser)); }
public async Task UserJoinGroupAsync(Guid userId, string slug, CancellationToken cancellationToken) { if (Guid.Empty == userId) { throw new ArgumentOutOfRangeException(nameof(userId)); } if (string.IsNullOrEmpty(slug)) { throw new ArgumentOutOfRangeException(nameof(slug)); } var now = _systemClock.UtcNow.UtcDateTime; var defaultRole = await _rolesCommand.GetRoleAsync(DefaultRole, cancellationToken); var group = await _groupCommand.GetGroupAsync(slug, cancellationToken); if (group is null) { _logger.LogError($"Error: UserJoinGroupAsync - Group not found for slug:{0}", slug); throw new KeyNotFoundException("Error: Group not found for slug"); } var groupUser = await _groupCommand.GetGroupUserAsync(userId, group.Id, cancellationToken); if (groupUser is not null && !groupUser.Rejected) { throw new ValidationException(nameof(groupUser.MembershipUser), "User has already requested access to this group"); } groupUser = new GroupUserDto { Group = group.Id, MembershipUser = userId, RequestToJoinDateUTC = now, Approved = group.IsPublic, ApprovingMembershipUser = group.IsPublic ? userId : null, ApprovedDateUTC = group.IsPublic ? now : null, MembershipRole = defaultRole.Id, }; await _groupCommand.UserJoinGroupAsync(groupUser, cancellationToken); if (!group.IsPublic) { _ = Task.Run(() => _groupMemberNotificationService.SendApplicationNotificationToGroupAdminAsync(slug, cancellationToken), cancellationToken); } }
public ActionResult<GroupUserDto> GetGroupMembers([FromRoute] int id) { var group = _context.Groups.Find(id); if (group == null) { return NotFound("Could not find group with this id"); } var admins = _context.UserGroups.Where(y => y.GroupId == id).ToList(); var adminsDto = new List<GroupUserDto>(); foreach (var admin in admins) { var adminDto = new GroupUserDto(); adminDto.IdUser = admin.UserId; adminDto.FirstLastname = _context.Users.Find(admin.UserId).FirstName + ' ' + _context.Users.Find(admin.UserId).LastName; adminsDto.Add(adminDto); } return Ok(adminsDto); }
public async Task <GroupUserDto> GetCurrentUser(long groupId) { GroupUserDto currentUser = await repository.GetGroupUserDto(groupId, CurrentUserId); return(currentUser); }
public async Task UserJoinGroupAsync(GroupUserDto groupUser, CancellationToken cancellationToken = default) { const string query = @"IF EXISTS (SELECT [Id] FROM [dbo].[GroupUser] WHERE [MembershipUser_Id] = @UserId AND [Group_Id] = @GroupId AND [Rejected] = 1) BEGIN UPDATE [dbo].[GroupUser] SET [Rejected] = 0 WHERE [MembershipUser_Id] = @UserId AND [Group_Id] = @GroupId END ELSE BEGIN INSERT INTO [dbo].[GroupUser] ([Id] ,[Approved] ,[Rejected] ,[Locked] ,[Banned] ,[RequestToJoinDateUTC] ,[ApprovedToJoinDateUTC] ,[RequestToJoinReason] ,[LockReason] ,[BanReason] ,[ApprovingMembershipUser_Id] ,[MembershipRole_Id] ,[MembershipUser_Id] ,[Group_Id]) VALUES (NEWID() ,@Approved ,@Rejected ,@Locked ,@Banned ,@RequestToJoinDate ,@ApprovedToJoinDate ,@RequestToJoinReason ,@LockReason ,@BanReason ,@ApprovingUser ,@Role ,@UserId ,@GroupId) END"; var queryDefinition = new CommandDefinition(query, new { GroupId = groupUser.Group, UserId = groupUser.MembershipUser, Approved = groupUser.Approved, Rejected = groupUser.Rejected, Locked = groupUser.Locked, Banned = groupUser.Banned, RequestToJoinDate = groupUser.RequestToJoinDateUTC, ApprovedToJoinDate = groupUser.ApprovedDateUTC, RequestToJoinReason = groupUser.RequestToJoinReason, LockReason = groupUser.LockReason, BanReason = groupUser.BanReason, ApprovingUser = groupUser.ApprovingMembershipUser, Role = groupUser.MembershipRole }, cancellationToken: cancellationToken); using var dbConnection = await _connectionFactory.GetReadWriteConnectionAsync(cancellationToken); var result = await dbConnection.ExecuteAsync(queryDefinition); if (result != 1) { _logger.LogError($"Error: User request to join group was not added User:{0}, Group:{1} ", groupUser.MembershipUser, groupUser.Group); throw new DBConcurrencyException("Error: User request to join group was not added"); } }