示例#1
0
        public IActionResult PostPlayer([FromBody] PlayerDetailsDto playerDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                var player = new Player
                {
                    Id          = Guid.NewGuid().ToString(),
                    FirstName   = playerDto.FirstName,
                    LastName    = playerDto.LastName,
                    Nickname    = playerDto.Nickname,
                    DateOfBirth = playerDto.DateOfBirth,
                    CountryId   = playerDto.CountryId,
                    GameId      = playerDto.GameId,
                    TeamId      = playerDto.TeamId
                };

                var create = _repo.Create <Player>(player);
                return(Ok(create.Success));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        public async void SaveAll()
        {
            var dataToSave = PlayerDetailsCache.Select(playerDetails =>
            {
                var details = new PlayerDetailsDto
                {
                    Handicap101     = playerDetails.Handicap101,
                    Handicap201     = playerDetails.Handicap201,
                    Handicap301     = playerDetails.Handicap301,
                    Handicap401     = playerDetails.Handicap401,
                    Handicap501     = playerDetails.Handicap501,
                    HandicapCricket = playerDetails.HandicapCricket,
                    Name            = playerDetails.Name,
                    NickName        = playerDetails.NickName,
                    Id = playerDetails.Id
                };
                var definition = new ImageDefinitionDto
                {
                    Name        = playerDetails.PlayerImageDefinition.Name,
                    SourceBytes = playerDetails.PlayerImageDefinition.SourceBytes
                };
                details.PlayerImageDefinition = definition;
                details.SelectedFlight        = playerDetails.SelectedFlight;
                return(details);
            }).ToList();

            await _playerSerialiser.Serialize(dataToSave);
        }
示例#3
0
        public IActionResult PutPlayer([FromRoute] string id, [FromBody] PlayerDetailsDto playerDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != playerDto.Id)
            {
                return(BadRequest());
            }

            try
            {
                var getPlayer = _repo.GetFirst <Player>(x => x.Id.Equals(id), null,
                                                        String.Join(",",
                                                                    new object[]
                {
                    nameof(Player.Game), nameof(Player.Country), nameof(Player.Team)
                }));

                if (!getPlayer.Success)
                {
                    return(NotFound());
                }

                var player = getPlayer.Data;

                player.FirstName = playerDto.FirstName ?? player.FirstName;
                player.LastName  = playerDto.LastName ?? player.LastName;
                player.Nickname  = playerDto.Nickname ?? player.Nickname;
                player.TeamId    = playerDto.TeamId ?? player.TeamId;

                var update = _repo.Update <Player>(player);
                return(Ok(update.Data));
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PlayerExists(id))
                {
                    return(NotFound());
                }
                return(BadRequest());
            }
        }
示例#4
0
        public async Task <PlayerDetailsDto> GetPlayerDetailsAsync(string accountId)
        {
            var recentMatchesUrl = string.Format(DotaApiEndpoints.PlayerRecentMatchesUrlTemplate, accountId);
            var heroesUrl        = string.Format(DotaApiEndpoints.PlayerHeroesUrlTemplate, accountId);
            var winsLossesUrl    = string.Format(DotaApiEndpoints.PlayerWinLossUrlTemplate, accountId);

            var detailsTask       = this.GetPlayerProfileAsync(accountId);
            var winsLossesTask    = this.httpClient.GetAsync(winsLossesUrl);
            var recentMatchesTask = this.httpClient.GetAsync(recentMatchesUrl);
            var heroesTask        = this.httpClient.GetAsync(heroesUrl);

            await Task.WhenAll(detailsTask, winsLossesTask, recentMatchesTask, heroesTask);

            var detailsDto        = detailsTask.Result;
            var winLossData       = winsLossesTask.Result;
            var recentMatchesData = recentMatchesTask.Result;
            var heroesData        = heroesTask.Result;

            var winLossJsonModel       = this.jsonSerializer.Deserialize <PlayerWinsLossesJsonModel>(winLossData);
            var recentMatchesJsonModel = this.jsonSerializer.Deserialize <ICollection <PlayerRecentMatchesJsonModel> >(recentMatchesData);
            var playerHeroesJsonModel  = this.jsonSerializer.Deserialize <ICollection <PlayerHeroesJsonModel> >(heroesData)?.Take(NumberOfBestHeroesToShow).ToList();

            var winLossDto       = this.mapper.Map <PlayerWinsLossesDto>(winLossJsonModel);
            var recentMatchesDto = this.mapper.Map <ICollection <PlayerRecentMatchesDto> >(recentMatchesJsonModel);
            var heroesDto        = this.mapper.Map <ICollection <PlayerHeroesDto> >(playerHeroesJsonModel);

            foreach (var hero in heroesDto)
            {
                hero.Hero = await this.heroesProvider.GetHeroAsync(hero.HeroId);
            }

            foreach (var match in recentMatchesDto)
            {
                match.Hero = await this.heroesProvider.GetHeroAsync(match.HeroId);
            }

            var playerDetailsDto = new PlayerDetailsDto {
                Details = detailsDto, Heroes = heroesDto, RecentMatchHistory = recentMatchesDto, WinsAndLosses = winLossDto
            };

            return(playerDetailsDto);
        }