public async Task <IActionResult> Post([FromBody] CreateNetworkAddressCommand command, CancellationToken cancellationToken) { var id = await Mediator.Send(command, cancellationToken); return(new JsonResult(new { id }) { StatusCode = 201 }); }
public async Task <int> CreateNew(CreateNetworkAddressCommand command) { var result = await _http.PostAsJsonAsync($"{_api.Url}/networkaddress", command); await result.EnsureSuccess(); var response = await result.Content.ReadFromJsonAsync <IdResponse>(); return(response.Id); }
public async Task ProcessNetworkAddresses(INetworkEntityService service, int entityId, IEnumerable <string> newRange, IEnumerable <string> oldRange) { if (!newRange.SequenceEqual(oldRange)) { // Figure out what needs to be added or removed var toAdd = newRange.Except(oldRange); var toRemove = oldRange.Except(newRange); // Get all existing network addresses var addresses = await GetAll(); // Process address to add foreach (var addr in toAdd) { if (addresses.Any(x => x.Address.Equals(addr))) { // Address already exists so get it's ID and just add it var netId = addresses.Single(x => x.Address.Equals(addr)).Id; await service.AddNetworkAddress(entityId, netId); } else { // Address doesn't exist so create it first and then add it var command = new CreateNetworkAddressCommand { Address = addr }; var id = await CreateNew(command); await service.AddNetworkAddress(entityId, id); } } // Process address to remove from server foreach (var addr in toRemove) { var netId = addresses.Single(x => x.Address.Equals(addr)).Id; await service.RemoveNetworkAddress(entityId, netId); } } }