public async Task <IActionResult> Mutant([FromBody] SequenceDTO sequence) { if (sequence.DNA.Any(x => x.Length != sequence.DNA[0].Length)) { return(BadRequest("Invalid dna chain. All elements must contain the same length.")); } var isMutant = _mutantService.AnalyzeSequence(sequence.DNA); var dna = string.Join(",", sequence.DNA); if (!await _mutantService.Exist(dna)) { _mutantService.AddRecord(new DnaRecord() { DNA = dna, IsMutant = isMutant }); await _context.SaveChangesAsync(); } if (isMutant) { return(Ok()); } else { return(StatusCode(403)); } }
private ISequence CreateSequence() { SequenceDTO sequenceDTO = _sequenceView.GetSequence(); Log.Information("Getted sequence: {sequenceType}, {minRange}, {maxRange}", sequenceDTO.SequenceType, sequenceDTO.MinRange, sequenceDTO.MaxRange); ValidateSequenceDTO(sequenceDTO); ISequence sequence; switch (sequenceDTO.SequenceType) { case SequenceType.Fibonacci: { sequence = new FibonacciSequence(sequenceDTO); break; } case SequenceType.SquareLess: { sequence = new SquareLessSequence(sequenceDTO); break; } default: { throw new ArgumentOutOfRangeException(sequenceDTO.SequenceType.ToString(), "No such mode of sequence"); } } return(sequence); }
private void ValidateSequenceDTO(SequenceDTO sequence) { if (sequence.MinRange < 0) { throw new ArgumentOutOfRangeException("minRange", "Must be positive"); } if (sequence.MaxRange < 0) { throw new ArgumentOutOfRangeException("maxRange", "Must be positive"); } if (sequence.MinRange > sequence.MaxRange) { throw new ArgumentOutOfRangeException("range", "The Minimum range must be greater than or equal to the maximum"); } }