public async Task <ApiCompleteResponse> Execute(int idCompetition) { if (CheckIfCompetitionExists(idCompetition)) { return(new ApiCompleteResponse { Status = new Status { StatusCode = 409, Message = "Competition already imported" } }); } else { try { Status status = new Status { StatusCode = 201, Message = "Successfully imported" }; var client = _clientFactory.CreateClient(); ApiResponseCompetition competition = new ApiResponseCompetition(); ApiResponseTeams teams = new ApiResponseTeams(); HttpRequestMessage competitionRequest = GenerateHttpGetRequest($"https://api.football-data.org/v2/competitions/{idCompetition}"); HttpResponseMessage competitionResponse = await client.SendAsync(competitionRequest); if (competitionResponse.IsSuccessStatusCode) { competition = JsonConvert.DeserializeObject <ApiResponseCompetition>(await competitionResponse.Content.ReadAsStringAsync()); HttpRequestMessage teamsRequest = GenerateHttpGetRequest($"https://api.football-data.org/v2/competitions/{idCompetition}/teams"); HttpResponseMessage teamsResponse = await client.SendAsync(teamsRequest); if (teamsResponse.IsSuccessStatusCode) { teams = JsonConvert.DeserializeObject <ApiResponseTeams>(await teamsResponse.Content.ReadAsStringAsync()); int counter = 0; foreach (TeamAux team in teams.teams) { //CURRENTLY COMPLETING ONLY THE FIRST 2 TEAMS, IN ORDER TO AVOID A "MULTIPLE REQUESTS MADE" ON FOOTBALL-API if (counter == 2) { break; } HttpRequestMessage playersRequest = GenerateHttpGetRequest($"http://api.football-data.org/v2/teams/{team.Id}"); HttpResponseMessage playersResponse = await client.SendAsync(playersRequest); if (playersResponse.IsSuccessStatusCode) { ApiResponsePlayers players = JsonConvert.DeserializeObject <ApiResponsePlayers>(await playersResponse.Content.ReadAsStringAsync()); team.Players = players.squad; counter++; } else { status.StatusCode = (int)playersResponse.StatusCode; status.Message = playersResponse.StatusCode.ToString(); break; } } } else { status.StatusCode = (int)teamsResponse.StatusCode; status.Message = teamsResponse.StatusCode.ToString(); } } else { status.StatusCode = (int)competitionResponse.StatusCode; status.Message = competitionResponse.StatusCode.ToString(); } ApiCompleteResponse response = new ApiCompleteResponse { Status = status, Data = new CompetitionData { Competition = competition, Teams = teams.teams } }; return(response); } catch (Exception e) { throw new Exception("Server error"); } } }
public virtual void Insert(ApiResponseCompetition competition) { Competitions competitionDB = _mapper.Map <ApiResponseCompetition, Competitions>(competition); _context.Competitions.Add(competitionDB); }