public async Task <ActionResult <BasketLineDto> > Post(Guid basketId, BasketLineForCreationDto basketLineForCreationDto) { if (!(await _basketRepository.Exists(basketId))) { return(BadRequest()); } var @event = await _eventCatalogService.GetEvent(basketLineForCreationDto.EventId); if (@event == null) { return(BadRequest()); } if (!(await _eventRepository.Exists(basketLineForCreationDto.EventId))) { await _eventRepository.Add(@event); } if (!(await _basketRepository.BasketLineExists(basketId, basketLineForCreationDto.EventId))) { var basketLine = _mapper.Map <BasketLine>(basketLineForCreationDto); await _basketRepository.AddBasketLine(basketId, basketLine); return(CreatedAtAction(nameof(Get), new { basketId = basketLine.BasketId, eventId = basketLine.EventId }, _mapper.Map <BasketLineDto>(basketLine))); } var existingBasketLine = await _basketRepository.GetBasketLine(basketId, basketLineForCreationDto.EventId); existingBasketLine.TicketAmount += basketLineForCreationDto.TicketAmount; await _basketRepository.UpdateBasketLine(basketId, existingBasketLine); return(CreatedAtAction(nameof(Get), new { basketId = existingBasketLine.BasketId, eventId = existingBasketLine.EventId }, _mapper.Map <BasketLineDto>(existingBasketLine))); }