コード例 #1
0
 private Guid AdjustRound(Entities.Round round, GameActionData actionData, Guid walletTxId)
 {
     return(round.Adjust(
                actionData.Amount,
                actionData.Description,
                walletTxId,
                actionData.ExternalTransactionId,
                actionData.ExternalBetId,
                actionData.TransactionReferenceId,
                actionData.BatchId));
 }
コード例 #2
0
 private Guid CancelRound(Entities.Round round, decimal amount, GameActionData actionData, Guid walletTxId)
 {
     return(round.Cancel(
                amount,
                actionData.Description,
                walletTxId,
                actionData.ExternalTransactionId,
                actionData.ExternalBetId,
                actionData.TransactionReferenceId,
                actionData.BatchId));
 }
コード例 #3
0
        public async Task <Round> Add(Round round)
        {
            var dbRound = new Entities.Round
            {
                Name     = round.Name,
                Place    = round.Place,
                DateTime = round.DateTime,
                Members  = new List <Entities.RoundMember>()
            };

            var bandId = round.Sheriff.Member.Band.Id;
            var dbBand = await dbContext
                         .Set <Entities.Band>()
                         .Include(b => b.Members)
                         .ThenInclude(bm => bm.Bandit)
                         .FirstOrDefaultAsync(b => b.Id == bandId);

            var sheriffId = round.Sheriff.Member.Bandit.Id;
            var sheriff   = dbBand.Members
                            .FirstOrDefault(bm => bm.Bandit.Id == sheriffId);

            var sheriffMember = new Entities.RoundMember
            {
                Member  = sheriff,
                Round   = dbRound,
                Scoring = new Entities.Score()
            };

            foreach (var member in round.Members)
            {
                var memberId = member.Member.Bandit.Id;
                var dbMember = dbBand.Members
                               .FirstOrDefault(bm => bm.Bandit.Id == memberId);

                var roundMember = new Entities.RoundMember
                {
                    Member  = dbMember,
                    Round   = dbRound,
                    Scoring = new Entities.Score()
                };

                dbRound.Members.Add(roundMember);
            }

            using (var ts = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                await dbContext
                .Set <Entities.Round>()
                .AddAsync(dbRound);

                dbRound.Members.ForEach(async member => {
                    await dbContext
                    .Set <Entities.RoundMember>()
                    .AddAsync(member);
                });

                await dbContext.SaveChangesAsync();

                dbRound.Sheriff = sheriffMember;
                dbBand.Rounds.Add(dbRound);

                await dbContext
                .Set <Entities.RoundMember>()
                .AddAsync(sheriffMember);

                await dbContext.SaveChangesAsync();

                ts.Complete();
            }

            return(Round.Create(
                       dbRound.Id,
                       round.Name,
                       round.Place,
                       round.DateTime,
                       round.Sheriff.Member,
                       round.Members.Select(m => m.Member)
                       ));
        }