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 Invoice(
     Id <Invoice> id,
     UsdInvoiceAmount amount,
     bool isPaid,
     PaymentMethod paymentMethod) : base(id)
 {
     Amount        = amount;
     IsPaid        = isPaid;
     PaymentMethod = paymentMethod;
 }
        public void Customize(IFixture fixture)
        {
            var faker = new Faker();

            fixture.Register(() => UsdInvoiceAmount.Create(faker.Random.Number(1, 1000)));
        }