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(); }