//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);
        }
Exemple #2
0
        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);
        }