public EquipmentConfiguration ImportConnection(ISOTask task, ISOConnection isoConnection) { EquipmentConfiguration equipConfig = new EquipmentConfiguration(); StringBuilder descriptionBuilder = new StringBuilder(); //First Device Element int?connectorID = TaskDataMapper.InstanceIDMap.GetADAPTID(isoConnection.DeviceElementIdRef_0); if (connectorID.HasValue) { Connector adaptConnector1 = DataModel.Catalog.Connectors.Single(d => d.Id.ReferenceId == connectorID.Value); equipConfig.Connector1Id = adaptConnector1.Id.ReferenceId; ISODeviceElement isoDeviceElement = TaskDataMapper.DeviceElementHierarchies.GetISODeviceElementFromID(isoConnection.DeviceElementIdRef_0); descriptionBuilder.Append(isoDeviceElement.Device.DeviceDesignator); descriptionBuilder.Append(":"); descriptionBuilder.Append(isoDeviceElement.DeviceElementDesignator); } else { descriptionBuilder.Append("Unknown"); } descriptionBuilder.Append("<->"); //Second Device Element connectorID = TaskDataMapper.InstanceIDMap.GetADAPTID(isoConnection.DeviceElementIdRef_1); if (connectorID.HasValue) { Connector adaptConnector2 = DataModel.Catalog.Connectors.Single(d => d.Id.ReferenceId == connectorID.Value); equipConfig.Connector2Id = adaptConnector2.Id.ReferenceId; ISODeviceElement isoDeviceElement = TaskDataMapper.DeviceElementHierarchies.GetISODeviceElementFromID(isoConnection.DeviceElementIdRef_1); descriptionBuilder.Append(isoDeviceElement.Device.DeviceDesignator); descriptionBuilder.Append(":"); descriptionBuilder.Append(isoDeviceElement.DeviceElementDesignator); } else { descriptionBuilder.Append("Unknown"); } equipConfig.Description = descriptionBuilder.ToString(); //DataLogTriggers if (task.DataLogTriggers.Any()) { DataLogTriggerMapper dltMapper = new DataLogTriggerMapper(TaskDataMapper); dltMapper.ImportDataLogTriggers(task.DataLogTriggers); } return(equipConfig); }
private WorkItem ImportWorkItem(ISOTask isoPrescribedTask) { WorkItem workItem = new WorkItem(); //Task ID ImportIDs(workItem.Id, isoPrescribedTask.TaskID); //Grower ID workItem.GrowerId = TaskDataMapper.InstanceIDMap.GetADAPTID(isoPrescribedTask.CustomerIdRef); //Farm ID workItem.FarmId = TaskDataMapper.InstanceIDMap.GetADAPTID(isoPrescribedTask.FarmIdRef); //Field/CropZone int?pfdID = TaskDataMapper.InstanceIDMap.GetADAPTID(isoPrescribedTask.PartFieldIdRef); if (pfdID.HasValue) { if (DataModel.Catalog.CropZones.Any(c => c.Id.ReferenceId == pfdID.Value)) { workItem.CropZoneId = pfdID.Value; } else { workItem.FieldId = pfdID.Value; if (DataModel.Catalog.CropZones.Count(c => c.FieldId == pfdID) == 1) { //There is a single cropZone for the field. workItem.CropZoneId = DataModel.Catalog.CropZones.Single(c => c.FieldId == pfdID).Id.ReferenceId; } } } //Status workItem.StatusUpdates = new List <StatusUpdate>() { new StatusUpdate() { Status = ImportStatus(isoPrescribedTask.TaskStatus) } }; //Responsible Worker if (!string.IsNullOrEmpty(isoPrescribedTask.ResponsibleWorkerIdRef)) { ISOWorker worker = ISOTaskData.ChildElements.OfType <ISOWorker>().FirstOrDefault(w => w.WorkerId == isoPrescribedTask.ResponsibleWorkerIdRef); int? personID = TaskDataMapper.InstanceIDMap.GetADAPTID(isoPrescribedTask.ResponsibleWorkerIdRef); if (personID.HasValue) { //Create a Role PersonRole role = new PersonRole() { PersonId = personID.Value }; //Add to Catalog DataModel.Catalog.PersonRoles.Add(role); if (workItem.PeopleRoleIds == null) { workItem.PeopleRoleIds = new List <int>(); } //Add to Task workItem.PeopleRoleIds.Add(role.Id.ReferenceId); } } //Worker Allocation if (isoPrescribedTask.WorkerAllocations.Any()) { WorkerAllocationMapper wanMapper = new WorkerAllocationMapper(TaskDataMapper); List <PersonRole> personRoles = wanMapper.ImportWorkerAllocations(isoPrescribedTask.WorkerAllocations).ToList(); //Add to Catalog DataModel.Catalog.PersonRoles.AddRange(personRoles); //Add to Task if (workItem.PeopleRoleIds == null) { workItem.PeopleRoleIds = new List <int>(); } workItem.PeopleRoleIds.AddRange(personRoles.Select(p => p.Id.ReferenceId)); } if (isoPrescribedTask.GuidanceAllocations.Any()) { GuidanceAllocationMapper ganMapper = new GuidanceAllocationMapper(TaskDataMapper); List <GuidanceAllocation> allocations = ganMapper.ImportGuidanceAllocations(isoPrescribedTask.GuidanceAllocations).ToList(); //Add to Catalog List <GuidanceAllocation> guidanceAllocations = DataModel.Documents.GuidanceAllocations as List <GuidanceAllocation>; if (guidanceAllocations != null) { guidanceAllocations.AddRange(allocations); } //Add to Task if (workItem.GuidanceAllocationIds == null) { workItem.GuidanceAllocationIds = new List <int>(); } workItem.GuidanceAllocationIds.AddRange(allocations.Select(p => p.Id.ReferenceId)); } //Comments if (isoPrescribedTask.CommentAllocations.Any()) { CommentAllocationMapper canMapper = new CommentAllocationMapper(TaskDataMapper); workItem.Notes = canMapper.ImportCommentAllocations(isoPrescribedTask.CommentAllocations).ToList(); } //Prescription if (isoPrescribedTask.HasPrescription) { Prescription rx = PrescriptionMapper.ImportPrescription(isoPrescribedTask, workItem); if (rx == null) { return(workItem); } //Add to the Prescription the Catalog List <Prescription> prescriptions = DataModel.Catalog.Prescriptions as List <Prescription>; prescriptions?.Add(rx); //Add A WorkItemOperation WorkItemOperation operation = new WorkItemOperation(); operation.PrescriptionId = rx.Id.ReferenceId; //Add the operation to the Documents and reference on the WorkItem List <WorkItemOperation> operations = DataModel.Documents.WorkItemOperations as List <WorkItemOperation>; operations?.Add(operation); workItem.WorkItemOperationIds.Add(operation.Id.ReferenceId); //Track any prescription IDs to map to any completed TimeLog data _rxIDsByTask.Add(isoPrescribedTask.TaskID, rx.Id.ReferenceId); } //DataLogTriggers if (isoPrescribedTask.DataLogTriggers.Any()) { DataLogTriggerMapper dltMapper = new DataLogTriggerMapper(TaskDataMapper); workItem.DataLogTriggers = dltMapper.ImportDataLogTriggers(isoPrescribedTask.DataLogTriggers).ToList(); } return(workItem); }