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