public static BasketLine ToDomain(this BasketLineForCreationModel source) { if (source == null) { return(null); } return(new BasketLine { Price = source.Price, EventId = source.EventId, TicketAmount = source.TicketAmount }); }
public async Task <ActionResult <BasketLineModel> > Post(Guid basketId, [FromBody] BasketLineForCreationModel basketLineForCreation) { var basket = await _mediator.Send(new GetBasketByIdQuery(basketId)); if (basket == null) { return(NotFound()); } if (!await _mediator.Send(new EventExistsQuery(basketLineForCreation.EventId))) { var eventFromCatalog = await _catalogService.GetEvent(basketLineForCreation.EventId); await _mediator.Send(new AddEventCommand(eventFromCatalog.ToDomain())); } var basketLineEntity = basketLineForCreation.ToDomain(); var processedBasketLine = await _mediator.Send(new AddOrUpdateBasketLineCommand(basketId, basketLineEntity)); var basketLineToReturn = processedBasketLine.ToModel(); var basketChangeEvent = new BasketChangeEvent { BasketChangeType = BasketChangeTypeEnum.Add, EventId = basketLineForCreation.EventId, InsertedAt = DateTime.Now, UserId = basket.UserId }; await _mediator.Send(new AddBasketEventCommand(basketChangeEvent)); return(CreatedAtRoute( "GetBasketLine", new { basketId = basketLineEntity.BasketId, basketLineId = basketLineEntity.BasketLineId }, basketLineToReturn)); }