//this method look for mutation public async Task <MutantModel> IsMutant(string[] prmDna) { DnaBusiness DnaValidator = new DnaBusiness(); MutantModel mutantModel = new MutantModel(); var isDnaSampleValid = DnaValidator.IsDnaSampleValid(prmDna); if (isDnaSampleValid.Key) { string rowWord; string colWord; int n = prmDna.Length; int numberOfGenForMutation = Convert.ToInt32(Resource.MessageResource.NumberOfGensForMutation); string[,] dnaBoard = DnaValidator.GetDnaBoard(prmDna); Array2nUtility <string> arrayUtility = new Array2nUtility <string>(); List <string> diagonals = arrayUtility.GetDiagonals(dnaBoard, n); if (IsMutantGen(diagonals[0])) { mutantModel.MutantSequences.Add(diagonals[0]); } if (IsMutantGen(diagonals[1])) { mutantModel.MutantSequences.Add(diagonals[1]); } for (int r = 0; r < n; r++) { rowWord = string.Join("", arrayUtility.GetRow(dnaBoard, r)); colWord = string.Join("", arrayUtility.GetColumn(dnaBoard, r)); if (IsMutantGen(rowWord)) { mutantModel.MutantSequences.Add(rowWord); } if (IsMutantGen(colWord)) { mutantModel.MutantSequences.Add(colWord); } if (mutantModel.MutantSequences.Count >= numberOfGenForMutation) { mutantModel.IsMutant = true; break; } } AnalysisLogDAL dal = new AnalysisLogDAL(); await dal.AnalysisLogAdd(prmDna, mutantModel.IsMutant); mutantModel.ConclusionOfAnalysis = mutantModel.IsMutant ? Resource.MessageResource.MutantFounded : Resource.MessageResource.MutantNotFounded; } else { mutantModel.ConclusionOfAnalysis = isDnaSampleValid.Value; } return(mutantModel); }
public async Task <StatiscalModel> StatiscalGet() { StatiscalModel statiscal = new StatiscalModel(); try { AnalysisLogDAL dal = new AnalysisLogDAL(); statiscal.MutantNumber = await dal.AnalysisLogCount(SubjectType.Mutant); statiscal.HumanNumber = await dal.AnalysisLogCount(SubjectType.NoMutant); statiscal.Ratio = statiscal.HumanNumber > 0 ? (decimal)((double)statiscal.MutantNumber / (double)statiscal.HumanNumber) : statiscal.MutantNumber; } catch (Exception e) { var ex = e.ToString(); //TODO: Writing in log } return(statiscal); }