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); }
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); }