public IActionResult Mutant(MutantDnaRequest request) { //VALIDACION DE ADNS var apiValidation = _mutantBsn.GeneralValidation(request); if (apiValidation.Success == false) { return(StatusCode(403, apiValidation.Message)); } else { var dnas = request.Dna.ToList(); //OBTENER DNA var isMutant = _mutantBsn.IsMutant(dnas); var apiResult = _mutantBsn.GetApiResultMessageResponse(isMutant); //REGISTRAR (ASINCRONICAMENTE) => LA GRABACIÓN NO SE INVOLUCRA EN LA RESPUESTA var task = Task.Run(() => _mutantBsn.InsertDna(dnas, isMutant)); if (apiResult.Success) { return(Ok(apiResult)); } else { return(StatusCode(403, apiResult.Message)); } } }
public static MessageResponse GeneralValidation(MutantDnaRequest request) { var apiValidation = new MessageResponse(); var cache = InvalidDnaCacheRapper.Instance; if (cache.IsInDnaInvalidCache(request.Dna.ToList().GetDeterministicHashCode())) { apiValidation.Success = false; apiValidation.Message = "ADN INVALIDO"; return(apiValidation); } else { //NORMALIZACION DE DNAS var upperDna = DnaHelper.UpperDna(request.Dna.ToList()); request.Dna = upperDna; //VALIDACION DE DNAS apiValidation = DnaValidator.ValidateDna(upperDna); if (apiValidation.Success == false) { cache.AddToDnaInvalidCAche(request); } return(apiValidation); } }
public MessageResponse GeneralValidation(MutantDnaRequest request) { return(DnaValidator.GeneralValidation(request)); }
public void AddToDnaInvalidCAche(MutantDnaRequest dnaRequest) { _cache.GetOrCreate(dnaRequest.Dna.ToList().GetDeterministicHashCode(), () => dnaRequest); }