示例#1
0
        public async Task <IActionResult> Post([FromBody] CreateNetworkAddressCommand command, CancellationToken cancellationToken)
        {
            var id = await Mediator.Send(command, cancellationToken);

            return(new JsonResult(new { id })
            {
                StatusCode = 201
            });
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                }
            }
        }