示例#1
0
        public async Task AddOffer(Offer offer, CancellationToken cancellationToken)
        {
            var seller = await StateManager.GetOrAddStateAsync(StateName, new Seller(), cancellationToken);

            var existingOffer = seller.Offers.FirstOrDefault(o => o.ProductId == offer.ProductId);

            if (existingOffer != null)
            {
                seller.Offers.Remove(existingOffer);
            }

            seller.Offers.Add(offer);
            var sellerOffer = new SellerOffer
            {
                ProductId    = offer.ProductId,
                Price        = offer.Price,
                SellerId     = seller.Id,
                SellerRating = seller.Rating,
                SellerName   = seller.Name
            };

            var productActor = ActorProxy.Create <IProductActor>(new ActorId(offer.ProductId));
            await productActor.UpdateSellerOffer(sellerOffer, cancellationToken);

            await StateManager.SetStateAsync(StateName, seller, cancellationToken);
        }
示例#2
0
        public async Task UpdateSellerOffer(SellerOffer offer, CancellationToken cancellationToken)
        {
            var product = await StateManager.GetOrAddStateAsync(StateName, new Product(), cancellationToken);

            var existingMatchingOffer = product.Offers.FirstOrDefault(o => o.SellerId == offer.SellerId);

            if (existingMatchingOffer != null)
            {
                product.Offers.Remove(existingMatchingOffer);
            }

            product.Offers.Add(offer);
            product.Offers = product.Offers.OrderByDescending(o => o.SellerRating).ToList();

            await StateManager.SetStateAsync(StateName, product, cancellationToken);
        }