public async Task <GatewayResponse> RemoveDevice(GatewayDeviceDto data) { var gateway = await _gatewayRepository.FindByIdAsync(data.GatewayId); if (gateway == null) { return(new GatewayResponse("Gateway not found")); } var device = await _deviceService.FindAsync(data.DeviceId); if (device == null) { return(new GatewayResponse("Device not found")); } try { device.Gateway = null; await _unitOfWork.CompleteAsync(); return(new GatewayResponse(gateway)); } catch (Exception e) { return(new GatewayResponse($"Error removing device: {e.Message}")); } }
public async Task <ActionResult> RemoveDevice([FromBody] GatewayDeviceDto data) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrorMessages())); } var result = await _gatewayService.RemoveDevice(data); if (!result.Success) { return(BadRequest(result.Message)); } var modified = _mapper.Map <Gateway, GatewayDto>(result.Gateway); return(Ok(modified)); }
public async Task <GatewayResponse> AddDevice(GatewayDeviceDto data) { var gateway = await _gatewayRepository.FindByIdAsync(data.GatewayId); if (gateway == null) { return(new GatewayResponse("Gateway not found")); } if (!(gateway.Devices.Count < 10)) { return(new GatewayResponse("This gateway already has 10 devices connected")); } var device = await _deviceService.FindAsync(data.DeviceId); if (device == null) { return(new GatewayResponse("Device not found")); } if (device.Gateway != null && device.GatewayId != data.GatewayId) { return(new GatewayResponse("This device is already connected to a gateway")); } try { device.Gateway = gateway; await _unitOfWork.CompleteAsync(); return(new GatewayResponse(gateway)); } catch (Exception e) { return(new GatewayResponse($"Error adding device to gateway: {e.Message}")); } }