/// <summary> /// DELETE /api/categories/{id} /// </summary> /// <param name="id"></param> /// <param name="data"></param> /// <returns></returns> public HttpResponseMessage Delete(int id, CategoryModel model) { var context = this.DbContext; var entity = context.Categories.Find(id); if (entity == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } if (!this.User.CanDelete(entity)) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden)); } // create the web event var webEvent = new CategoryDeletedEvent(entity); // delete the entity context.Categories.Remove(entity); // persist changes to the database context.SaveChanges(); // fire the web event webEvent.Raise(); return(new HttpResponseMessage(HttpStatusCode.NoContent)); }
public async Task Handle(DeleteCategoryProcessStartedEvent categoryDeletedEvent) { var canDeleteResult = await _deleteValidator.CanDelete(categoryDeletedEvent.Id); if (!canDeleteResult.Success) { var failedEvent = new DeletingCategoryFailedEvent(categoryDeletedEvent.Id, canDeleteResult.Status, categoryDeletedEvent.CorrelationId); await this.SaveAndDispatchEvent(categoryDeletedEvent.Id, failedEvent); _logger.LogProgress(OperationStatus.Failed, "Category is used", categoryDeletedEvent.CorrelationId); return; } var deleteResult = await _categoryIndexer.Delete(categoryDeletedEvent.Id); if (!deleteResult.Success) { var failedEvent = new DeletingCategoryFailedEvent(categoryDeletedEvent.Id, CategoryModificationStatus.UnexpectedProblem, categoryDeletedEvent.CorrelationId); await this.SaveAndDispatchEvent(categoryDeletedEvent.Id, failedEvent); _logger.LogProgress(OperationStatus.Failed, $"Problem occured during saving category {categoryDeletedEvent.Id}", categoryDeletedEvent.CorrelationId); } var successEvent = new CategoryDeletedEvent(categoryDeletedEvent.Id, categoryDeletedEvent.CorrelationId); _logger.LogProgress(OperationStatus.Finished, string.Empty, categoryDeletedEvent.CorrelationId); await this.SaveAndDispatchEvent(categoryDeletedEvent.Id, successEvent); }
public Helper SetupCategoryDeletedEvent(CategoryDeletedEvent evnt) { MockEventDispatcher .Setup(x => x.Publish(It.Is <CategoryDeletedEvent>(s => s.Id == evnt.Id))) .Returns(Task.CompletedTask) .Verifiable(); return(this); }
public void CategoryDeletedEvent_Ctor_Should_Set_Arguments_Correctly() { Guid categoryId = Guid.NewGuid(); var @event = new CategoryDeletedEvent(categoryId); Assert.Equal(categoryId, @event.CategoryId); Assert.Equal(categoryId, @event.AggregateId); Assert.Equal(typeof(Catalog.Models.Category), @event.AggregateType); }
/// <summary> /// <see cref="IHandleEvent{TEvent}.Handle(TEvent)"/> /// </summary> /// <param name="event"></param> public void Handle(CategoryDeletedEvent @event) { try { EventStore.Save(@event); } catch { throw; } }
public Task <AsyncTaskResult> HandleAsync(CategoryDeletedEvent evnt) { return(TryTransactionAsync(async(connection, transaction) => { var effectedRows = await connection.DeleteAsync(new { Id = evnt.AggregateRootId, //Version = evnt.Version - 1 }, ConfigSettings.CategoryTable, transaction); })); }
public async Task DeleteCategory(Guid categoryId) { try { var category = await Repository.GetByKeyAsync <Category>(categoryId); category.Delete(); await Repository.SaveChangesAsync(); var @event = new CategoryDeletedEvent(categoryId); EventBus.RaiseEvent(@event); } catch { throw; } }
/// <summary> /// Implementation of <see cref="ICategoryCommands.DeleteCategory(Guid)"/> /// </summary> /// <param name="categoryId">The category id</param> /// <returns></returns> public virtual async Task DeleteCategory(Guid categoryId) { try { if (categoryId == Guid.Empty) { throw new ArgumentException("value cannot be empty", nameof(categoryId)); } var category = await Repository.GetByKeyAsync <Category>(categoryId); category.Delete(); await Repository.SaveChangesAsync(); var @event = new CategoryDeletedEvent(categoryId); EventBus.RaiseEvent(@event); } catch { throw; } }
private void Handle(CategoryDeletedEvent evnt) { _name = null; _url = null; _thumb = null; }
public void ApplyEvent(CategoryDeletedEvent categoryDeletedEvent) { this.IsDeleted = true; }