Beispiel #1
0
        //--
        //-- Applicative logic : should be factorized in Applicatio Layer (CatMash.Core.Application)
        //--
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public async Task <CatEntity> PatchLoserCat(CatEntity winner)
        {
            var parameters = new CountViewsParameters();
            int totalViews = await repository.GetOneAsync <int, CountViewsParameters>(parameters);

            winner.ApplyLoose(totalViews);

            var updateParameter = new UpdateOneCatParameters(winner);

            winner = await repository.GetCatAsync <UpdateOneCatParameters>(updateParameter);

            return(winner);
        }
Beispiel #2
0
        public async Task <Cat> PatchWinnerCat(Cat winner)
        {
            var parameters = new CountViewsParameters();
            int totalViews = await _repository.GetOneAsync <int, CountViewsParameters>(parameters);

            if (totalViews == 0)
            {
                totalViews = 1;
            }
            winner.ViewsNumber += 1;
            winner.Wins        += 1;

            winner.ProbabilityWeight = await CalculateWeight(winner.ViewsNumber, totalViews);

            winner.Rating = winner.Wins * 100 / winner.ViewsNumber;

            var updateParameter = new UpdateOneCatParameters(winner.Id, winner.ViewsNumber, winner.ProbabilityWeight, winner.Rating, winner.Wins);

            winner = await _repository.GetCatAsync <UpdateOneCatParameters>(updateParameter);

            return(winner);
        }