private async Task UpdateProjectWallModeratorAsync(EditProjectDto dto, Project project) { if (project.Wall.Moderators.Any()) { var currentModeratorId = project.Wall.Moderators.First().UserId; if (currentModeratorId == dto.OwningUserId) { return; } if (!dto.MembersIds.Contains(currentModeratorId)) { await _wallService.RemoveMemberFromWallAsync(currentModeratorId, project.WallId); } await _wallService.RemoveModeratorAsync(project.WallId, project.Wall.Moderators.First().UserId, dto); await _wallService.AddModeratorAsync(project.WallId, dto.OwningUserId, dto); } else { await _wallService.AddModeratorAsync(project.WallId, dto.OwningUserId, dto); } }
private async Task UpdateWallAsync(Event currentEvent, EditEventDto updatedEvent) { var updateWallDto = new UpdateWallDto { Id = currentEvent.WallId, Description = updatedEvent.Description, Logo = updatedEvent.ImageName, Name = updatedEvent.Name, OrganizationId = updatedEvent.OrganizationId, UserId = updatedEvent.UserId }; await _wallService.UpdateWallAsync(updateWallDto); var responsibleUserChanged = currentEvent.ResponsibleUserId != updatedEvent.ResponsibleUserId; var currentHostIsParticipating = currentEvent.EventParticipants.Any(x => x.ApplicationUserId == currentEvent.ResponsibleUserId); var newHostIsParticipating = currentEvent.EventParticipants.Any(p => p.ApplicationUserId == updatedEvent.ResponsibleUserId); if (!responsibleUserChanged) { return; } await _wallService.RemoveModeratorAsync(currentEvent.WallId, currentEvent.ResponsibleUserId, updatedEvent); await _wallService.AddModeratorAsync(currentEvent.WallId, updatedEvent.ResponsibleUserId, updatedEvent); if (!newHostIsParticipating) { await _wallService.JoinOrLeaveWallAsync(currentEvent.WallId, updatedEvent.ResponsibleUserId, updatedEvent.ResponsibleUserId, updatedEvent.OrganizationId, true); } if (!currentHostIsParticipating) { await _wallService.JoinOrLeaveWallAsync(currentEvent.WallId, currentEvent.ResponsibleUserId, currentEvent.ResponsibleUserId, updatedEvent.OrganizationId, true); } }