internal void Handle(AddDevicesToDiagnosticsTask input) { var output = new AddDevicesToDiagnosticsTaskResponse(); output.swlr = SwlResult.GENERAL_FAIL; using (var dbConn = DatabaseManager.DbConn()) { dbConn.BeginTransaction(); var ti = dbConn.ExecuteBpl(new DiagnosticsTaskGetById { TaskId = input.TaskId }); if (ti == null) { output.swlr = SwlResult.NOT_FOUND; goto Exit; } var exDeviceIds = new List<BplIdentity>(); foreach (var deviceId in input.DeviceIds) { BplCollection<DiagnosticsTaskDevice> dtds = null; if (ti.TaskType.UsesSingleInstance()) { dtds = dbConn.ExecuteBpl(new DiagnosticsTaskDeviceGetByDeviceIdTaskType { DeviceId = deviceId, TaskType = ti.TaskType }); } if (dtds != null && dtds.Count > 0) { exDeviceIds.Add(deviceId); } else { dbConn.ExecuteBpl(new DiagnosticsTaskDeviceAdd { TaskDeviceId = BplIdentity.Get(Guid.NewGuid().ToString()), TaskId = input.TaskId, DeviceId = deviceId }); } } dbConn.CommitTransaction(); if (exDeviceIds.Count > 0) { output.swlr = SwlResult.ALREADY_EXISTS; output.DeviceIds = exDeviceIds.ToArray(); } else { output.swlr = SwlResult.OK; } } Exit: Reply(output); }
private void _btnDeviceAddOnClick(object sender, EventArgs e) { if (_selectedTask == null) { MessageBox.Show("Select task first", "Task not selected", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } var exclDev = new List<DeviceLogisticInfo>(); foreach (var item in listDevices.Items) { var deviceItem = (DeviceListItem)item; var di = new DeviceLogisticInfo(); di.DeviceId = deviceItem.Device.DeviceId; exclDev.Add(di); } var frm = new FrmSelectDevice(exclDev); var dr = frm.ShowDialog(this); if (dr != DialogResult.OK) { return; } if ((frm.SelectedDevices == null) || (frm.SelectedDevices.Count == 0)) { return; } var req = new AddDevicesToDiagnosticsTask(); req.TaskId = _selectedTask.TaskId; req.DeviceIds = frm.SelectedDevices.Select(d => d.DeviceId).ToArray(); SendRequest(req); }