public Domain.CoffeeRoastingEvent Map(CoffeeRoastingEvent dbEvent) { return(new( Id <Domain.CoffeeRoastingEvent> .From(dbEvent.Id), dbEvent.Contacts.Select(c => c.Id).Select(id => Id <Contact> .From(id)), dbEvent.IsActive, LocalDate.FromDateTime(dbEvent.Date), LocalDate.FromDateTime(dbEvent.OrderByDate), Name <Domain.CoffeeRoastingEvent> .Create(dbEvent.Name), dbEvent.CoffeeRoastingEventCoffees.ToDictionary( ec => OrderReferenceLabel.Create(ec.Label), ec => new Coffee( Id <Coffee> .From(ec.Coffee.Id), Name <Coffee> .Create(ec.Coffee.Name), Description.Create(ec.Coffee.Description), UsdPrice.Create(ec.Coffee.Price), Ounces.Create(ec.Coffee.OzWeight))), dbEvent.Orders.Select(order => new Domain.Order( Id <Domain.Order> .From(order.Id), Id <Contact> .From(order.ContactId), OffsetDateTime.FromDateTimeOffset(order.CreatedTimestamp), order.OrderCoffees.ToDictionary( oc => Id <Coffee> .From(oc.CoffeeId), oc => OrderQuantity.Create(oc.Quantity)), new Domain.Invoice( Id <Domain.Invoice> .From(order.Invoice.Id), UsdInvoiceAmount.Create(order.Invoice.Amount), order.Invoice.IsPaid, order.Invoice.PaymentMethod), order.IsConfirmed)))); }
public async Task <ActionResult <Dto.Coffee> > UpdateCoffee(Guid id, [FromBody] Dto.CoffeePostRequest request, CancellationToken cancellationToken) { var cmd = new UpdateCoffeeCommand { CoffeeId = Id <Coffee> .From(id), Name = request.Name != null ? Name <Coffee> .Create(request.Name) : null, Description = request.Description != null?Description.Create(request.Description) : null, Price = request.PriceInUsd.HasValue ? UsdPrice.Create(request.PriceInUsd.Value) : null, WeightPerBag = request.WeightPerBagInOz.HasValue ? Ounces.Create(request.WeightPerBagInOz.Value) : null, }; var coffee = await _mediator.Send(cmd, cancellationToken); return(Accepted($"/api/v1/coffees/{coffee.Id}", new Dto.Coffee { Id = coffee.Id, Name = coffee.Name, Description = coffee.Description, PriceInUsd = coffee.Price, WeightPerBagInOz = coffee.NetWeightPerBag, })); }