예제 #1
0
        public async Task<IActionResult> AddDevice(DeviceDto deviceDto)
        {
            try
            {
                if (string.IsNullOrEmpty(deviceDto.AddressLabel))
                    return StatusCode((int)HttpStatusCode.BadRequest, "The Address field is required.");

                var address = await _repo.GetAddress(deviceDto.AddressLabel);

                if (address == null)
                    address = await _repo.AddAddress(deviceDto.AddressLabel);
                else if (address.IsConfirmed == false)
                    address.IsConfirmed = true;
                else
                    return StatusCode((int)HttpStatusCode.BadRequest, "Address exists!");

                var newDevice = new Database.Entities.Device()
                {
                    Name = deviceDto.Name,
                    AddressId = address.Id,
                    Created = DateTime.Now,
                    KindId = deviceDto.KindId,
                    ComponentId = deviceDto.ComponentId,
                    CategoryId = deviceDto.CategoryId,
                    Icon = deviceDto.Icon,
                    IsAutoUpdate = deviceDto.IsAutoUpdate,
                    VersionId = deviceDto.VersionId,
                };

                await _repo.Add(newDevice);

                return Ok(newDevice);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);

                return StatusCode((int)HttpStatusCode.InternalServerError, "Error!");
            }
        }