Esempio n. 1
0
        public async Task <IActionResult> FormatRequestAndAddMatch([FromQuery] int numOfTeams, [FromQuery] int playersPerTeam)
        {
            var createMatchRequest = new CreateMatchRequest();

            createMatchRequest.MatchType = Enum.Parse <MatchType>(Request.Form["MatchType"]);

            var formKeys = Request.Form.Keys;

            Console.WriteLine($"Key count: {formKeys.Count()}");
            var teams = new List <MatchTeam>();

            for (var i = 0; i < 2; i++)
            {
                var team = new MatchTeam();
                team.Name      = Request.Form[$"Team[{i}].Name"];
                team.TeamScore = int.Parse(Request.Form[$"Team[{i}].TeamScore"]);

                var guardianCount = formKeys.Count(g => g.Contains($"Team[{i}]") && g.Contains("GuardianName"));
                Console.WriteLine($"Guardians on team: {guardianCount}");
                var guardianResults = new List <GuardianMatchResult>();
                for (var j = 0; j < guardianCount; j++)
                {
                    var results = new GuardianMatchResult
                    {
                        Kills        = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Kills"]),
                        Assists      = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Assists"]),
                        Deaths       = int.Parse(Request.Form[$"Team[{i}].MatchResults[{j}].Deaths"]),
                        GuardianName = Request.Form[$"Team[{i}].MatchResults[{j}].GuardianName"]
                    };

                    Console.WriteLine($"Guardian results processed successfully: {results.GuardianName}");
                    if (results.Deaths == 0)
                    {
                        results.Efficiency = results.Kills + results.Assists;
                    }
                    else
                    {
                        results.Efficiency = (double)(results.Kills + results.Assists) / results.Deaths;
                    }
                    Console.WriteLine($"Calculated Eff = {results.Efficiency:F4}");
                    guardianResults.Add(results);
                }

                team.GuardianMatchResults = guardianResults;
                teams.Add(team);
            }

            createMatchRequest.Teams = teams;

            await _matchService.CreateMatch(createMatchRequest.ToMatch(), createMatchRequest.Teams);

            return(RedirectToAction("Index"));
        }
Esempio n. 2
0
        public async Task <string> Post(CreateMatchRequest request)
        {
            var match = request.ToMatch();

            return(await _matchService.CreateMatch(match, request.Teams));
        }