public async Task <Unit> Handle(UpdateBetCommand request, CancellationToken cancellationToken)
        {
            var bet = await _betRepository.GetByIdAsync(new BetId(request.BetId))
                      ?? throw new BetUnknownException($"This bet with Id {request.BetId} does not exist");

            var dto = new BetDto(bet.State);
            await _betQueryRepository.SaveAsync(dto);

            return(Unit.Value);
        }
예제 #2
0
        public async Task Handle(InsertBetQuerySideNotification request, CancellationToken cancellationToken)
        {
            ValidateRequest(request);

            var bet = await _betRepository.GetByIdAsync(new BetId(request.BetId)).ConfigureAwait(false)
                      ?? throw new BetUnknownException($"BetId: {request.BetId} is unknwon");

            var betDto = new BetDto(bet.State);
            await _queryBetRepository.SaveAsync(betDto);
        }
예제 #3
0
        public async Task <ActionResult <Client.Models.Bet> > GetBet(Guid id)
        {
            var betItem = await repo.GetByIdAsync(id);

            if (betItem == null)
            {
                return(NotFound());
            }
            return(mapper.Map <Client.Models.Bet>(betItem));
        }
        public async Task <Unit> Handle(UpdateWalletMembersCommand request, CancellationToken cancellationToken)
        {
            var bet = await _betRepository.GetByIdAsync(new BetId(request.BetId))
                      ?? throw new BetUnknownException($"This bet with id {request.BetId} is unknown");

            bet.UpdateWallets();
            var members = bet.GetAllMembers();
            await _memberRepository.SaveAsync(members).ConfigureAwait(false);

            return(Unit.Value);
        }
        public async Task Handle(InsertBetQuerySideNotification notification, CancellationToken cancellationToken)
        {
            var bet = await _betRepository.GetByIdAsync(new BetId(notification.BetId))
                      ?? throw new BetUnknownException($"Bet with Id {notification.BetId} does not exists");

            var member = await _memberRepository.GetByIdAsync(new MemberId(notification.MemberId));

            var feeds = await _feedRepository.GetByIdsAsync(member.Subscriptions.Select(x => x.MemberId.Value));

            foreach (var feed in feeds)
            {
                feed.Bets.Add(new Models.BetDto(bet.State));
            }
            await _feedRepository.SaveAsync(feeds);
        }
예제 #6
0
        public async Task <Unit> Handle(CloseBetCommand request, CancellationToken cancellationToken)
        {
            if (!_authenticationGateway.IsAuthenticated())
            {
                throw new NotAuthenticatedException();
            }
            var bet = await GetBet(request).ConfigureAwait(false);

            bet.Close(new MemberId(_authenticationGateway.UserId), request.Success, _dateTimeProvider);
            await _betRepository.SaveAsync(bet);

            return(Unit.Value);

            async Task <Bet> GetBet(CloseBetCommand request)
            {
                return(await _betRepository.GetByIdAsync(new BetId(request.BetId)).ConfigureAwait(false)
                       ?? throw new BetUnknownException($"This bet with id {request.BetId} is unknown"));
            }
        }
        public async Task <Unit> Handle(AnswerBetCommand request, CancellationToken cancellationToken)
        {
            ValidateRequest(request);

            if (!_authentificationGateway.IsAuthenticated())
            {
                throw new NotAuthenticatedException();
            }

            var member = await _memberRepository.GetByIdAsync(new MemberId(_authentificationGateway.UserId)).ConfigureAwait(false) ??
                         throw new MemberUnknownException("Member unknown");

            var bet = await _betRepository.GetByIdAsync(new BetId(request.BetId)).ConfigureAwait(false) ??
                      throw new BetUnknownException($"Bet {request.BetId} is unknown");

            member.Answer(bet, request.IsAccepted, _dateTimeProvider.Now);
            await _betRepository.SaveAsync(bet).ConfigureAwait(false);

            return(Unit.Value);
        }