示例#1
0
        private static void AssociateWorkItemWithWorkOrder(TSK task, ApplicationDataModel.ADM.ApplicationDataModel dataModel, WorkOrder workOrder)
        {
            var fieldId  = workOrder.FieldIds.FirstOrDefault();
            var workItem = new WorkItem
            {
                GrowerId = workOrder.GrowerId,
                FarmId   = workOrder.FarmIds.FirstOrDefault(),
                FieldId  = fieldId,
            };

            if (fieldId != 0)
            {
                var field = dataModel.Catalog.Fields.Single(f => f.Id.ReferenceId == fieldId);
                if (field.ActiveBoundaryId != 0)
                {
                    workItem.BoundaryId = field.ActiveBoundaryId;
                }
            }

            dataModel.Documents.WorkItems = dataModel.Documents.WorkItems.Concat(new[] { workItem });
            workOrder.WorkItemIds         = new List <int> {
                workItem.Id.ReferenceId
            };

            if (task.Items != null && task.Items.OfType <TZN>().Any())
            {
                AssociateRxWithWorkItem(task, dataModel, workItem);
            }
        }
示例#2
0
        private static void AreEqual(LoggedData loggedData, TSK tsk, Catalog catalog, string cardPath)
        {
            var grower = catalog.Growers.SingleOrDefault(x => x.Id.ReferenceId == loggedData.GrowerId);
            var farm   = catalog.Farms.SingleOrDefault(x => x.Id.ReferenceId == loggedData.FarmId);
            var field  = catalog.Fields.SingleOrDefault(x => x.Id.ReferenceId == loggedData.FieldId);

            if (grower != null)
            {
                Assert.AreEqual(grower.Id.FindIsoId(), tsk.C);
            }
            if (farm != null)
            {
                Assert.AreEqual(farm.Id.FindIsoId(), tsk.D);
            }
            if (field != null)
            {
                Assert.AreEqual(field.Id.FindIsoId(), tsk.E);
            }

            if (loggedData.TimeScopes != null && loggedData.TimeScopes.Any())
            {
                var tims = tsk.Items.Where(x => x.GetType() == typeof(TIM)).Cast <TIM>().ToList();
                TimAssert.AreEqual(loggedData.TimeScopes, tims);
            }

            if (loggedData.OperationData != null && loggedData.OperationData.Any())
            {
                var tlgs = tsk.Items.Where(x => x.GetType() == typeof(TLG)).Cast <TLG>().ToList();
                TlgAssert.AreEqual(loggedData.OperationData.ToList(), tlgs, catalog, cardPath);
            }
        }
示例#3
0
        private static void AssociateRxWithWorkItem(TSK task, ApplicationDataModel.ADM.ApplicationDataModel dataModel, WorkItem workItem)
        {
            var matchingRx = dataModel.Catalog.Prescriptions.SingleOrDefault(p => p.Id.FindIsoId() == task.A);

            if (matchingRx != null)
            {
                var operation = new WorkItemOperation();
                operation.PrescriptionId = matchingRx.Id.ReferenceId;
                dataModel.Documents.WorkItemOperations = dataModel.Documents.WorkItemOperations.Concat(new[] { operation });
                workItem.WorkItemOperationIds          = new List <int> {
                    operation.Id.ReferenceId
                };
            }
        }
        public void Setup()
        {
            _task     = new TSK();
            _taskList = new List <TSK> {
                _task
            };
            _dataPath  = Path.GetTempPath();
            _dataModel = new ApplicationDataModel {
                Catalog = new Catalog(), Documents = new Documents()
            };
            _linkedIds = new Dictionary <string, List <UniqueId> >();

            _statusUpdateMapperMock = new Mock <IStatusUpdateMapper>();

            _mapper = new WorkOrderMapper(_statusUpdateMapperMock.Object);
        }
示例#5
0
        private void AssociatePersonWithWorkOrder(TSK task, ApplicationDataModel.ADM.ApplicationDataModel dataModel, WorkOrder workOrder)
        {
            var person = dataModel.Catalog.Persons.SingleOrDefault(p => p.Id.FindIsoId() == task.F);

            if (person != null)
            {
                var personRole = new PersonRole {
                    PersonId = person.Id.ReferenceId, Role = new EnumeratedValue {
                        Representation = RepresentationInstanceList.dtPersonRole.ToModelRepresentation(), Value = DefinedTypeEnumerationInstanceList.dtiPersonRoleOperator.ToModelEnumMember()
                    }
                };
                dataModel.Catalog.PersonRoles.Add(personRole);
                workOrder.PersonRoleIds = new List <int> {
                    personRole.Id.ReferenceId
                };
            }
        }
示例#6
0
        private TSK Map(LoggedData loggedData, Catalog catalog, string taskDataPath, int taskNumber, TaskDocumentWriter taskDocumentWriter)
        {
            var taskId = "TSK" + taskNumber;

            taskDocumentWriter.Ids.Add(taskId, loggedData.Id);

            var tsk = new TSK
            {
                A     = taskId,
                B     = loggedData.Description,
                C     = FindGrowerId(loggedData.GrowerId, catalog),
                D     = FindFarmId(loggedData.FarmId, catalog),
                E     = FindFieldId(loggedData.FieldId, catalog),
                G     = TSKG.Item4,
                Items = MapItems(loggedData, taskDataPath, taskDocumentWriter)
            };

            return(tsk);
        }
