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); }
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); }
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))); }
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(); }
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)); }
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(); }