async Task StoreRuleAsync(Rule rule) { var address = new Ztm.Data.Entity.Contexts.Main.ReceivingAddress() { Id = rule.AddressReservation.Address.Id, Address = rule.AddressReservation.Address.Address.ToString(), IsLocked = rule.AddressReservation.Address.IsLocked, }; var reservation = new Data.Entity.Contexts.Main.ReceivingAddressReservation() { Id = rule.AddressReservation.Id, AddressId = rule.AddressReservation.Address.Id, LockedAt = rule.AddressReservation.ReservedDate, ReleasedAt = rule.AddressReservation.ReleasedDate, }; var entity = new Ztm.Data.Entity.Contexts.Main.TokenReceivingWatcherRule() { Id = rule.Id, CallbackId = rule.Callback?.Callback.Id, PropertyId = rule.Property.Value, AddressReservationId = rule.AddressReservation.Id, TargetAmount = rule.TargetAmount.Indivisible, TargetConfirmation = rule.TargetConfirmation, OriginalTimeout = rule.OriginalTimeout, CurrentTimeout = rule.OriginalTimeout, TimeoutStatus = rule.Callback?.TimeoutStatus, Status = Ztm.Data.Entity.Contexts.Main.TokenReceivingWatcherRuleStatus.Uncompleted, }; using (var db = this.db.CreateDbContext()) { if (rule.Callback != null) { var callback = rule.Callback.Callback; await db.WebApiCallbacks.AddAsync(new Ztm.Data.Entity.Contexts.Main.WebApiCallback() { Id = callback.Id, RegisteredIp = callback.RegisteredIp, RegisteredTime = callback.RegisteredTime, Completed = callback.Completed, Url = callback.Url, }); } await db.ReceivingAddresses.AddAsync(address); await db.ReceivingAddressReservations.AddAsync(reservation); await db.TokenReceivingWatcherRules.AddAsync(entity); await db.SaveChangesAsync(); } }
ReceivingAddress ToDomain(ReceivingAddressModel entity) { var r = new ReceivingAddress( entity.Id, BitcoinAddress.Create(entity.Address, this.network), entity.IsLocked, new List <ReceivingAddressReservation>()); foreach (var reservation in entity.Reservations) { r.Reservations.Add(ToDomain(reservation, r)); } return(r); }
async Task CreateAddressAsync(ReceivingAddress address) { var entity = new Ztm.Data.Entity.Contexts.Main.ReceivingAddress() { Id = address.Id, Address = address.Address.ToString(), IsLocked = address.IsLocked, }; using (var db = this.db.CreateDbContext()) { await db.ReceivingAddresses.AddAsync(entity); await db.SaveChangesAsync(); } }