Esempio n. 1
0
		/// <summary>
		/// Retrieves a ManagedItem instance from the database.  Only retrieves the minimum data.
		/// </summary>
		/// <param name="id"></param>
		public static ManagedItem GetBasic(Guid managedItemID)
		{
			string status = "";
			string templateDef = "";
			string itemNumber = "";
			string templateID = "";
            Guid stateID = Guid.Empty;
			using (DataSet ds = Data.ManagedItem.GetManagedItem(managedItemID))
			{
				DataRow row = ds.Tables[0].Rows[0];
				status = (string)row[Data.DataNames._C_Status];
                templateDef = (string)row[Data.DataNames._C_TemplateDef];
				templateID = row[Data.DataNames._C_TemplateID].ToString();
				itemNumber = row[Data.DataNames._C_ManagedItemNumber].ToString();
                try
                {
                    stateID = (Guid)row[Data.DataNames._C_StateID];
                }
                catch
                {
                    throw new Exception(string.Format("StateID not defined for ManagedItem {0}", itemNumber));
                }
			}

			ManagedItem managedItem = new ManagedItem(new Guid(templateID), managedItemID);

            XmlDocument xmlTemplateDoc = new XmlDocument();
            xmlTemplateDoc.PreserveWhitespace = false;
            xmlTemplateDoc.LoadXml(templateDef);

            managedItem.LoadWorkflow(xmlTemplateDoc);
            managedItem.LoadBasicTerms(xmlTemplateDoc);

            //populate external terms
            foreach (Term term in managedItem.FindAllBasicTerms(TermType.External))
            {
                ExternalTerm extTerm = term as ExternalTerm;
                if (extTerm == null)
                    throw new Exception(string.Format("The term '{0}' is not an external term.", term.Name));
                if (!extTerm.ValuesLoaded)
                    extTerm.LoadValues();
            }

            managedItem.State = managedItem.Workflow.FindState(stateID);
            managedItem.ItemNumber = itemNumber;
            return managedItem;
		}
Esempio n. 2
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. 3
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;
		}