public async Task SetDeckAsync(string id, [FromBody] DeckDetails details, [FromServices] StateClient state) { var deck = DeckActorProxy.CreateProxy(id); await deck.SetDetailsAsync(details); var decks = await state.GetStateAsync <HashSet <string> >("decks"); decks ??= new HashSet <string>(); decks.Add(id); await state.SaveStateAsync("decks", decks); }
public async Task <string> CreateRandomDeckAsync([FromBody] CreateRandomDeckOptions options, [FromServices] StateClient state) { if (options.UserId == null) { throw new ArgumentException("UserId should be non-null.", nameof(options)); } string id = Guid.NewGuid().ToString(); int count = options.Count ?? 10; var details = new DeckDetails { Cards = new DeckCard[count], Name = options.Name, UserId = options.UserId }; // TODO: Choose an appropriate seed. var random = new Random(); using var cardManager = CardManagerProxy.CreateProxy(); for (int i = 0; i < count; i++) { // TODO: Card manager should manage generation of IDs. int cardValue = random.Next(1, 100 + 1); string cardId = await cardManager.CreateCardAsync( new CardDetails { UserId = options.UserId, Value = cardValue }); details.Cards[i] = new DeckCard { CardId = cardId }; } await this.SetDeckAsync(id, details, state); var user = UserActorProxy.CreateProxy(details.UserId); await user.AddDeckAsync(id); return(id); }
public Task SetDetailsAsync(DeckDetails details) { return(this.StateManager.SetStateAsync(DetailsStateName, details)); }