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)); }
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)); }