/// <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; }
/// <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; }
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; }