public async Task HandleAsync(IMessageContext context, AddEntry message) { var entry = new Whitelist { DomainName = message.DomainName }; await _uow.InsertAsync(entry); foreach (var dto in message.ApplicationIds) { var entity = new WhitelistedDomainApplication { DomainId = entry.Id, ApplicationId = dto }; await _uow.InsertAsync(entity); } if (message.IpAddresses?.Length > 0) { foreach (var ip in message.IpAddresses) { var entity = new WhitelistedDomainIp { DomainId = entry.Id, IpType = IpType.Manual, IpAddress = IPAddress.Parse(ip), StoredAtUtc = DateTime.UtcNow }; await _uow.InsertAsync(entity); } } else { await LookupIps(message, entry); } }
private async Task UpdateIps(EditEntry message, Whitelist whitelist) { var dbIps = await _uow.ToListAsync <WhitelistedDomainIp>("DomainId = @id", new { id = message.Id }); foreach (var address in message.IpAddresses) { var dbIp = dbIps.FirstOrDefault(x => x.IpAddress.ToString() == address); if (dbIp == null) { var entity = new WhitelistedDomainIp { DomainId = whitelist.Id, IpType = IpType.Manual, IpAddress = IPAddress.Parse(address), StoredAtUtc = DateTime.UtcNow }; await _uow.InsertAsync(entity); continue; } if (dbIp.IpType == IpType.Manual) { continue; } dbIp.IpType = IpType.Manual; await _uow.UpdateAsync(dbIp); } //find removed var removedEntries = dbIps.Select(x => x.IpAddress.ToString()) .Except(message.IpAddresses) .Select(x => dbIps.First(y => x == y.IpAddress.ToString())); foreach (var entry in removedEntries) { await _uow.DeleteAsync(entry); } }
public async Task SaveIp(WhitelistedDomainIp entry) { await _unitOfWork.InsertAsync(entry); }