Beispiel #1
0
 public string GetDefaultUnitForIndicator(string indicator)
 {
     try
     {
         return(_dbViewAccessor.GetQualityIndicatorTypes().FirstOrDefault(x => x.indicatorName == indicator)
                .unitName);
     }
     catch (Exception e)
     {
         throw new Exception($"Could not retreive the default unit for indicator [{indicator}]");
     }
 }
Beispiel #2
0
        /// <summary>
        /// returns a dictionnary of [nameOfIdentificator, Cell(x,y)]
        /// </summary>
        private Dictionary <string, Tuple <int, int> > FindIndicatorNames(TableFormattedObject tableObject)
        {
            Debug.WriteLine("Searching for IndicatorNames and Aliases in the title...");

            var indicatorNamesWithCells = new Dictionary <string, Tuple <int, int> >();
            var indicatorNamesFromDb    = _dataBaseAccessor.GetQualityIndicatorTypes().Select(x => x.indicatorName).ToList();
            var indicatorAliasesFromDb  = _dataBaseAccessor.GetQualityIndicatorTypeMappings().Select(x => x.indicatorAlias).ToList();

            //iterate through all rows of title on the search for indicator names
            for (int i = 0; i < tableObject.NumberOfTitleRows; i++)
            {
                for (var j = 0; j < tableObject.Cells[i].Count; j++)
                {
                    var currentCell = tableObject.Cells[i][j];
                    if (indicatorNamesWithCells.ContainsKey(currentCell))
                    {
                        continue;
                    }
                    if (indicatorNamesFromDb.Contains(currentCell))
                    {
                        Debug.WriteLine($"Indicator [{currentCell}] found at ({i},{j})");
                        indicatorNamesWithCells.Add(currentCell, new Tuple <int, int>(i, j));
                    }
                    else if (indicatorAliasesFromDb.Contains(currentCell))
                    {
                        var indicatorName = _utilityDataBaseAccessor.GetIndicatorForAlias(currentCell);
                        Debug.WriteLine($"[{currentCell}] found at ({i},{j}) is an alias for [{indicatorName}]");
                        indicatorNamesWithCells.Add(indicatorName, new Tuple <int, int>(i, j));
                    }
                }
            }

            Debug.WriteLine("Searching for IndicatorNames and Aliases in the rows...");

            //iterate through all rows of title on the search for indicator names
            for (var i = 0; i < tableObject.Cells[tableObject.NumberOfTitleRows].Count; i++)
            {
                var currentCell = tableObject.Cells[tableObject.NumberOfTitleRows][i];
                if (indicatorNamesWithCells.ContainsKey(currentCell))
                {
                    continue;
                }
                if (indicatorNamesFromDb.Contains(currentCell))
                {
                    Debug.WriteLine($"Indicator [{currentCell}] found at ({tableObject.NumberOfTitleRows},{i})");
                    indicatorNamesWithCells.Add(currentCell, new Tuple <int, int>(tableObject.NumberOfTitleRows, i));
                }
                else if (indicatorAliasesFromDb.Contains(currentCell))
                {
                    var indicatorName = _utilityDataBaseAccessor.GetIndicatorForAlias(currentCell);
                    Debug.WriteLine($"[{currentCell}] found at ({tableObject.NumberOfTitleRows},{i}) is an alias for [{indicatorName}]");
                    indicatorNamesWithCells.Add(indicatorName, new Tuple <int, int>(tableObject.NumberOfTitleRows, i));
                }
            }

            return(indicatorNamesWithCells);
        }
        public List <vQualityIndicatorType> GetQualityIndicatorTypes([FromUri] int waterPlantId, [FromUri] int treatmentStepTypeId)
        {
            try
            {
                var treatmentStepOnWwtp      = _dbAccessor.GetTreatmentSteps().Where(x => x.waterPlantId == waterPlantId && x.treatmentStepTypeId == treatmentStepTypeId).Select(x => x.treatmentStepId).FirstOrDefault();
                var qualityIndicators        = _dbAccessor.GetQualityIndicators().Where(x => x.treatmentStepId != null && x.treatmentStepId == treatmentStepOnWwtp).GroupBy(x => x.indicatorTypeId);
                var qualityIndicatorGrouping = qualityIndicators.ToList();
                var qualityIndicatorTypeIds  = new List <int>();
                foreach (var qualityIndicator in qualityIndicatorGrouping)
                {
                    qualityIndicatorTypeIds.Add(qualityIndicator.Key);
                }

                var qualityIndicatorTypes = _dbAccessor.GetQualityIndicatorTypes()
                                            .Where(x => qualityIndicatorTypeIds.Contains(x.indicatorTypeId));
                return(qualityIndicatorTypes.ToList());
            }
            catch (Exception e)
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, $"Data could not be retreived. Reason: {e.Message}");
            }
        }