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