예제 #1
0
        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));
        }
예제 #2
0
        /// <inheritdoc />
        public async Task <Unit> Handle(UpdateBasketLineCommand request, CancellationToken cancellationToken)
        {
            _basketLinesRepository.UpdateBasketLine(request.BasketLine);
            await _basketLinesRepository.SaveChanges();

            return(Unit.Value);
        }
예제 #3
0
        /// <inheritdoc />
        public async Task <BasketLine> Handle(AddOrUpdateBasketLineCommand request, CancellationToken cancellationToken)
        {
            var basketLine = await _basketLinesRepository.AddOrUpdateBasketLine(request.BasketId, request.BasketLine);

            await _basketLinesRepository.SaveChanges();

            return(basketLine);
        }
예제 #4
0
        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));
        }