Пример #1
0
        public async Task <GroupInvite> CancelOrRejectInviteAsync(NaheulbookExecutionContext executionContext, int groupId, int characterId)
        {
            using (var uow = _unitOfWorkFactory.CreateUnitOfWork())
            {
                var groupInvite = await uow.GroupInvites.GetByCharacterIdAndGroupIdWithGroupWithCharacterAsync(groupId, characterId);

                if (groupInvite == null)
                {
                    throw new InviteNotFoundException(characterId, groupId);
                }

                _authorizationUtil.EnsureCanDeleteGroupInvite(executionContext, groupInvite);

                uow.GroupInvites.Remove(groupInvite);

                await uow.SaveChangesAsync();

                var session = _notificationSessionFactory.CreateSession();
                session.NotifyCharacterCancelGroupInvite(characterId, groupInvite);
                session.NotifyGroupCancelGroupInvite(groupId, groupInvite);
                await session.CommitAsync();

                return(groupInvite);
            }
        }