public async Task <Invitation> Add(Invitation invitation)
        {
            var dbInvitation = new Entities.Invitation
            {
                GuestId   = invitation.Guest.Id,
                BandId    = invitation.Band.Id,
                HandlerId = invitation.Handler.Id
            };

            await dbContext
            .Set <Entities.Invitation>()
            .AddAsync(dbInvitation);

            await dbContext.SaveChangesAsync();

            return(Invitation.Create(dbInvitation.Id, invitation.Guest, invitation.Band, invitation.Handler));
        }
示例#2
0
        public async Task <Band> Add(Band band)
        {
            var dbBandit = await dbContext
                           .Set <Entities.Bandit>()
                           .FindAsync(band.Boss.Bandit.Id);

            var dbBand = new Entities.Band
            {
                Name = band.Name
            };

            var dbBandMember = new Entities.BandMember
            {
                Band    = dbBand,
                Bandit  = dbBandit,
                Scoring = new Entities.Score()
            };

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

                await dbContext.SaveChangesAsync();

                dbBand.Boss = dbBandMember;

                await dbContext
                .Set <Entities.BandMember>()
                .AddAsync(dbBandMember);

                await dbContext.SaveChangesAsync();

                ts.Complete();
            }

            var boss = band.Boss.Bandit;

            return(Band.Create(dbBand.Id, band.Name, boss, new [] { boss }));
        }
        public async Task <Notification> Add(Notification notification)
        {
            var bandit = await dbContext
                         .Set <Entities.Bandit>()
                         .FindAsync(notification.Bandit.Id);

            var dbNotif = new Entities.Notification
            {
                Bandit = bandit,
                Title  = notification.Title,
                Body   = notification.Body
            };

            await dbContext
            .Set <Entities.Notification>()
            .AddAsync(dbNotif);

            await dbContext.SaveChangesAsync();

            return(notification);
        }
        public async Task <Bandit> Add(Bandit bandit)
        {
            var dbBandit = new Entities.Bandit
            {
                Name    = bandit.Name,
                Email   = bandit.Email.Address,
                Scoring = new Entities.Score()
            };

            await dbContext
            .Set <Entities.Bandit>()
            .AddAsync(dbBandit);

            await dbContext.SaveChangesAsync();

            return(Bandit.Create(dbBandit.Id, dbBandit.Name, dbBandit.Email));
        }
        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)
                       ));
        }