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))));
 }
Example #2
0
 public Coffee(
     Id <Coffee> id,
     Name <Coffee> name,
     Description description,
     UsdPrice price,
     Ounces netWeightPerBag) : base(id)
 {
     Name            = name;
     Description     = description;
     Price           = price;
     NetWeightPerBag = netWeightPerBag;
 }
Example #3
0
        public async Task <Arr <Flat> > GetLatestUpdate()
        {
            var json = await GetLatestUpdateJson();// GetTestData();

            var root  = JToken.Parse(json);
            var flats = root["apartments"].Map(x => new Flat(
                                                   id: x["id"].Value <int>(),
                                                   url: x["url"].Value <string>(),
                                                   photoUrl: x["photo"].Value <string>(),
                                                   type: x["rent_type"].Value <string>(),
                                                   address: x["location"]["user_address"].Value <string>(),
                                                   location: x["location"].Apply(y => new Location(y["latitude"].Value <double>(), y["longitude"].Value <double>())),
                                                   isOwner: x["contact"]["owner"].Value <bool>(),
                                                   price: UsdPrice.Parse(x["price"]["converted"]["USD"]["amount"].Value <string>()),
                                                   createdAt: x["created_at"].Value <DateTime>(),
                                                   updatedAt: x["last_time_up"].Value <DateTime>()
                                                   )).ToArr();

            return(flats);
        }
Example #4
0
        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,
            }));
        }