public ActionResult Index(FormCollection form) { var model = new AmostraPacienteVirusViewModel() { AmostraEntrada = form["amostra_entrada"] }; var lab = new Laboratorio(); lab.ProcessaAmostra(model); return(Json(lab.Resultado)); }
public void ProcessaAmostra(AmostraPacienteVirusViewModel model) { try { IEnumerable <string> entradas = model.AmostraEntrada .Split('\n') .Where(x => !string.IsNullOrEmpty(x)) .ToList(); if (!int.TryParse(entradas.First(), out int numAmostras)) { throw new Exception("Número de amostras inválido - Valor não numérico informado na primeira linha."); } //RN1 if (numAmostras < 1 || numAmostras > 10) { throw new Exception("Número de amostras inválido - Era esperado um valor numérico entre 1 e 10 na primeira linha."); } int conta = 0; var listaAmostras = entradas .Skip(1) .Select(x => new Amostra(x, ++conta)) .ToList(); //RN2 if (numAmostras != listaAmostras.Count) { throw new Exception("Número de amostra incompatível com o informado."); } Resultado = string.Join("\r\n", listaAmostras.Select(x => AnalisaAmostras(x))); } catch (Exception ex) { Resultado = ex.Message; } }