public async Task <ActionResult <BasketLine> > Post(Guid basketId, [FromBody] BasketLineForCreationDto 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);
                eventRepository.Save();
            }

            var basketLineEntity    = mapper.Map <Wall.Basket.Entity.BasketLine>(basketLineForCreation);
            var processedBasketLine = await basketLinesRepository.AddOrUpdateBasketLine(basketId, basketLineEntity);

            basketLinesRepository.Save();

            var basketLineToReturn = mapper.Map <BasketLine>(processedBasketLine);
            BasketChangeEvent basketChangeEvent = new BasketChangeEvent
            {
                BasketChangeType = Wall.Basket.Entity.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));
        }
Ejemplo n.º 2
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)));
        }
        public async Task <ActionResult <BasketLineDto> > CreateBasketLine(Guid basketId, [FromBody] BasketLineForCreationDto basketLineForCreation)
        {
            var basketLineDto = await _mediator.Send(new CreateBasketLine.Request
            {
                BasketId = basketId,
                BasketLineForCreation = basketLineForCreation
            });

            return(CreatedAtRoute(
                       "GetBasketLine",
                       new { basketId = basketLineDto.BasketId, basketLineId = basketLineDto.BasketLineId },
                       basketLineDto));
        }