Пример #1
0
        public async Task <IEnumerable <Ticket> > HandleAsync(TicketQuery query)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            var tickets = context
                          .Tickets
                          .Where(t => query.Id == Guid.Empty || t.Id == query.Id)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);

            if (query.BoughtBetween.HasValue)
            {
                tickets = tickets
                          .Where(t => t.BoughtAt <= query.BoughtBetween.Value.From &&
                                 t.BoughtAt >= query.BoughtBetween.Value.To)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);
            }

            if (query.PaidBetween.HasValue)
            {
                tickets = tickets
                          .Where(t => t.PaymentReceivedAt >= query.PaidBetween.Value.From &&
                                 t.PaymentReceivedAt <= query.PaidBetween.Value.To)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);
            }

            if (query.CompetitionId != Guid.Empty)
            {
                tickets = tickets.Where(t => t.CompetitionId == query.CompetitionId)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);
            }

            if (query.GamblerId != Guid.Empty)
            {
                tickets = tickets.Where(t => t.GamblerId == query.GamblerId)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);
            }

            if (query.CompetitorId != Guid.Empty)
            {
                tickets = tickets.Where(t => t.CompetitorId == query.CompetitorId)
                          .Include(t => t.Competition)
                          .Include(t => t.Gambler)
                          .Include(t => t.Competitor);
            }

            return(tickets);
        }
Пример #2
0
        public async Task <IEnumerable <Gambler> > HandleAsync(GamblerQuery query)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            return(context.Gamblers.Where(g => (query.Id == Guid.Empty || g.Id == query.Id) &&
                                          (query.Name == null || query.Name == "" || g.Name.ToLowerInvariant().Contains(query.Name.ToLowerInvariant()))));
        }
        private Guid AssignCompetitor(BuyTicketCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);
            var competitors = context.Competitors.Where(c => c.CompetitionId == command.CompetitionId);

            return(competitors.Skip(new Random().Next(0, competitors.Count())).First().Id);
        }
Пример #4
0
        public void BeforeEachTest()
        {
            this.context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            this.handler = new GamblerQueryHandler();

            this.createGamblerHandler = new CreateGamblerHandler();
        }
        public void BeforeEachTest()
        {
            this.context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            this.handler = new MessageQueryHandler();

            this.sendMessageHandler = new SendMessageHandler();
        }
        public void BeforeEachTest()
        {
            this.context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            this.handler = new TicketQueryHandler();

            this.buyTicketHandler = new BuyTicketHandler();
        }
        public async Task HandleAsync(CreateGamblerCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            context.Gamblers.Add(new Gambler
            {
                Name = command.Name,
            });
            context.SaveChanges();
        }
        public async Task <IEnumerable <Message> > HandleAsync(MessageQuery query)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            return(context.Messages
                   .Include(m => m.FromGambler)
                   .Include(m => m.ToGambler)
                   .Where(m => (query.Id == Guid.Empty || query.Id == m.Id) &&
                          (query.FromGamblerId == Guid.Empty || query.FromGamblerId == m.FromGamblerId) &&
                          (query.ToGamblerId == Guid.Empty || query.ToGamblerId == m.ToGamblerId)));
        }
Пример #9
0
        public async Task <IEnumerable <Competitor> > HandleAsync(CompetitorQuery query)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            return(context.Competitors
                   .Where(g => (query.Id == Guid.Empty || g.Id == query.Id) &&
                          (query.CompetitionId == Guid.Empty || g.CompetitionId == query.CompetitionId) &&
                          (query.Name == null || query.Name == "" || g.Name.ToLowerInvariant().Contains(query.Name.ToLowerInvariant())))
                   .Include(c => c.Tickets)
                   .ThenInclude(c => c.Gambler)
                   .Include(c => c.Competition));
        }
        public async Task HandleAsync(CreateCompetitorCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            context.Competitors.Add(new Competitor
            {
                Id            = command.Id == Guid.Empty ? Guid.NewGuid() : command.Id,
                CompetitionId = command.CompetitionId,
                Name          = command.Name,
                Tickets       = command.Tickets.ToList()
            });

            context.SaveChanges();
        }
        public async Task HandleAsync(SendMessageCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            context.Messages.AddAsync(new Message
            {
                Id            = command.Id,
                Subject       = command.Subject,
                Body          = command.Body,
                FromGamblerId = command.FromGamblerId,
                ToGamblerId   = command.ToGamblerId
            });

            context.SaveChangesAsync();
        }
        public async Task HandleAsync(BuyTicketCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            context.Tickets.AddAsync(new Ticket
            {
                Id                = command.Id,
                CompetitionId     = command.CompetitionId,
                CompetitorId      = command.CompetitorId,
                GamblerId         = command.GamblerId,
                IsPaymentReceived = command.IsPaymentReceived,
                BoughtAt          = DateTime.Now,
                PaymentReceivedAt = command.IsPaymentReceived ? DateTime.UtcNow : null as DateTime?
            });
            context.SaveChangesAsync();
        }
Пример #13
0
        public async Task <IEnumerable <Competition> > HandleAsync(CompetitionQuery query)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            return(context.Competitions
                   .Where(c => (query.Id == Guid.Empty || query.Id == c.Id) &&
                          ((query.Name ?? "") == "" ||
                           c.Name.ToLowerInvariant().Contains(query.Name.ToLowerInvariant())) &&
                          (query.CompetitorIds == null || !query.CompetitorIds.Any() || query.CompetitorIds.Any(id => id == c.Id)) &&
                          query.EntryFeeBetween == null ||
                          !query.EntryFeeBetween.HasValue ||
                          query.EntryFeeBetween.Value.From <= c.EntryFee &&
                          query.EntryFeeBetween.Value.To >= c.EntryFee)
                   .Include(c => c.Tickets)
                   .Include(c => c.Competitors));
        }
Пример #14
0
        public async Task HandleAsync(CreateCompetitionCommand command)
        {
            var context = new SweepstakeContext(
                new DbContextOptionsBuilder <SweepstakeContext>()
                .UseSqlServer(Constants.ConnectionString)
                .Options);

            context.Competitions.Add(new Competition
            {
                Id          = command.Id == Guid.Empty ? Guid.NewGuid() : command.Id,
                Name        = command.Name,
                Description = command.Description,
                EntryFee    = command.EntryFee,
                Competitors = command.CompetitorNames.Select(cn => new Competitor
                {
                    Id   = Guid.NewGuid(),
                    Name = cn
                }).ToList()
            });
            context.SaveChanges();
        }