Example #1
0
        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);
            }
        }
Example #2
0
        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);
            }
        }