Ejemplo n.º 1
0
		public string Send(ManagedItem managedItem, ITATSystem system, string sEnvironment, List<int> owningFacilityIDs)
		{
			//If the subject or body or recipients are empty, then do not send anything
			if ((string.IsNullOrEmpty(Subject)) || (string.IsNullOrEmpty(this.Text)) || (this.Recipients == null) || (this.Recipients.Count == 0))
				return string.Empty;

			string sError = string.Empty;

			string from = null;
			string subject = null;
			string text = null;
			Kindred.Common.Security.NameEmailPair[] emailRecipients = null;

			try
			{
				Kindred.Common.Email.Email email = new Kindred.Common.Email.Email();
				from = XMLNames._M_EmailFrom;
				subject = string.IsNullOrEmpty(Subject) ? "Subject Missing" : Subject;
				text = string.IsNullOrEmpty(Text) ? "Text Missing" : Text;

				Term.SubstituteBasicTerms(managedItem, ref text);
				Term.SubstituteSpecialTerms(ref text, managedItem);

				//Now complete the 'ManagedItemReference' email links - fill in the dynamically supplied info
				if (!string.IsNullOrEmpty(system.Name))
					text = text.Replace(XMLNames._M_SystemNameHolder, system.Name);
				if (!string.IsNullOrEmpty(sEnvironment))
					text = text.Replace(XMLNames._M_EnvironmentHolder, sEnvironment);
				text = text.Replace(XMLNames._M_ManagedItemIdHolder, managedItem.ManagedItemID.ToString());

				List<int> facilityIDs = null;
				if (owningFacilityIDs != null)
					facilityIDs = new List<int>(owningFacilityIDs);
				else
					facilityIDs = new List<int>();
				bool overrideFacilities = false;
				//Note - HasOwningFacility trumps use of filterFacilityTerm
				if (!(system.HasOwningFacility ?? false))
				{
					if (FilterFacilityTermID.HasValue)
					{
						Term filterFacilityTerm = managedItem.FindTerm(FilterFacilityTermID.Value);
						if (filterFacilityTerm != null)
						{
							FacilityTerm facilityTerm = null;
							if (filterFacilityTerm.TermType == TermType.Facility)
								facilityTerm = filterFacilityTerm as FacilityTerm;
							else
								facilityTerm = new FacilityTerm(false, managedItem, filterFacilityTerm);
							if (facilityTerm != null)
							{
								facilityIDs = facilityTerm.SelectedFacilityIDs;
								overrideFacilities = true;
							}
						}
					}
				}

				List<int> allRecipientFacilityIDs = new List<int>();
				
				if ((system.HasOwningFacility ?? false) || overrideFacilities)
				{
					foreach (string recipient in Recipients)
					{
						List<int> absoluteLevels = null;
						List<int> relativeLevels = null;
						system.GetFacilityLevels(recipient, ref absoluteLevels, ref relativeLevels);
						List<int> recipientFacilityIDs = FacilityCollection.FacilityAncestry(facilityIDs, absoluteLevels, relativeLevels);
						foreach (int facilityID in recipientFacilityIDs)
							if (!allRecipientFacilityIDs.Contains(facilityID))
								allRecipientFacilityIDs.Add(facilityID);
					}
					emailRecipients = SecurityHelper.GetEmailRecipients(system, Recipients, allRecipientFacilityIDs);
				}
				else
				{
					emailRecipients = SecurityHelper.GetEmailRecipients(system, Recipients);
				}

				EmailHelper.SendEmail(from, subject, text, emailRecipients, system, Recipients, allRecipientFacilityIDs);
			}
			catch (Exception e)
			{
				sError = string.Format("Email={0} Exception={1}", EmailInfo(from, emailRecipients, subject, text), e.ToString());
			}
			return sError;
		}
Ejemplo n.º 2
0
		private void GetPrimaryFacility(XmlDocument rawXML, List<string> validation)
		{
			foreach (Term term in _terms)
			{
				if (term.TermType == TermType.Facility)
				{
					Business.FacilityTerm facilityTerm = term as Business.FacilityTerm;
					if (facilityTerm.IsPrimary.HasValue)
					{
						if (facilityTerm.IsPrimary.Value)
						{
							_primaryFacility = facilityTerm;
							break;
						}
					}
				}
			}
		}
