private PairingCodeEntity CreatePairingCodeEntity(PairingCodeData data) { return(new PairingCodeEntity() { Facade = data.Facade, Id = data.Id, Label = data.Label, Expiration = data.Expiration, CreatedTime = data.DateCreated, TokenValue = data.TokenValue, SIN = data.SIN }); }
private async Task <PairingResult> ActivateIfComplete(ApplicationDbContext ctx, PairingCodeData pairingCode) { if (!string.IsNullOrEmpty(pairingCode.SIN) && !string.IsNullOrEmpty(pairingCode.StoreDataId)) { ctx.PairingCodes.Remove(pairingCode); // Can have concurrency issues... but no harm can be done var alreadyUsed = await ctx.PairedSINData.Where(p => p.SIN == pairingCode.SIN && p.StoreDataId != pairingCode.StoreDataId).AnyAsync(); if (alreadyUsed) { return(PairingResult.ReusedKey); } await ctx.PairedSINData.AddAsync(new PairedSINData() { Id = pairingCode.TokenValue, PairingTime = DateTime.UtcNow, Facade = pairingCode.Facade, Label = pairingCode.Label, StoreDataId = pairingCode.StoreDataId, SIN = pairingCode.SIN }); return(PairingResult.Complete); } return(PairingResult.Partial); }