Exemplo n.º 1
0
        public async Task SaveVariableResults(VariableResult data)
        {
            var existingData = await GetVariableResultStorageModel(data.VariableId, data.ScenarioId);

            var dataModel = new VariableResultStorageModel
            {
                Id         = existingData?.Id ?? Guid.NewGuid(),
                ScenarioId = data.ScenarioId,
                ModelId    = data.ModelId,
                VariableId = data.VariableId,
                Sets       = data.Sets,
            };
            var itemBundles = data.Data
                              .Select((val, index) => new { Index = index, Value = val })
                              .GroupBy(i => i.Index / ItemStorageBundleSize)
                              .Select(x => new VariableResultItemBundleStorageModel
            {
                VariableResultId = dataModel.Id,
                ItemBundle       = x.Select(v => v.Value).ToList(),
            })
                              .ToList();
            await _variableResultsCollection.ReplaceOneAsync(x => x.Id == dataModel.Id, dataModel, new UpdateOptions
            {
                IsUpsert = true,
            });

            await _variableResultItemsBundleCollection.DeleteManyAsync(x => x.VariableResultId == dataModel.Id);

            if (itemBundles.Any())
            {
                await _variableResultItemsBundleCollection.InsertManyAsync(itemBundles);
            }
        }
Exemplo n.º 2
0
        public async Task SaveVariableResults(VariableResult data)
        {
            var existingData = await GetVariableResultStorageModel(data.VariableId, data.ScenarioId);

            var dataModel = new VariableResultStorageModel
            {
                Id         = existingData?.Id ?? Guid.NewGuid(),
                ScenarioId = data.ScenarioId,
                ModelId    = data.ModelId,
                VariableId = data.VariableId,
                Sets       = data.Sets,
            };
            var itemsModel = data.Data.Select(d => new VariableResultItemStorageModel
            {
                VariableResultId = dataModel.Id,
                Coordinates      = d.C,
                Value            = d.V,
            }).ToList();
            await _variableResultsCollection.ReplaceOneAsync(x => x.Id == dataModel.Id, dataModel, new UpdateOptions
            {
                IsUpsert = true,
            });

            await _variableResultItemsCollection.DeleteManyAsync(x => x.VariableResultId == dataModel.Id);

            if (itemsModel.Any())
            {
                await _variableResultItemsCollection.InsertManyAsync(itemsModel);
            }
        }