Ejemplo n.º 3
0
		//Generate the Terms collection (of Term) based on an xml document
        //Called by BasicTerms.Create, once from ITATSystem.LoadFromDatabase
 		public static List<Term> Create(XmlNode termsNode, ManagedItem managedItem, Template template)
		{
			List<Term> rtn = new List<Term>(termsNode.ChildNodes.Count);
            int order = 0;
			foreach (XmlNode termNode in termsNode)
			{
				Term t = null;
				switch (termNode.Name.ToString())
				{
					case XMLNames._E_Text:
                        t = new TextTerm(termNode, template, false);
						break;
					case XMLNames._E_Date:
                        t = new DateTerm(termNode, template, false);
						break;
					case XMLNames._E_MSO:
                        t = new MSOTerm(termNode, template, false);
						break;
					case XMLNames._E_Link:
                        t = new LinkTerm(termNode, template, false);
						break;
					case XMLNames._E_Facility:
                        t = new FacilityTerm(termNode, template, false);
						break;
					case XMLNames._E_Renewal:
                        t = new RenewalTerm(termNode, managedItem != null, template, false);
						break;
					case XMLNames._E_PickList:
                        t = new PickListTerm(termNode, template, false);
						break;
					case XMLNames._E_External:
                        t = new ExternalTerm(termNode, managedItem, template, false);
						break;
                    case XMLNames._E_PlaceHolderAttachments:
                        t = new PlaceHolderAttachments(termNode, template, false);
                        break;
                    case XMLNames._E_PlaceHolderComments:
                        t = new PlaceHolderComments(termNode, template, false);
                        break;
                    default:
						throw new XmlException(string.Format("Tried to create undefined term type {0}", termNode.Name.ToString()));
				}
                t.Order = order++;
                rtn.Add(t);
			}
            //If this is not a load of the ITATSystem terms, then ensure that the collection includes the Attachments and Comments terms.
            if (template != null)
            {
                List<Term> placeholderTerms = FindTermsOfType(rtn, (TermType.PlaceHolderAttachments | TermType.PlaceHolderComments));
                if (placeholderTerms == null || (placeholderTerms != null && placeholderTerms.Count == 0))
                {
                    //If this is the first time these are being added, then this should be under Basic Security.
                    Term t = new PlaceHolderAttachments(false, template, false);
                    t.TermGroupID = template.BasicSecurityTermGroupID;
                    t.Order = order++;
                    rtn.Add(t);

                    t = new PlaceHolderComments(false, template, false);
                    t.TermGroupID = template.BasicSecurityTermGroupID;
                    t.Order = order++;
                    rtn.Add(t);
                }
                else if (placeholderTerms.Count != 2)
                {
                    throw new Exception(string.Format("Encountered a PlaceHolder term count of {0:D} when 2 were expected", placeholderTerms.Count));
                }
            }
			return rtn;
		}
Ejemplo n.º 4
0
		private static Panel CreateFacilitySearchControl(FacilityTerm facilityTerm, bool canEditProfile, SecurityHelper securityHelper)
		{
			bool canEdit = canEditProfile;
			if (facilityTerm.SystemTerm && facilityTerm.OwningFacilityIDs.Count > 0)
				canEdit = false;

			Panel pnl = new Panel();
			pnl.ID = ControlID(facilityTerm.Name);
			pnl.CssClass = "NoBorder";

			if (canEdit)
			{

				FacilityCollection facilities;
				if (facilityTerm.UseUserSecurity ?? false)
					if (facilityTerm.IncludeChildren ?? false)
						facilities = FacilityCollection.FilteredFacilityList(securityHelper.AllUserFacilities, facilityTerm);
					else
						facilities = FacilityCollection.FilteredFacilityList(securityHelper.UserFacilities, facilityTerm);
				else
					facilities = FacilityCollection.FilteredFacilityList(FacilityCollection.FacilityList(Data.Facility.CorporateFacilityId, facilityTerm.IncludeChildren ?? false), facilityTerm);
				List<Data.FacilityDataRow> sortedFacilities = facilities.SortedList(facilityTerm.SortField);

				if (facilityTerm.MultiSelect ?? false)
				{
					pnl.Height = Unit.Pixel(4 + 20 * Math.Min(4, facilities.Count));
					pnl.Width = Unit.Percentage(100.0);

					MultiSelectGrid grd = new MultiSelectGrid();
					grd.CssClass = "MSG";
					grd.ID = pnl.ID + "_lst";
					grd.CheckboxColumn = 0;
					grd.BoundColumns = "FacilityId SapFacilityId FacilityName";
					grd.ColumnWidths = "0px 60px 100%";
					//grd.DataKeyNames = new string[] { "FacilityId" };
					grd.Container = pnl.ID;
					grd.HeaderContainer = "";
					grd.AutoGenerateColumns = false;
					grd.EnableClickEvent = false;
					grd.RowHighlighting = false;
					grd.EnableDoubleClickEvent = false;
					grd.EnableHeaderClick = false;
					grd.ShowHeader = false;
					grd.DataSource = sortedFacilities;
					grd.DataBind();
					pnl.Controls.Add(grd);
				}
				else
				{
					DropDownList ddl = new DropDownList();
					ddl.ID = pnl.ID + "_lst";
					ddl.Width = Unit.Parse("100%");
					Helper.LoadListControl(ddl, sortedFacilities, "SapIdPlusName", "FacilityId", "", true, "(Select a Facility)", "0");
					pnl.Controls.Add(ddl);
				}
			}
			else
			{
				Label lbl = new Label();
				lbl.Text = string.Format("{0} - {1}", facilityTerm.DisplayValue(XMLNames._TPS_SAPID), facilityTerm.DisplayValue(XMLNames._TPS_FacilityName));
				pnl.Controls.Add(lbl);
			}
			return pnl;
		}