private void Add(int offsetHours, int tekCount, int?publishedCount)
        {
            ++_WorkflowCount;

            var v = _Dtp.Snapshot - TimeSpan.FromHours(offsetHours);

            var w = new TekReleaseWorkflowStateEntity
            {
                Created           = _Dtp.Snapshot, //Doesnt matter
                BucketId          = new[] { (byte)_WorkflowCount },
                ConfirmationKey   = new[] { (byte)_WorkflowCount },
                LabConfirmationId = publishedCount.HasValue ? null : _WorkflowCount.ToString(),
                PollToken             = publishedCount.HasValue ? _WorkflowCount.ToString() : null,
                AuthorisedByCaregiver = publishedCount.HasValue ? _Dtp.Snapshot : (DateTime?)null,
                DateOfSymptomsOnset   = publishedCount.HasValue ? _Dtp.Snapshot : (DateTime?)null,
                ValidUntil            = v
            };

            _DbContext.KeyReleaseWorkflowStates.Add(w);

            for (var i = 0; i < tekCount; i++)
            {
                var t = new TekEntity
                {
                    Owner = w,
                    RollingStartNumber = 0,
                    RollingPeriod      = 0,
                    PublishAfter       = _Dtp.Snapshot,
                    KeyData            = new byte[0],
                    PublishingState    = i < (publishedCount ?? 0) ? PublishingState.Published : PublishingState.Unpublished,
                };
                _DbContext.TemporaryExposureKeys.Add(t);
            }
        }
Esempio n. 2
0
        private void GenTeks(long workflowId)
        {
            using var dbc = _WorkflowDb();
            //Have to load referenced object into new context
            var owner = dbc.KeyReleaseWorkflowStates.Single(x => x.Id == workflowId);

            owner.AuthorisedByCaregiver = DateTime.UtcNow;
            owner.DateOfSymptomsOnset   = DateTime.UtcNow.AddDays(-1);

            for (var i = 0; i < _Args.TekCountPerWorkflow; i++)
            {
                var k = new TekEntity
                {
                    Owner              = owner,
                    PublishingState    = PublishingState.Unpublished,
                    RollingStartNumber = DateTime.UtcNow.Date.ToRollingStartNumber(),
                    RollingPeriod      = _Rng.Next(1, UniversalConstants.RollingPeriodRange.Hi),
                    KeyData            = _Rng.NextByteArray(UniversalConstants.DailyKeyDataByteCount),
                    PublishAfter       = DateTime.UtcNow,
                };
                owner.Teks.Add(k);
                dbc.TemporaryExposureKeys.Add(k);
            }
            dbc.SaveAndCommit();
        }
        //Read
        public static Tek MapToTek(this TekEntity value)
        {
            if (value == null)
            {
                return(null);
            }

            return(new Tek
            {
                KeyData = value.KeyData,
                RollingPeriod = value.RollingPeriod,
                RollingStartNumber = value.RollingStartNumber,
                PublishingState = value.PublishingState,
                PublishAfter = value.PublishAfter,
            });
        }
Esempio n. 4
0
        private void GenTeks(TekReleaseWorkflowStateEntity workflow)
        {
            var count = _Rng.Next(1, _Args.TekCountPerWorkflow);

            for (var i = 0; i < count; i++)
            {
                var k = new TekEntity
                {
                    Owner              = workflow,
                    PublishingState    = PublishingState.Unpublished,
                    RollingStartNumber = DateTime.UtcNow.Date.ToRollingStartNumber(),
                    RollingPeriod      = _Rng.Next(1, 144),
                    KeyData            = _Rng.NextByteArray(16),
                    PublishAfter       = DateTime.UtcNow,
                    Region             = "NL"
                };
                workflow.Teks.Add(k);
                _WorkflowDb.Set <TekEntity>().Add(k);
            }
        }
Esempio n. 5
0
        public async Task AddExampleContent()
        {
            var r2 = new StandardRandomNumberGenerator();

            await using var tx = await _Provider.Database.BeginTransactionAsync();

            var wfs1 = new TekReleaseWorkflowStateEntity
            {
                LabConfirmationId = _LabConfirmationIdService.Next(),
                BucketId          = r2.NextByteArray(_WorkflowConfig.BucketIdLength),
                ConfirmationKey   = r2.NextByteArray(_WorkflowConfig.ConfirmationKeyLength),
                Created           = new DateTime(2020, 5, 1, 0, 0, 0, DateTimeKind.Utc),
            };

            var key1 = new TekEntity
            {
                Owner              = wfs1,
                PublishingState    = PublishingState.Unpublished,
                RollingPeriod      = 2,
                RollingStartNumber = DateTime.UtcNow.Date.ToRollingStartNumber(),
                KeyData            = r2.NextByteArray(_TekValidatorConfig.KeyDataLength),
                Region             = "NL"
            };


            var key2 = new TekEntity
            {
                Owner              = wfs1,
                PublishingState    = PublishingState.Unpublished,
                RollingPeriod      = 144,
                RollingStartNumber = DateTime.UtcNow.Date.ToRollingStartNumber(),
                KeyData            = r2.NextByteArray(_TekValidatorConfig.KeyDataLength),
                Region             = "NL"
            };

            await _Provider.KeyReleaseWorkflowStates.AddAsync(wfs1);

            await _Provider.TemporaryExposureKeys.AddRangeAsync(key1, key2);

            _Provider.SaveAndCommit();
        }