示例#7
0
        public void Setup()
        {
            _tsk  = new TSK();
            _tsks = new List <TSK> {
                _tsk
            };
            _dataPath  = Path.GetTempPath();
            _documents = new Documents();
            _catalog   = new Catalog();
            _linkIds   = new Dictionary <string, List <UniqueId> >();

            _dataModel           = new ApplicationDataModel();
            _dataModel.Documents = _documents;
            _dataModel.Catalog   = _catalog;

            _operationDataMapper = new Mock <IOperationDataMapper>();

            _loggedDataMapper = new LoggedDataMapper(_operationDataMapper.Object);
        }
示例#8
0
        private WorkOrder Map(TSK task, ApplicationDataModel.ADM.ApplicationDataModel dataModel)
        {
            var workOrder = new WorkOrder();

            workOrder.Id.UniqueIds.Add(_uniqueIdMapper.Map(task.A));
            workOrder.Description   = task.B;
            workOrder.GrowerId      = GetGrower(dataModel.Catalog, task.C);
            workOrder.FarmIds       = GetFarms(dataModel.Catalog, task.D);
            workOrder.FieldIds      = GetFields(dataModel.Catalog, task.E);
            workOrder.StatusUpdates = new List <StatusUpdate>();
            workOrder.StatusUpdates.Add(_statusUpdateMapper.Map(task.G));

            if (!string.IsNullOrEmpty(task.F))
            {
                AssociatePersonWithWorkOrder(task, dataModel, workOrder);
            }
            AssociateWorkItemWithWorkOrder(task, dataModel, workOrder);

            return(workOrder);
        }
示例#9
0
        private TSK Map(WorkOrder workOrder, ApplicationDataModel.ADM.ApplicationDataModel dataModel, int taskNumber, TaskDocumentWriter taskDocumentWriter)
        {
            var taskId = "TSK" + taskNumber;

            taskDocumentWriter.Ids.Add(taskId, workOrder.Id);

            var task = new TSK
            {
                A = taskId,
                B = workOrder.Description,
                C = FindGrowerId(workOrder.GrowerId, dataModel.Catalog),
                G = TSKG.Item1 //TaskStatus.Planned
            };

            if (workOrder.WorkItemIds != null && workOrder.WorkItemIds.Any())
            {
                var workItem = dataModel.Documents.WorkItems.FirstOrDefault(item => item.Id.ReferenceId == workOrder.WorkItemIds.First());
                task.D = FindFarmId(workItem.FarmId, dataModel.Catalog);
                task.E = FindFieldId(workItem.FieldId, dataModel.Catalog);
                if (workItem.WorkItemOperationIds != null && workOrder.WorkItemIds.Any())
                {
                    var operation =
                        dataModel.Documents.WorkItemOperations.First(
                            item => item.Id.ReferenceId == workItem.WorkItemOperationIds.First());
                    if (operation.PrescriptionId != null && operation.PrescriptionId != 0)
                    {
                        var prescription =
                            dataModel.Catalog.Prescriptions.FirstOrDefault(
                                p => p.Id.ReferenceId == operation.PrescriptionId);
                        if (prescription != null)
                        {
                            PrescriptionWriter.WriteSingle(taskDocumentWriter, prescription);
                        }
                    }
                }
            }
            return(task);
        }
示例#10
0
        private LoggedData Map(TSK tsk, string dataPath, ApplicationDataModel.ADM.ApplicationDataModel dataModel, Dictionary <string, List <UniqueId> > linkedIds)
        {
            if (tsk == null || dataModel.Documents.LoggedData == null)
            {
                return(null);
            }

            var existingLoggedData = dataModel.Documents.LoggedData.FirstOrDefault(x => x.Id.FindIsoId() == tsk.A);

            if (existingLoggedData == null)
            {
                return(null);
            }

            var taskId = null as int?;
            var grd    = tsk.Items != null?tsk.Items.FirstOrDefault(x => x.GetType() == typeof(GRD)) : null;

            if (grd != null)
            {
                taskId = dataModel.Catalog.Prescriptions.Single(x => x.Id.FindIsoId() == tsk.A).Id.ReferenceId;
            }
            existingLoggedData.OperationData = _operationDataMapper.Map(tsk.Items.GetItemsOfType <TLG>(), taskId, dataPath, existingLoggedData.Id.ReferenceId, linkedIds);
            return(existingLoggedData);
        }
示例#11
0
        public List <TSK> Read(XPathNodeIterator iterator)
        {
            var tsks = new List <TSK>();

            if (iterator.Count == 0)
            {
                return(tsks);
            }

            foreach (XPathNavigator node in iterator)
            {
                if (node.SelectChildren("TLG", node.NamespaceURI).Count == 0)
                {
                    continue;
                }

                var tsk = new TSK
                {
                    A     = GetStringValue(node, "A"),
                    B     = GetStringValue(node, "B"),
                    C     = GetStringValue(node, "C"),
                    D     = GetStringValue(node, "D"),
                    E     = GetStringValue(node, "E"),
                    F     = GetStringValue(node, "F"),
                    G     = GetEnumValue(node, "G"),
                    H     = GetByteValue(node, "H"),
                    I     = GetByteValue(node, "I"),
                    J     = GetByteValue(node, "J"),
                    Items = GetItems(node),
                };

                tsks.Add(tsk);
            }

            return(tsks);
        }
示例#12
0
 public void Setup()
 {
     _tsk        = new TSK();
     _output     = new StringBuilder();
     _xmlBuilder = XmlWriter.Create(_output);
 }