< Summary - pva.SuperV

Information
Class: pva.SuperV.Api.Services.History.HistoryValuesService
Assembly: pva.SuperV.Api
File(s): /home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Services/History/HistoryValuesService.cs
Tag: dotnet-ubuntu_18869653307
Line coverage
95%
Covered lines: 83
Uncovered lines: 4
Coverable lines: 87
Total lines: 123
Line coverage: 95.4%
Branch coverage
50%
Covered branches: 6
Total branches: 12
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetInstanceRawHistoryValuesAsync()50%2292.85%
GetInstanceHistoryValuesAsync()50%2292.85%
GetInstanceRawHistoryStatisticsAsync()50%2292.3%
GetInstanceHistoryStatisticsAsync()50%2292.3%
BuildStatisticsHeader(...)50%44100%

File(s)

/home/runner/work/pva.SuperV/pva.SuperV/pva.SuperV.Api/Services/History/HistoryValuesService.cs

#LineLine coverage
 1using pva.SuperV.Api.Exceptions;
 2using pva.SuperV.Engine;
 3using pva.SuperV.Engine.HistoryRetrieval;
 4using pva.SuperV.Engine.HistoryStorage;
 5using pva.SuperV.Model.HistoryRetrieval;
 6using pva.SuperV.Model.Services;
 7
 8namespace pva.SuperV.Api.Services.History
 9{
 10    public class HistoryValuesService : BaseService, IHistoryValuesService
 11    {
 12        public async Task<HistoryRawResultModel> GetInstanceRawHistoryValuesAsync(string projectId, string instanceName,
 313        {
 314            Project project = GetProjectEntity(projectId);
 315            if (project is RunnableProject runnableProject)
 316            {
 317                Instance instance = runnableProject.GetInstance(instanceName);
 318                RunnableProject.GetHistoryParametersForFields(instance, request.HistoryFields,
 319                    out List<IFieldDefinition> fields, out HistoryRepository? historyRepository, out string? classTimeSe
 320                HistoryTimeRange query = new(request.StartTime, request.EndTime);
 321                List<HistoryRow> rows = runnableProject.GetHistoryValues(instanceName, query, fields, historyRepository!
 22
 323                int fieldIndex = 0;
 324                List<HistoryFieldModel> header = [.. fields.Select(fieldDefinition =>
 2525                {
 2526                    return new HistoryFieldModel(fieldDefinition.Name, fieldDefinition.Type.ToString(), fieldIndex++);
 2827                })];
 328                return await Task.FromResult(new HistoryRawResultModel(header, HistoryRowMapper.ToRawDto(rows)));
 29
 30            }
 031            return await Task.FromException<HistoryRawResultModel>(new NonRunnableProjectException(projectId));
 332        }
 33
 34        public async Task<HistoryResultModel> GetInstanceHistoryValuesAsync(string projectId, string instanceName, Histo
 335        {
 336            Project project = GetProjectEntity(projectId);
 337            if (project is RunnableProject runnableProject)
 338            {
 339                Instance instance = runnableProject.GetInstance(instanceName);
 340                RunnableProject.GetHistoryParametersForFields(instance, request.HistoryFields,
 341                    out List<IFieldDefinition> fields, out HistoryRepository? historyRepository, out string? classTimeSe
 42
 343                HistoryTimeRange query = new(request.StartTime, request.EndTime);
 344                List<HistoryRow> rows = runnableProject.GetHistoryValues(instanceName, query, fields, historyRepository!
 45
 346                int fieldIndex = 0;
 347                List<HistoryFieldModel> header = [.. fields.Select(fieldDefinition =>
 2548                {
 2549                    return new HistoryFieldModel(fieldDefinition.Name, fieldDefinition.Type.ToString(), fieldIndex++);
 2850                })];
 351                return await Task.FromResult(new HistoryResultModel(header, HistoryRowMapper.ToDto(rows, fields)));
 52            }
 053            return await Task.FromException<HistoryResultModel>(new NonRunnableProjectException(projectId));
 354        }
 55
 56        public async Task<HistoryStatisticsRawResultModel> GetInstanceRawHistoryStatisticsAsync(string projectId, string
 257        {
 258            Project project = GetProjectEntity(projectId);
 259            if (project is RunnableProject runnableProject)
 260            {
 261                Instance instance = runnableProject.GetInstance(instanceName);
 662                RunnableProject.GetHistoryParametersForFields(instance, [.. request.HistoryFields.Select(field => field.
 263                    out List<IFieldDefinition> fields, out HistoryRepository? historyRepository, out string? classTimeSe
 264                HistoryStatisticTimeRange query = new(request.StartTime, request.EndTime, request.InterpolationInterval,
 265                int fieldIndex = 0;
 266                List<HistoryStatisticField> statisticFields = [.. fields.Select(fieldDefinition =>
 467                {
 468                    int savedFieldIndex = fieldIndex;
 469                    fieldIndex++;
 470                    return new HistoryStatisticField(fieldDefinition, request.HistoryFields[savedFieldIndex].StatisticFu
 671                })];
 72
 273                List<HistoryStatisticRow> rows = runnableProject.GetHistoryStatistics(instanceName, query, statisticFiel
 74
 275                return await Task.FromResult(new HistoryStatisticsRawResultModel(BuildStatisticsHeader(request, fields, 
 76
 77            }
 078            return await Task.FromException<HistoryStatisticsRawResultModel>(new NonRunnableProjectException(projectId))
 279        }
 80
 81        public async Task<HistoryStatisticsResultModel> GetInstanceHistoryStatisticsAsync(string projectId, string insta
 282        {
 283            Project project = GetProjectEntity(projectId);
 284            if (project is RunnableProject runnableProject)
 285            {
 286                Instance instance = runnableProject.GetInstance(instanceName);
 987                RunnableProject.GetHistoryParametersForFields(instance, [.. request.HistoryFields.Select(field => field.
 288                    out List<IFieldDefinition> fields, out HistoryRepository? historyRepository, out string? classTimeSe
 289                HistoryStatisticTimeRange query = new(request.StartTime, request.EndTime, request.InterpolationInterval,
 290                int fieldIndex = 0;
 291                List<HistoryStatisticField> statisticFields = [.. fields.Select(fieldDefinition =>
 792                {
 793                    int savedFieldIndex = fieldIndex;
 794                    fieldIndex++;
 795                    return new HistoryStatisticField(fieldDefinition, request.HistoryFields[savedFieldIndex].StatisticFu
 996                })];
 97
 298                List<HistoryStatisticRow> rows = runnableProject.GetHistoryStatistics(instanceName, query, statisticFiel
 99
 2100                return await Task.FromResult(new HistoryStatisticsResultModel(BuildStatisticsHeader(request, fields, row
 101
 102            }
 0103            return await Task.FromException<HistoryStatisticsResultModel>(new NonRunnableProjectException(projectId));
 2104        }
 105
 106        private static List<HistoryStatisticResultFieldModel> BuildStatisticsHeader(HistoryStatisticsRequestModel reques
 4107        {
 4108            HistoryStatisticRow? firstRow = rows.FirstOrDefault();
 4109            ArgumentNullException.ThrowIfNull(firstRow);
 4110            int fieldIndex = 0;
 4111            return [.. fields.Select(fieldDefinition =>
 11112                {
 11113                    object? valueAsObject = firstRow.Values[fieldIndex];
 11114                    HistoryStatisticResultFieldModel historyStatisticResultFieldModel = new(fieldDefinition.Name,
 11115                        firstRow is not null && valueAsObject is not null
 11116                        ? valueAsObject.GetType().ToString()
 11117                        : fieldDefinition.Type.ToString(), fieldIndex, request.HistoryFields[fieldIndex].StatisticFuncti
 11118                    fieldIndex++;
 11119                    return historyStatisticResultFieldModel;
 15120                })];
 4121        }
 122    }
 123}