Esempio n. 1
0
		/// <summary>
		/// Creates a new instance of a ManagedItem using the specified template where the system uses the OwningFacility concept
		/// </summary>
		/// <param name="template">The template that this ManagedItem is based on</param>
		/// <param name="facilityIds">One or more facilities that this ManagedItem is associated with</param>
		public static ManagedItem Create(bool updateDatabase, Guid templateID, int? primaryFacilityID)
		{
			ManagedItem managedItem = new ManagedItem(templateID, Guid.NewGuid());
			managedItem.LoadWorkflow();

			//Load BasicTerms since we will need to update the TemplateDef based on the selected PrimaryID's
			managedItem.LoadBasicTerms();

			managedItem.SetDefaultValues();
			managedItem.LoadAttachments();
			managedItem.State = managedItem.Workflow.FindBaseState();

			if (primaryFacilityID.HasValue)
			{
				List<int> facilityIDs = new List<int>(1);
				facilityIDs.Add(primaryFacilityID.Value);
				managedItem.PrimaryFacility.SelectedFacilityIDs = new List<int>(facilityIDs);
				managedItem.PrimaryFacility.OwningFacilityIDs = new List<int>(facilityIDs);
			}

			ITATSystem system = ITATSystem.Get(managedItem.SystemID);
			string sFirstPart = GetFirstPart(system, managedItem);
			string sPrefix = string.Format("{0}{1}", sFirstPart, system.ManagedItemNumberSystemId);
			if (sPrefix.Length > 13)
				throw new Exception("The ManagedItem Number length will exceed 20 characters");
            int nSequenceNumber = 0;
            if (updateDatabase)
                nSequenceNumber = Data.ManagedItem.GetSequenceNumber(managedItem.SystemID, sPrefix);
            else
                nSequenceNumber = 1;
			if (nSequenceNumber <= 0)
			{
				if (primaryFacilityID.HasValue)
					throw new Exception(string.Format("SequenceNumber not found for SystemID {0}, FacilityID {1}", managedItem.SystemID.ToString(), primaryFacilityID.Value.ToString()));
				else
					throw new Exception(string.Format("SequenceNumber not found for SystemID {0}", managedItem.SystemID.ToString()));
			}

			managedItem.ItemNumber = string.Format("{0}{1}", sPrefix, nSequenceNumber.ToString("D7"));
			return managedItem;
		}
Esempio n. 2
0
        public static ManagedItem Get(Guid managedItemId, bool loadComplexLists, string state, Guid stateID, string status, string templateDef, string itemNumber, Guid templateID, bool orphaned)
		{
			ManagedItem managedItem = new ManagedItem(templateID, managedItemId);
			XmlDocument xmlTemplateDoc = new XmlDocument();
			xmlTemplateDoc.PreserveWhitespace = false;
			xmlTemplateDoc.LoadXml(templateDef);

			if (loadComplexLists)
			{
				//Need Workflow in order to access the states
				//Need BasicTerms in order to be able to modify the Primary FacilityID's
				managedItem.LoadWorkflow(xmlTemplateDoc);
				managedItem.LoadBasicTerms(xmlTemplateDoc);
				managedItem.LoadComplexLists(xmlTemplateDoc);
			}
			else
			{
				managedItem.LoadWithoutComplexLists(xmlTemplateDoc);
			}
			managedItem.LoadComments(xmlTemplateDoc);
			managedItem.LoadAttachments();
            if (!managedItem.TermGroupsLoaded)
                managedItem.LoadTermGroups(xmlTemplateDoc);
            managedItem.LoadDocuments(xmlTemplateDoc);
            if (stateID.Equals(Guid.Empty))
			    managedItem.State = managedItem.Workflow.FindState(state);
            else
                managedItem.State = managedItem.Workflow.FindState(stateID);
            managedItem.ItemNumber = itemNumber;
            managedItem.IsOrphaned = orphaned;
            
			return managedItem;
		}