public async Task CrudOne() { var userId = 1; var tokens = _container.Resolve <ITokenRegistrationRepository>(); var registration = new TokenRegistration { UserId = userId, IssuedAt = DateTime.UtcNow.AddDays(-1), AccessToken = "token", ExpiredAt = DateTime.UtcNow.AddDays(+1) }; // CREATE await tokens.Save(registration); // READ var result = await tokens.FindById(registration.Id); result.Should().BeEquivalentTo(registration, CompareOptions); // UPDATE registration.AccessToken = "new token"; await tokens.Save(registration); result = await tokens.FindById(registration.Id); result.Should().BeEquivalentTo(registration, CompareOptions); // DELETE await tokens.RevokeByUserId(userId); result = await tokens.FindById(registration.Id); result.Should().BeNull(); }
public async Task Save(TokenRegistration registration) { if (registration.Id > 0) { const string query = @" update dom.""TokenRegistration"" set ""UserId"" = @UserId, ""AccessToken"" = @AccessToken, ""IssuedAt"" = @IssuedAt, ""ExpiredAt"" = @ExpiredAt where ""Id"" = @Id "; using (var con = _connectionProvider.Connection) { await con.ExecuteAsync(query, registration); } } else { const string query = @" insert into dom.""TokenRegistration"" (""UserId"", ""AccessToken"", ""IssuedAt"", ""ExpiredAt"") values (@UserId, @AccessToken, @IssuedAt, @ExpiredAt) returning ""Id"" "; using (var con = _connectionProvider.Connection) { registration.Id = await con.ExecuteScalarAsync <int>(query, registration); } } }
private async Task <TokenCreateResponse> InternalCreateAsync(TokenCreateRequest tokenCreateRequest, CancellationToken cancellationToken = default(CancellationToken)) { //TODO business rule: should we receive a deviceId to "connect" the token with that device? var generatedToken = _tokenGenerator.Generate(new Card(tokenCreateRequest.CardNumber, tokenCreateRequest.Cvv), _tokenGeneratorClock.Now()); var tokenRegistration = new TokenRegistration(generatedToken.Value, tokenCreateRequest.CardNumber, generatedToken.GeneratedAt); _databaseContext.TokenRegistrations.Add(tokenRegistration); await _databaseContext.SaveChangesAsync(cancellationToken); return(new TokenCreateResponse(generatedToken.GeneratedAt, generatedToken.Value)); }
public async Task Save(TokenRegistration registration) { if (registration.Id > 0) { const string query = @" UPDATE [dom].[TokenRegistration] SET [UserId] = @UserId ,[AccessToken] = @AccessToken ,[IssuedAt] = @IssuedAt ,[ExpiredAt] = @ExpiredAt WHERE [Id] = @Id "; using (var con = _connectionProvider.Connection) { await con.ExecuteAsync(query, registration); } } else { const string query = @" INSERT INTO [dom].[TokenRegistration] ([UserId] ,[AccessToken] ,[IssuedAt] ,[ExpiredAt]) VALUES (@UserId ,@AccessToken ,@IssuedAt ,@ExpiredAt) ;select SCOPE_IDENTITY() id "; using (var con = _connectionProvider.Connection) { registration.Id = await con.ExecuteScalarAsync <int>(query, registration); } } }
public static void ProcessDeviceToken(DeviceRegistration device, Address address, TokenRegistration token, decimal amount) { SendResponse sendResponse = null; try { if (string.IsNullOrEmpty(address.Name)) { sendResponse = FirebaseGateway.SendPush(device.token, token.Token, $"{token.Token} Deposit Received", $"You have received a deposit of {amount.ToString("0.##")} {token.Token}"); } else { sendResponse = FirebaseGateway.SendPush(device.token, token.Token, $"{token.Token} Deposit Received", $"{address.Name.ToUpper()} has received a deposit of {amount.ToString("0.##")} {token.Token}"); } //Now update firestore so we dont send the user duplicate messages //token.lastBalance = IconGateway.GetBalance(address, token).ToString(); //token.lastDepositPushSentDate = DateTime.UtcNow; } catch (Exception ex) { Console.WriteLine($"[MAIN] EXCEPTION processing Deposit check {ex.Message}"); } if (sendResponse != null && sendResponse.failure > 0) { if (sendResponse.results.Any(a => a.error == "NotRegistered")) { //This token has become stale, need to remove it from firestore FirebaseGateway.DeleteDevice(device); } } }