Beispiel #1
0
        private async Task <DataResource> GetDataResourceAsync(DataQueryResource filterResource,
                                                               KeyParameterResource keyParameterResource)
        {
            var filter = mapper.Map <DataQueryResource, SubVariableDataQuery>(filterResource);

            filter.IsPaging            = false;
            filter.KeyParameterId      = keyParameterResource.Id;
            filter.KeyParameterLevelId = keyParameterResource.KeyParameterLevelId;
            filter.ParentRegionId      = CurrentUser.ParentRegionId;

            var queryResult = await _subVariablesData.GetSubVariableData(filter, true);

            var newDataResource = new DataResource
            {
                KeyParameterId      = keyParameterResource.Id,
                KeyParameterLevelId = keyParameterResource.KeyParameterLevelId
            };

            if (queryResult == null ||
                !queryResult.Items.Any())
            {
                return(newDataResource);
            }

            var years        = queryResult.Items.Select(i => i.Year).OrderBy(y => y).Distinct();
            var subVariables = queryResult.Items.Select(i => i.SubVariable.Name).Distinct().ToList();

            newDataResource.Years        = years;
            newDataResource.SubVariables = subVariables;
            newDataResource.Values       = new List <decimal[]>();

            for (var i = 0; i < subVariables.Count(); i++)
            {
                var items = queryResult.Items.Where(d => d.SubVariable.Name == subVariables[i])
                            .OrderBy(y => y.Year)
                            .Select(d => d.Value).ToArray();
                var itemsToAdd = new decimal[years.Count()];
                for (var j = 0; j < items.Length; j++)
                {
                    itemsToAdd[j] = items[j];
                }
                newDataResource.Values.Add(itemsToAdd);
            }

            return(newDataResource);
        }
Beispiel #2
0
        private DataDailyResource GetDataResource(DataQueryResource filterResource,
                                                  KeyParameterResource keyParameterResource)
        {
            // var filter = _mapper.Map<DataQueryResource, SubVariableDataQuery>(filterResource);
            // filter.IsPaging = false;
            // filter.KeyParameterId = keyParameterResource.Id;
            // filter.KeyParameterLevelId = keyParameterResource.KeyParameterLevelId;
            // filter.ParentRegionId = CurrentUser.ParentRegionId;

            var result = _subVariableDailyDataRepository.GetSubVariableData();

            var newDataResource = new DataDailyResource
            {
                KeyParameterId      = keyParameterResource.Id,
                KeyParameterLevelId = keyParameterResource.KeyParameterLevelId
            };

            if (result == null ||
                !result.Any())
            {
                return(newDataResource);
            }

            var dates        = result.Select(i => $"{i.Year}-{i.Month}").OrderBy(y => y).Distinct();
            var subVariables = result.Select(i => i.SubVariable.Name).Distinct().ToList();

            newDataResource.Date         = dates;
            newDataResource.SubVariables = subVariables;
            newDataResource.Values       = new List <decimal[]>();

            for (var i = 0; i < subVariables.Count(); i++)
            {
                var items = result.Where(d => d.SubVariable.Name == subVariables[i])
                            .OrderBy(y => y.Year).OrderBy(y => y.Month)
                            .Select(d => d.Value).ToArray();
                var itemsToAdd = new decimal[dates.Count()];
                for (var j = 0; j < items.Length; j++)
                {
                    itemsToAdd[j] = items[j];
                }
                newDataResource.Values.Add(itemsToAdd);
            }

            return(newDataResource);
        }