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); } }
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, }); }
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); } }
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(); }