public async Task <IActionResult> Delete(Guid id)
        {
            //todo: get userid
            var command = new DeleteRemark
            {
                RemarkId = id,
            };

            var remark = await _remarkService.DeleteAsync(command);

            var dto = new RemarkDto
            {
                Id = remark.Id
            };

            return(Ok(dto));
        }
        public async Task HandleAsync(DeleteRemark command)
        {
            await _handler
            .Validate(async() =>
            {
                var remark = await _remarkService.GetAsync(command.RemarkId);
                try
                {
                    await _remarkService.ValidateEditorAccessOrFailAsync(command.RemarkId, command.UserId);

                    return;
                }
                catch
                {
                    if (remark.Value.Group == null)
                    {
                        throw;
                    }
                }
                await _groupService.ValidateIfRemarkCanBeCanceledOrFailAsync(remark.Value.Group.Id, command.UserId);
            })
            .Run(async() =>
            {
                await _remarkService.DeleteAsync(command.RemarkId);
            })
            .OnSuccess(async() =>
            {
                var resource = _resourceFactory.Resolve <RemarkDeleted>(command.RemarkId);
                await _bus.PublishAsync(new RemarkDeleted(command.Request.Id, resource,
                                                          command.UserId, command.RemarkId));
            })
            .OnCustomError(ex => _bus.PublishAsync(new DeleteRemarkRejected(command.Request.Id,
                                                                            command.RemarkId, command.UserId, ex.Code, ex.Message)))
            .OnError(async(ex, logger) =>
            {
                logger.Error(ex, "Error occured while deleting a remark.");
                await _bus.PublishAsync(new DeleteRemarkRejected(command.Request.Id,
                                                                 command.RemarkId, command.UserId, OperationCodes.Error, ex.Message));
            })
            .ExecuteAsync();
        }