public ISOConnection ExportConnection(int loggedDataOrWorkItemID, EquipmentConfiguration adaptConnection) { ISOConnection isoConnection = new ISOConnection(); //First Connector Connector connector1 = DataModel.Catalog.Connectors.FirstOrDefault(c => c.Id.ReferenceId == adaptConnection.Connector1Id); if (connector1 != null) { DeviceElementConfiguration config = DataModel.Catalog.DeviceElementConfigurations.FirstOrDefault(c => c.Id.ReferenceId == connector1.DeviceElementConfigurationId); if (config != null) { string isoDeviceElementID = TaskDataMapper.InstanceIDMap.GetISOID(config.DeviceElementId); DeviceElement deviceElement = DataModel.Catalog.DeviceElements.FirstOrDefault(d => d.Id.ReferenceId == config.DeviceElementId); if (deviceElement != null) { string isoDeviceID = TaskDataMapper.InstanceIDMap.GetISOID(deviceElement.DeviceModelId); if (!string.IsNullOrEmpty(isoDeviceElementID) && !string.IsNullOrEmpty(isoDeviceElementID)) { isoConnection.DeviceIdRef_0 = isoDeviceID; isoConnection.DeviceElementIdRef_0 = TaskDataMapper.InstanceIDMap.GetISOID(connector1.Id.ReferenceId); //We want to refer to the Connector DeviceElement, not its parent referred by the config element } } } } //Second Connector Connector connector2 = DataModel.Catalog.Connectors.FirstOrDefault(c => c.Id.ReferenceId == adaptConnection.Connector2Id); if (connector2 != null) { DeviceElementConfiguration config = DataModel.Catalog.DeviceElementConfigurations.FirstOrDefault(c => c.Id.ReferenceId == connector2.DeviceElementConfigurationId); if (config != null) { string isoDeviceElementID = TaskDataMapper.InstanceIDMap.GetISOID(config.DeviceElementId); DeviceElement deviceElement = DataModel.Catalog.DeviceElements.FirstOrDefault(d => d.Id.ReferenceId == config.DeviceElementId); if (deviceElement != null) { string isoDeviceID = TaskDataMapper.InstanceIDMap.GetISOID(deviceElement.DeviceModelId); if (!string.IsNullOrEmpty(isoDeviceElementID) && !string.IsNullOrEmpty(isoDeviceElementID)) { isoConnection.DeviceIdRef_1 = isoDeviceID; isoConnection.DeviceElementIdRef_1 = TaskDataMapper.InstanceIDMap.GetISOID(connector2.Id.ReferenceId); } } } } //DataLogTriggers if (adaptConnection.DataLogTriggers.Any()) { string taskID = TaskDataMapper.InstanceIDMap.GetISOID(loggedDataOrWorkItemID); ISOTask task = TaskDataMapper.ISOTaskData.ChildElements.OfType <ISOTask>().First(t => t.TaskID == taskID); DataLogTriggerMapper dltMapper = new DataLogTriggerMapper(TaskDataMapper); task.DataLogTriggers = dltMapper.ExportDataLogTriggers(adaptConnection.DataLogTriggers).ToList(); } return(isoConnection); }
public ISOTask ExportPrescription(WorkItem workItem, int gridType, Prescription prescription) { ISOTask task = new ISOTask(TaskDataMapper.Version); //Task ID string taskID = workItem.Id.FindIsoId() ?? GenerateId(); task.TaskID = taskID; ExportIDs(workItem.Id, taskID); //Designator task.TaskDesignator = prescription.Description; //Customer Ref if (workItem.GrowerId.HasValue) { task.CustomerIdRef = TaskDataMapper.InstanceIDMap.GetISOID(workItem.GrowerId.Value); } //Farm Ref if (workItem.FarmId.HasValue) { task.FarmIdRef = TaskDataMapper.InstanceIDMap.GetISOID(workItem.FarmId.Value); } //Partfield Ref if (workItem.CropZoneId.HasValue) { task.PartFieldIdRef = TaskDataMapper.InstanceIDMap.GetISOID(workItem.CropZoneId.Value); } else if (workItem.FieldId.HasValue) { task.PartFieldIdRef = TaskDataMapper.InstanceIDMap.GetISOID(workItem.FieldId.Value); } //Comments if (workItem.Notes.Any()) { CommentAllocationMapper canMapper = new CommentAllocationMapper(TaskDataMapper); task.CommentAllocations = canMapper.ExportCommentAllocations(workItem.Notes).ToList(); } //Worker Allocations if (workItem.PeopleRoleIds.Any()) { WorkerAllocationMapper workerAllocationMapper = new WorkerAllocationMapper(TaskDataMapper); List <PersonRole> personRoles = new List <PersonRole>(); foreach (int id in workItem.PeopleRoleIds) { PersonRole personRole = DataModel.Catalog.PersonRoles.FirstOrDefault(p => p.Id.ReferenceId == id); if (personRole != null) { personRoles.Add(personRole); } } task.WorkerAllocations = workerAllocationMapper.ExportWorkerAllocations(personRoles).ToList(); } //Guidance Allocations if (workItem.GuidanceAllocationIds.Any()) { GuidanceAllocationMapper guidanceAllocationMapper = new GuidanceAllocationMapper(TaskDataMapper); List <GuidanceAllocation> allocations = new List <GuidanceAllocation>(); foreach (int id in workItem.GuidanceAllocationIds) { GuidanceAllocation allocation = DataModel.Documents.GuidanceAllocations.FirstOrDefault(p => p.Id.ReferenceId == id); if (allocation != null) { allocations.Add(allocation); } } task.GuidanceAllocations = guidanceAllocationMapper.ExportGuidanceAllocations(allocations).ToList(); } //Connections if (workItem.EquipmentConfigurationGroup != null) { task.Connections = _connectionMapper.ExportConnections(task, workItem.EquipmentConfigurationGroup.EquipmentConfigurations).ToList(); } //Status if (workItem.StatusUpdates == null || workItem.StatusUpdates.Count == 0) { task.TaskStatus = ISOEnumerations.ISOTaskStatus.Planned; } else if (workItem.StatusUpdates.Count == 1) { StatusUpdate lastStatus = workItem.StatusUpdates.OrderByDescending(su => su.TimeStamp).Last(); task.TaskStatus = ExportStatus(lastStatus.Status); } //Prescription if (prescription is RasterGridPrescription) { ExportRasterPrescription(task, prescription as RasterGridPrescription, gridType); } else if (prescription is VectorPrescription) { ExportVectorPrescription(task, prescription as VectorPrescription); } else if (prescription is ManualPrescription) { ExportManualPresciption(task, prescription as ManualPrescription); } //DataLogTriggers if (workItem.DataLogTriggers.Any()) { DataLogTriggerMapper dltMapper = new DataLogTriggerMapper(TaskDataMapper); task.DataLogTriggers = dltMapper.ExportDataLogTriggers(workItem.DataLogTriggers).ToList(); } return(task); }