public StatsResultModel GetStats()
        {
            var stats = _context.Stats.ToList();

            int    qtdSearch  = stats.Count();
            int    qtdMutants = stats.Where(x => x.IsMutant == true).Count();
            int    qtdHumans  = (qtdSearch - qtdMutants);
            double ratioCalc;

            if (qtdHumans == 0)
            {
                ratioCalc = 1;
            }
            else
            {
                ratioCalc = (double)qtdMutants / qtdHumans;
            }

            var result = new StatsResultModel()
            {
                count_human_dna  = qtdHumans,
                count_mutant_dna = qtdMutants,
                ratio            = Math.Round(ratioCalc, 2)
            };

            return(result);
        }
Example #2
0
        public async Task <ActionResult> GetStats(string name)
        {
            // first get a named saved query.
            string filter = $"name eq '{name}'";//zApproved Applications (Reporting)

            var savedQuerySearchResults = _dynamicsClient.Savedqueries.Get(filter: filter);

            var savedQuery = savedQuerySearchResults.Value.FirstOrDefault();

            if (savedQuery == null)
            {
                return(new NotFoundObjectResult(new { Name = name, error = $"There was no saved query with a name of {name}" }));
            }
            else
            {
                string savedQueryId = savedQuery.Savedqueryid;

                // now get application data.
                try
                {
                    var results = _dynamicsClient.Applications.GetSavedQuery(savedQueryId);

                    var result = new List <StatsResultModel>();

                    foreach (var item in results.Value)
                    {
                        var newItem = new StatsResultModel()
                        {
                            adoxio_applicationid = item["adoxio_applicationid"]
                        };

                        string cacheKey = CacheKeys.ApplicationPrefix + newItem.adoxio_applicationid;

                        MicrosoftDynamicsCRMadoxioApplication application = null;
                        if (!_cache.TryGetValue(cacheKey, out application))
                        {
                            application = await _dynamicsClient.GetApplicationByIdWithChildren(Guid.Parse(newItem.adoxio_applicationid));

                            // Set cache options.
                            var cacheEntryOptions = new MemoryCacheEntryOptions()
                                                    // Keep in cache for this time
                                                    .SetAbsoluteExpiration(TimeSpan.FromHours(24));

                            // Save data in cache.
                            _cache.Set(cacheKey, application, cacheEntryOptions);
                        }
                        if (application.AdoxioLocalgovindigenousnationid != null && application.AdoxioLocalgovindigenousnationid.AdoxioCommunicationsregion != null)
                        {
                            newItem.commregion = (CommRegions)application.AdoxioLocalgovindigenousnationid.AdoxioCommunicationsregion;
                        }
                        else
                        {
                            newItem.commregion = CommRegions.Unknown;
                        }
                        result.Add(newItem);
                    }
                    return(Json(result));
                }
                catch (Exception e)
                {
                    _logger.LogError($"Error reading from saved query {name}.");
                    _logger.LogError(e.Message);
                    _logger.LogError(e.StackTrace);

                    return(new NotFoundObjectResult(new { Name = name, error = $"Unable to retrieve saved query with a name of {name}.  Error is {e.Message}" }));
                }
            }
        }