public async Task <IActionResult> InsertAsync() { var accountId = "1"; var account = _factory.GetClaptrap <IAccount>(accountId); var accountBalanceMinion = _factory.GetClaptrap <IAccountBalanceMinion>(accountId); var oldBalance = await account.GetBalanceAsync(); var oldMinionBalance = await accountBalanceMinion.GetBalance(); var newBalance = await account.TransferInAsync(1); await Task.Delay(TimeSpan.FromSeconds(1)); var newMinionBalance = await accountBalanceMinion.GetBalance(); var re = new Dictionary <string, object> { { nameof(oldBalance), oldBalance }, { nameof(oldMinionBalance), oldMinionBalance }, { nameof(newBalance), newBalance }, { nameof(newMinionBalance), newMinionBalance }, }; return(Ok(re)); }
public async Task <BlazorJsonResponse> TakeSeatAsync([FromBody] TakeSeatInput input) { var seatId = input.SeatId; if (string.IsNullOrEmpty(input.SeatId)) { var random = new Random(); var seatNumber = random.Next(0, 10000); seatId = $"{input.TrainId}{seatNumber:0000}"; } var cartActor = _actorProxyFactory.GetClaptrap <ISeatActor>(seatId); var requestId = Guid.NewGuid().ToString("N"); try { await cartActor.TakeSeatAsync(input.FromStationId, input.ToStationId, requestId); } catch (Exception e) { return(new BlazorJsonResponse { Status = "0", Message = e.Message }); } var fromName = await _stationRepository.GetNameAsync(input.FromStationId); var toName = await _stationRepository.GetNameAsync(input.ToStationId); return(new BlazorJsonResponse { Status = "1", Message = $"take a seat success {seatId} [{fromName} -> {toName}] with requestId : {requestId}" }); }
public async Task <IActionResult> GetStatus(int itemId = 1) { var auctionItemActor = _actorProxyFactory.GetClaptrap <IAuctionItemActor>(itemId.ToString()); var status = await auctionItemActor.GetStatusAsync(); var result = new { status }; return(Ok(result)); }
public async Task <IEnumerable <LeftCountItem> > GetLeftSeatAsync(int trainId) { var trainGran = _actorProxyFactory.GetClaptrap <ITrainGran>(trainId.ToString()); var allCount = await trainGran.GetAllCountAsync(); var stationIds = allCount.Keys .Concat(allCount.SelectMany(x => x.Value.Keys)) .Distinct(); var nameDic = await _stationRepository.GetNamesAsync(stationIds); var re = allCount.SelectMany(x => { var(key, value) = x; return(value.Select(inner => new LeftCountItem { LeftCount = inner.Value, FromStationId = key, FromStationName = nameDic[key], ToStationId = inner.Key, ToStationName = nameDic[inner.Key] })); }) .ToList(); return(re); }
public override async ValueTask HandleEvent(NoneStateData stateData, TakeSeatEvent eventData, IEventContext eventContext) { var claptrapIdentity = eventContext.State.Identity; var seatId = SeatId.FromSeatId(claptrapIdentity.Id); var trainActor = _actorProxyFactory.GetClaptrap <ITrainGran>(seatId.TrainId.ToString()); await trainActor.UpdateCountAsync(eventData.FromStationId, eventData.ToStationId); }