Exemple #1
0
        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)));
        }