public async Task <ActionResult <BasketLine> > Post(Guid basketId, [FromBody] BasketLineForCreation basketLineForCreation) { if (!await _basketRepository.BasketExists(basketId)) { return(NotFound()); } if (!await _eventRepository.EventExists(basketLineForCreation.EventId)) { var eventFromCatalog = await _eventCatalogService.GetEvent(basketLineForCreation.EventId); _eventRepository.AddEvent(eventFromCatalog); await _eventRepository.SaveChanges(); } var basketLineEntity = _mapper.Map <Entities.BasketLine>(basketLineForCreation); var processedBasketLine = await _basketLinesRepository.AddOrUpdateBasketLine(basketId, basketLineEntity); await _basketLinesRepository.SaveChanges(); var basketLineToReturn = _mapper.Map <BasketLine>(processedBasketLine); return(CreatedAtRoute( "GetBasketLine", new { basketId = basketLineEntity.BasketId, basketLineId = basketLineEntity.BasketLineId }, basketLineToReturn)); }
/// <inheritdoc /> public async Task <Unit> Handle(UpdateBasketLineCommand request, CancellationToken cancellationToken) { _basketLinesRepository.UpdateBasketLine(request.BasketLine); await _basketLinesRepository.SaveChanges(); return(Unit.Value); }
/// <inheritdoc /> public async Task <BasketLine> Handle(AddOrUpdateBasketLineCommand request, CancellationToken cancellationToken) { var basketLine = await _basketLinesRepository.AddOrUpdateBasketLine(request.BasketId, request.BasketLine); await _basketLinesRepository.SaveChanges(); return(basketLine); }
public async Task <ActionResult <BasketLine> > Post(Guid basketId, [FromBody] BasketLineForCreation basketLineForCreation) { var basket = await basketRepository.GetBasketById(basketId); if (basket == null) { return(NotFound()); } if (!await eventRepository.EventExists(basketLineForCreation.EventId)) { var eventFromCatalog = await eventCatalogService.GetEvent(basketLineForCreation.EventId); eventRepository.AddEvent(eventFromCatalog); await eventRepository.SaveChanges(); } var basketLineEntity = mapper.Map <Entities.BasketLine>(basketLineForCreation); var processedBasketLine = await basketLinesRepository.AddOrUpdateBasketLine(basketId, basketLineEntity); await basketLinesRepository.SaveChanges(); var basketLineToReturn = mapper.Map <BasketLine>(processedBasketLine); //log also to the event repo var basketChangeEvent = new BasketChangeEvent { BasketChangeType = BasketChangeTypeEnum.Add, EventId = basketLineForCreation.EventId, InsertedAt = DateTime.Now, UserId = basket.UserId }; await basketChangeEventRepository.AddBasketEvent(basketChangeEvent); return(CreatedAtRoute( "GetBasketLine", new { basketId = basketLineEntity.BasketId, basketLineId = basketLineEntity.BasketLineId }, basketLineToReturn)); }