public bool ValidateRegex(PuzzleAnswerDTO puzzleAnswers) { // Get the puzzles from the repository var puzzleDictionary = regexPuzzleRepository.GetRegexPuzzle().ToDictionary(k => k.Id, v => v); foreach (var p in puzzleAnswers.Answer) { if (!puzzleDictionary.ContainsKey(p.Id)) { throw new Exception("Unable to find the puzzle with the id " + p.Id); } var puzzle = puzzleDictionary[p.Id]; MatchCollection mc = Regex.Matches(puzzle.Problem, p.Regex, RegexOptions.Multiline); var result = ""; foreach (Match m in mc) { result += m.Value; result += Environment.NewLine; } // Replace \n with \r\n since the puzzle file is using \n for newline where as matched // regex uses \r\n var goalwithNewline = puzzle.Goal.Replace("\n", Environment.NewLine); if (result != goalwithNewline) { return(false); } } // Submit result regexPuzzleRepository.SubmitPuzzleResult(new PuzzleResult { Name = puzzleAnswers.Name, DateSubmitted = DateTime.Now, Email = puzzleAnswers.Email, RegexAnswers = string.Join(Environment.NewLine, puzzleAnswers.Answer.Select(a => a.Regex).ToList()) }); return(true); }
public bool ValidateRegex([FromBody] PuzzleAnswerDTO answers) { return(regexPuzzleService.ValidateRegex(answers)); }