public MatchMappingProfile()
        {
            CreateMap <Match, MatchInfoReadDto>()
            .ConstructUsing(m => new MatchInfoReadDto(
                                m.Id,
                                m.Date,
                                m.HomeTeam.Title,
                                m.AwayTeam.Title,
                                FootballScoreProcessor.CreateScoreExpr(m.HomeGoals, m.AwayGoals)));

            CreateMap <Team, string>().ConvertUsing(t => t.Title);
        }
        public async Task <bool> Handle(AddExpertTourPredictions request,
                                        CancellationToken cancellationToken = default(CancellationToken))
        {
            var expertId = request.ExpertId;
            var tourId   = request.TourId;
            var incomingPredictionsInfo = request.Predictions.ToList();

            var tour = await _context
                       .Tours
                       .FetchWitMatchesAndPredictions(FetchMode.ForModify)
                       .WithIdAsync(tourId, cancellationToken);

            //if (tour.IsClosed) throw new InvalidOperationException("The tour is closed");

            var matches = tour.Matches;

            var expertPredictions = matches
                                    .SelectMany(m => m.Predictions)
                                    .Where(p => p.ExpertId == expertId)
                                    .ToList();

            foreach (var incomingPredictionInfo in incomingPredictionsInfo)
            {
                var expertPrediction = expertPredictions.SingleOrDefault(p => p.MatchId == incomingPredictionInfo.MatchId);

                if (expertPrediction == null)
                {
                    var score = FootballScoreProcessor.CreateScoreExpr(incomingPredictionInfo.HomeGoals,
                                                                       incomingPredictionInfo.AwayGoals);
                    var prediction = new Prediction(expertId, incomingPredictionInfo.MatchId, score);
                    _context.Add(prediction);
                }
                else
                {
                    expertPrediction.SetScore(incomingPredictionInfo.HomeGoals, incomingPredictionInfo.AwayGoals);
                }
            }

            return(await _context.SaveChangesAsync(cancellationToken) >= 0);
        }
        public void Should_Map_Match_To_Dto_Correctly()
        {
            var homeTeam = new Team(1, "Spartak");
            var awayTeam = new Team(2, "CSKA");

            var match = new Match(
                100500,
                1,
                homeTeam,
                awayTeam,
                DateTime.MinValue
                );

            match.SetScore(1, 2);


            var matchDto = _mapper.Map <MatchInfoReadDto>(match);

            matchDto.Id.ShouldBe(match.Id);
            matchDto.HomeTeamTitle.ShouldBe(match.HomeTeam.Title);
            matchDto.AwayTeamTitle.ShouldBe(match.AwayTeam.Title);
            FootballScoreProcessor.CreateScoreExpr(match.HomeGoals, match.AwayGoals).ShouldBe(matchDto.Score);
        }
Exemplo n.º 4
0
 public void SetScore(int homeGoals, int awayGoals)
 {
     Value = FootballScoreProcessor.CreateScoreExpr(homeGoals, awayGoals);
 }
 public void Should_Throw_On_Invalid_Goals_Number()
 {
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.CreateScoreExpr(123, 9999); });
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.CreateScoreExpr(-3, 1); });
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.CreateScoreExpr(0, 200); });
 }
 public void Should_Throw_On_Invalid_Input_Expression()
 {
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.ExtractHomeGoals("123:0"); });
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.ExtractAwayGoals("completely invalid!"); });
     Should.Throw <ArgumentException>(() => { var never = FootballScoreProcessor.ExtractGoals("123:0"); });
 }
 public void Should_Create_Score_Expression_Correctly()
 {
     FootballScoreProcessor.CreateScoreExpr(1, 2).ShouldBe("1:2");
     FootballScoreProcessor.CreateScoreExpr(11, 22).ShouldBe("11:22");
 }
 public void Should_Extract_AwayGoals_Correctly()
 {
     FootballScoreProcessor.ExtractAwayGoals("3:4").ShouldBe(4);
     FootballScoreProcessor.ExtractAwayGoals("1:10").ShouldBe(10);
 }
 public void Should_Extract_HomeGoals_Correctly()
 {
     FootballScoreProcessor.ExtractHomeGoals("12:0").ShouldBe(12);
     FootballScoreProcessor.ExtractHomeGoals("1:1").ShouldBe(1);
 }
 public void Should_Recognize_Invalid_Football_Score(string input)
 {
     FootballScoreProcessor.IsValidScoreExpr(input).ShouldBeFalse();
 }