private string GetSlug(PublishGroup publishGroup) { if (publishGroup.Slug.IsNotNullOrWhiteSpace()) { return(publishGroup.Slug); } var slug = publishGroup.Title.RemoveAllNonAlphaNumericCharacters().ToLower(); RockContext rockContext = new RockContext(); PublishGroupService publishGroupService = new PublishGroupService(rockContext); var takenSlug = publishGroupService.Queryable() .Where(pg => pg.Slug == slug && pg.GroupId != publishGroup.Group.Id).FirstOrDefault(); var i = 0; while (takenSlug != null) { i++; var testSlug = slug + i.ToString(); takenSlug = publishGroupService.Queryable().Where(pg => pg.Slug == testSlug).FirstOrDefault(); } if (i != 0) { slug += i.ToString(); } return(slug); }
private Dictionary <ImageFile, ImageLayouter> LayoutImage(PublishGroup publishGroup, MySortedList <ImageFile> bitmaps, bool isPOT, bool isSquare) { var result = new Dictionary <ImageFile, ImageLayouter>(); uint order = 0; while (bitmaps.Count > 0) { var layouter = new ImageLayouter(PublishTarget.Current.DefaultImageSize, PublishTarget.Current.MaxImageSize, isPOT, isSquare); var copyList = new MySortedList <ImageFile>(); copyList.AddRange(bitmaps); layouter.Generate(copyList); bitmaps.RemoveRange(layouter.UsedImages); if (layouter.ResultImageFixedSize != Size.Empty) { FileInfo newFile = new FileInfo(publishGroup.GenerateNewFileName(PathManager.OutputImagesPath, order)); var resultImage = new ImageFile(newFile, true, true) { TextureRect = new Rectangle(Point.Empty, layouter.ResultImageFixedSize) }; resultImage.Order = order; if (PublishTarget.Current.IsPVR) { resultImage.IsPVREnabled = layouter.UsedImages.All(usedImage => usedImage.IsPVREnabled); } else { resultImage.IsPVREnabled = false; } result.Add(resultImage, layouter); Logger.LogInfo("\t\tPack Image:{0}:\r\n", resultImage.FileInfo.Name); } else { foreach (var usedImage in layouter.UsedImages) { Logger.LogInfo("\t\tToo Big Image:{0}:\r\n", usedImage); } } ++order; } //foreach (var mergeResult in result) //{ // Logger.LogInfo("\t{0} {1}=>{2}:\r\n", mergeResult.Key, mergeResult.Value.ResultImageSize, // mergeResult.Value.ResultImageFixedSize); // foreach (var imageFile in mergeResult.Value.UsedImages) // { // Logger.LogInfo("\t\t{0}:\r\n", imageFile); // } //} return(result); }
/// <summary>Gets the publish group.</summary> /// <param name="rockContext">The rock context.</param> /// <param name="publishGroupService">The publish group service.</param> /// <returns></returns> private PublishGroup GetPublishGroup(RockContext rockContext = null, PublishGroupService publishGroupService = null) { rockContext = rockContext ?? new RockContext(); publishGroupService = publishGroupService ?? new PublishGroupService(rockContext); if (PageParameter(PageParameterKeys.PublishGroupId).IsNotNullOrWhiteSpace()) { var publishGroup = publishGroupService.Get(PageParameter(PageParameterKeys.PublishGroupId).AsInteger()); if (publishGroup != null) { return(publishGroup); } } if (PageParameter(PageParameterKeys.GroupId).IsNotNullOrWhiteSpace()) { int groupId = PageParameter(PageParameterKeys.GroupId).AsInteger(); GroupService groupService = new GroupService(rockContext); var group = groupService.Get(groupId); if (group != null) { var publishGroup = publishGroupService.Queryable() .Where(pg => pg.GroupId == groupId) .ToList() .LastOrDefault(); if (publishGroup != null) { return(publishGroup); } publishGroup = new PublishGroup { PublishGroupStatus = PublishGroupStatus.PendingApproval, RegistrationRequirement = RegistrationRequirement.NoRegistration, ChildcareOptions = ChildcareOptions.NoChildcare, Group = group, RequestorAliasId = CurrentPersonAliasId.Value, ConfirmationBody = GetAttributeValue(AttributeKeys.DefaultEmail), RegistrationDescription = GetAttributeValue(AttributeKeys.RegistrationDetails), ChildcareRegistrationDescription = GetAttributeValue(AttributeKeys.ChildcareRegistrationDetails) }; if (group.Schedule != null) { publishGroup.WeeklyDayOfWeek = group.Schedule.WeeklyDayOfWeek; publishGroup.WeeklyTimeOfDay = group.Schedule.WeeklyTimeOfDay; } if (group.GroupLocations.Any()) { publishGroup.MeetingLocation = group.GroupLocations.FirstOrDefault().Location.Name; } return(publishGroup); } } return(null); }
protected override void OnInit(EventArgs e) { base.OnInit(e); publishGroup = GetPublishGroup(); if (publishGroup != null) { publishGroup.LoadAttributes(); Rock.Attribute.Helper.AddEditControls(publishGroup, phAttributeEdits, false); } }
private PublishGroup GetPublishGroup(RockContext rockContext = null, PublishGroupService publishGroupService = null) { rockContext = rockContext ?? new RockContext(); publishGroupService = publishGroupService ?? new PublishGroupService(rockContext); if (PageParameter("PublishGroupId").IsNotNullOrWhiteSpace()) { var publishGroup = publishGroupService.Get(PageParameter("PublishGroupId").AsInteger()); if (publishGroup != null) { return(publishGroup); } } if (PageParameter("GroupId").IsNotNullOrWhiteSpace()) { int groupId = PageParameter("GroupId").AsInteger(); GroupService groupService = new GroupService(rockContext); var group = groupService.Get(groupId); if (group != null) { var publishGroup = publishGroupService.Queryable() .Where(pg => pg.GroupId == groupId) .ToList() .LastOrDefault(); if (publishGroup != null) { return(publishGroup); } publishGroup = new PublishGroup { PublishGroupStatus = PublishGroupStatus.Pending, Group = group, RequestorAliasId = CurrentPersonAliasId.Value }; if (group.Schedule != null) { publishGroup.WeeklyDayOfWeek = group.Schedule.WeeklyDayOfWeek; publishGroup.WeeklyTimeOfDay = group.Schedule.WeeklyTimeOfDay; } if (group.GroupLocations.Any()) { publishGroup.MeetingLocation = group.GroupLocations.FirstOrDefault().Location.Name; } return(publishGroup); } } return(null); }
public FileListFile(FileInfo filePath, bool enablePacking = true, bool isCoded = false) { FileInfo = filePath; ResourceName = GetResourceName(FileInfo.Name); Order = GetResourceOrder(FileInfo.Name); IsPacked = false; IsPVREnabled = false; EnablePacking = enablePacking; PublishGroup = PublishGroup.GetPublishGroup(FileInfo); Usage = FileInfo.DirectoryName.Replace(PathManager.InputImagesPath.FullName, string.Empty).TrimStart(new[] { '/', '\\' }); IsCoded = isCoded; }
public void UpdateFileInfo(FileInfo newFileInfo) { if (OriginalFileInfo == null) { OriginalFileInfo = FileInfo; } FileInfo = newFileInfo; ResourceName = GetResourceName(FileInfo.Name); Order = GetResourceOrder(FileInfo.Name); PublishGroup = PublishGroup.GetPublishGroup(FileInfo); Usage = FileInfo.DirectoryName.Replace(PathManager.InputImagesPath.FullName, string.Empty).TrimStart(new[] { '/', '\\' }); Md5 = null; }
public Dictionary <ImageFile, ImageLayouter> Generate(PublishGroup publishGroup, MySortedList <ImageFile> inputFiles) { bool isPOT = inputFiles.All(inputFile => inputFile.IsPOT); bool isSquare = inputFiles.All(inputFile => inputFile.IsSquare); var imageLayouts = LayoutImage(publishGroup, inputFiles, isPOT, isSquare); foreach (var imageLayouter in imageLayouts) { MergeImages(imageLayouter.Key, imageLayouter.Value); } return(imageLayouts); }
private void DisplayForm(PublishGroup publishGroup) { if (IsUserAuthorized(Rock.Security.Authorization.EDIT)) { iGroupImage.Required = true; } ddlAudience.BindToDefinedType(DefinedTypeCache.Get(Rock.SystemGuid.DefinedType.MARKETING_CAMPAIGN_AUDIENCE_TYPE.AsGuid())); ddlDayOfWeek.BindToEnum <DayOfWeek>(true); ltGroupName.Text = publishGroup.Group.Name; tbDescription.Text = publishGroup.Description.IsNotNullOrWhiteSpace() ? publishGroup.Description : publishGroup.Group.Description; iGroupImage.BinaryFileId = publishGroup.ImageId; drPublishDates.UpperValue = publishGroup.EndDateTime; drPublishDates.LowerValue = publishGroup.StartDateTime; ddlDayOfWeek.SelectedValue = publishGroup.WeeklyDayOfWeek != null ? (( int )publishGroup.WeeklyDayOfWeek).ToString() : ""; tTimeOfDay.SelectedTime = publishGroup.WeeklyTimeOfDay; dpStartDate.SelectedDate = publishGroup.StartDate; tbLocationName.Text = publishGroup.MeetingLocation; cbRequiresRegistration.Checked = publishGroup.RequiresRegistration; tbRegistrationLink.Text = publishGroup.RegistrationLink; cbAllowSpouseRegistration.Checked = publishGroup.AllowSpouseRegistration; cbChildcareAvailable.Checked = publishGroup.ChildcareAvailable; tbChildcareRegistrationLink.Text = publishGroup.ChildcareRegistrationLink; if (publishGroup.ContactPersonAlias != null) { pContactPerson.SetValue(publishGroup.ContactPersonAlias.Person); } tbContactEmail.Text = publishGroup.ContactEmail; tbContactPhoneNumber.Text = publishGroup.ContactPhoneNumber; tbConfirmationFromName.Text = publishGroup.ConfirmationFromName; tbConfirmationFromEmail.Text = publishGroup.ConfirmationEmail; tbConfirmationSubject.Text = publishGroup.ConfirmationSubject; ceConfirmationBody.Text = publishGroup.ConfirmationBody; ddlAudience.SetValues(publishGroup.AudienceValues.Select(i => i.Id.ToString())); if (publishGroup.Attributes.Any()) { pnlAttributes.Visible = true; phAttributeEdits.Controls.Clear(); Rock.Attribute.Helper.AddEditControls(publishGroup, phAttributeEdits, true); } }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summarysni> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad(EventArgs e) { if (!Page.IsPostBack) { ddlStatus.BindToEnum <PublishGroupStatus>(); PublishGroup publishGroup = GetPublishGroup(); if (publishGroup != null) { publishGroup.LoadAttributes(); pnlEdit.Visible = true; DisplayForm(publishGroup); } else { pnlEdit.Visible = false; pnlSelectGroup.Visible = true; } } }
public void UpdateSubPublishGroup(PublishGroup publishGroup) { if (PublishGroup == null || publishGroup == null) { PublishGroup = publishGroup; } else { if (PublishGroup.SubGroupName != publishGroup.GroupName) //when assign one file to multi group, it means to be a "Common" group. { //Logger.LogAllLine("Merge to group Common from {0},{1}", mPublishGroup.GroupName, value.GroupName); if (!PublishGroup.SubGroupName.Contains(publishGroup.GroupName)) { PublishGroup.SubGroupName += publishGroup.GroupName; } } //Don't change path //PublishGroup.PublishInfo.Merge(publishGroup.PublishInfo); } }
/// <summary> /// Sends the email. /// </summary> private bool SendMessage() { var rockContext = new RockContext(); var personAliasService = new PersonAliasService(rockContext); var groupService = new GroupService(rockContext); var publishGroupService = new PublishGroupService(rockContext); Group group = null; PublishGroup publishGroup = null; bool allowSMS = GetAttributeValue("EnableSMS").AsBoolean(); var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, this.CurrentPerson); List <Person> emailRecipients = new List <Person>(); List <Person> smsRecipients = new List <Person>(); // get person from url if (PageParameter("PersonGuid").IsNotNullOrWhiteSpace()) { Guid?personGuid = this.PageParameter("PersonGuid").AsGuidOrNull(); if (personGuid.HasValue) { var person = personAliasService.Queryable() .Where(pa => pa.Guid == personGuid.Value) .Select(pa => pa.Person) .FirstOrDefault(); var phoneNumber = person.PhoneNumbers.GetFirstSmsNumber(); if (person != null && allowSMS && person.CommunicationPreference == CommunicationType.SMS && phoneNumber.IsNotNullOrWhiteSpace()) { smsRecipients.Add(person); } else { emailRecipients.Add(person); } } } // get group members from url if (PageParameter("GroupGuid").IsNotNullOrWhiteSpace()) { Guid?groupGuid = PageParameter("GroupGuid").AsGuidOrNull(); if (groupGuid.HasValue) { group = groupService.Get(groupGuid.Value); var leaders = GetGroupLeaders(group); foreach (var leader in leaders) { var phonenumber = leader.PhoneNumbers.GetFirstSmsNumber(); if (allowSMS && leader.CommunicationPreference == CommunicationType.SMS && phonenumber.IsNotNullOrWhiteSpace()) { smsRecipients.Add(leader); } else { emailRecipients.Add(leader); } } } } // get group members from url if (PageParameter("PublishGroupGuid").IsNotNullOrWhiteSpace()) { Guid?publishGroupGuid = PageParameter("PublishGroupGuid").AsGuidOrNull(); if (publishGroupGuid.HasValue) { publishGroup = publishGroupService.Get(publishGroupGuid.Value); if (publishGroup != null) { var person = new Person { Email = publishGroup.ContactEmail }; emailRecipients.Add(person); } } } if (!emailRecipients.Any() && !smsRecipients.Any()) { Guid defaultRecipient = this.GetAttributeValue("DefaultRecipient").AsGuid(); var defaultPerson = personAliasService.Queryable() .Where(pa => pa.Guid == defaultRecipient) .Select(pa => pa.Person) .FirstOrDefault(); if (defaultPerson != null) { var phonenumber = defaultPerson.PhoneNumbers.GetFirstSmsNumber(); if (allowSMS && defaultPerson.CommunicationPreference == CommunicationType.SMS && phonenumber.IsNotNullOrWhiteSpace()) { smsRecipients.Add(defaultPerson); } else { emailRecipients.Add(defaultPerson); } } } if (!emailRecipients.Any() && !smsRecipients.Any()) { Guid defaultGroupGuid = GetAttributeValue("LeaderGroup").AsGuid(); var defaultGroup = groupService.Get(defaultGroupGuid); var leaders = GetGroupLeaders(defaultGroup); foreach (var leader in leaders) { var phonenumber = leader.PhoneNumbers.GetFirstSmsNumber(); if (allowSMS && leader.CommunicationPreference == CommunicationType.SMS && phonenumber.IsNotNullOrWhiteSpace()) { smsRecipients.Add(leader); } else { emailRecipients.Add(leader); } } } if (!cpCaptcha.IsAvailable || cpCaptcha.IsResponseValid()) { mergeFields.Add("NickName", tbFirstName.Text); mergeFields.Add("LastName", tbLastName.Text); mergeFields.Add("Email", tbEmail.Text); mergeFields.Add("PublishGroup", publishGroup); mergeFields.Add("Group", group); mergeFields.Add("Message", tbMessage.Text); mergeFields.Add("FromEmail", tbEmail.Text); mergeFields.Add("FromName", tbFirstName.Text + " " + tbLastName.Text); if (emailRecipients.Any()) { SendEmail(emailRecipients, mergeFields); } if (smsRecipients.Any()) { SendTextMessage(smsRecipients, mergeFields); } // display response message lResponse.Visible = true; pnlContactGroupLeaders.Visible = false; lResponse.Text = GetAttributeValue("ResponseMessage").ResolveMergeFields(mergeFields, GetAttributeValue("EnabledLavaCommands")); return(true); } else { lResponse.Visible = true; pnlContactGroupLeaders.Visible = true; lResponse.Text = "<div class='alert alert-danger'>You appear to be a computer. Check the box above and then click Submit.</div>"; return(false); } }
protected void btnSave_Click(object sender, EventArgs e) { RockContext rockContext = new RockContext(); PublishGroupService publishGroupService = new PublishGroupService(rockContext); publishGroup = GetPublishGroup(rockContext, publishGroupService); if (publishGroup.PublishGroupStatus == PublishGroupStatus.Approved) { var tempGroup = publishGroup.Group; publishGroup = ( PublishGroup )publishGroup.Clone(); publishGroup.Guid = Guid.NewGuid(); publishGroup.Id = 0; publishGroup.Group = tempGroup; publishGroupService.Add(publishGroup); } publishGroup.ImageId = iGroupImage.BinaryFileId; publishGroup.PublishGroupStatus = PublishGroupStatus.Pending; publishGroup.Description = tbDescription.Text; publishGroup.EndDateTime = drPublishDates.UpperValue.Value; publishGroup.StartDateTime = drPublishDates.LowerValue.Value; publishGroup.WeeklyDayOfWeek = ddlDayOfWeek.SelectedValueAsEnumOrNull <DayOfWeek>(); publishGroup.WeeklyTimeOfDay = tTimeOfDay.SelectedTime; publishGroup.StartDate = dpStartDate.SelectedDate; publishGroup.MeetingLocation = tbLocationName.Text; publishGroup.RequiresRegistration = cbRequiresRegistration.Checked; publishGroup.RegistrationLink = cbRequiresRegistration.Checked ? tbRegistrationLink.Text : ""; publishGroup.AllowSpouseRegistration = cbAllowSpouseRegistration.Checked; publishGroup.ChildcareAvailable = cbChildcareAvailable.Checked; publishGroup.ChildcareRegistrationLink = cbChildcareAvailable.Checked ? tbChildcareRegistrationLink.Text : ""; publishGroup.AudienceValues = GetSelectedAudiences(rockContext); publishGroup.ContactPersonAliasId = pContactPerson.PersonAliasId.Value; publishGroup.RequestorAliasId = CurrentPersonAliasId.Value; publishGroup.ContactEmail = tbContactEmail.Text; publishGroup.ContactPhoneNumber = tbContactPhoneNumber.Text; publishGroup.ConfirmationFromName = tbConfirmationFromName.Text; publishGroup.ConfirmationEmail = tbConfirmationFromEmail.Text; publishGroup.ConfirmationSubject = tbConfirmationSubject.Text; publishGroup.ConfirmationBody = ceConfirmationBody.Text; if (publishGroup.Id == 0) { publishGroupService.Add(publishGroup); } if (IsUserAuthorized(Rock.Security.Authorization.EDIT)) { publishGroup.PublishGroupStatus = PublishGroupStatus.Approved; publishGroup.Group.IsActive = true; publishGroup.Group.IsPublic = true; //remove all other publish groups for this computer publishGroupService.DeleteRange(publishGroupService.Queryable().Where(pg => pg.GroupId == publishGroup.GroupId && pg.Id != publishGroup.Id)); } ; //Set the binary file to not be temporary if (publishGroup.ImageId.HasValue) { BinaryFileService binaryFileService = new BinaryFileService(rockContext); var binaryFile = binaryFileService.Get(publishGroup.ImageId.Value); if (binaryFile != null) { binaryFile.IsTemporary = false; } } rockContext.SaveChanges(); publishGroup.LoadAttributes(rockContext); if (publishGroup.Attributes.Any()) { Rock.Attribute.Helper.GetEditValues(phAttributeEdits, publishGroup); publishGroup.SaveAttributeValues(rockContext); } if (IsUserAuthorized(Rock.Security.Authorization.EDIT)) { publishGroup.LaunchWorkflow(GetAttributeValue("CompleteWorkflow").AsGuidOrNull()); } else { publishGroup.LaunchWorkflow(GetAttributeValue("RequestWorkflow").AsGuidOrNull()); } NavigateToParentPage(); }
/// <summary>Displays the form.</summary> /// <param name="publishGroup">The publish group.</param> private void DisplayForm(PublishGroup publishGroup) { if (IsUserAuthorized(Rock.Security.Authorization.EDIT)) { btnSave.Text = "Save"; btnDraft.Visible = false; ddlStatus.SelectedValue = publishGroup.PublishGroupStatus.ConvertToInt().ToString(); } else { ddlStatus.Visible = false; } ddlAudience.BindToDefinedType(DefinedTypeCache.Get(Rock.SystemGuid.DefinedType.MARKETING_CAMPAIGN_AUDIENCE_TYPE.AsGuid())); ddlDayOfWeek.BindToEnum <DayOfWeek>(true); var groupPageId = PageCache.Get(Rock.SystemGuid.Page.GROUP_VIEWER.AsGuid()).Id; tbName.Text = publishGroup.Title; tbSlug.Text = GetSlug(publishGroup); if (tbSlug.Text.IsNotNullOrWhiteSpace()) { lSlug.Visible = true; lSlug.Text = GetAttributeValue(AttributeKeys.GroupRegistrationUrl) + tbSlug.Text; } ltGroupName.Text = string.Format("<a href='/page/{0}' target='_blank'>{1}</a>", groupPageId, publishGroup.Group.Name); tbDescription.Text = publishGroup.Description.IsNotNullOrWhiteSpace() ? publishGroup.Description : publishGroup.Group.Description; iGroupImage.BinaryFileId = publishGroup.ImageId; iGroupImage.Required = publishGroup.PublishGroupStatus == PublishGroupStatus.Approved; drPublishDates.UpperValue = publishGroup.EndDateTime; drPublishDates.LowerValue = publishGroup.StartDateTime; ddlDayOfWeek.SelectedValue = publishGroup.WeeklyDayOfWeek != null ? (( int )publishGroup.WeeklyDayOfWeek).ToString() : ""; tTimeOfDay.SelectedTime = publishGroup.WeeklyTimeOfDay; dpStartDate.SelectedDate = publishGroup.StartDate; tbCustomSchedule.Text = publishGroup.CustomSchedule; cbIsHidden.Checked = publishGroup.IsHidden; tbLocationName.Text = publishGroup.MeetingLocation; ddlRegistration.SelectedValue = publishGroup.RegistrationRequirement.ConvertToInt().ToString(); SwitchRegistrationRequirement(publishGroup.RegistrationRequirement); tbRegistrationDetails.Text = publishGroup.RegistrationDescription; ddlChildcareNeedRegistration.SelectedValue = publishGroup.ChildcareRegistrationLink.IsNotNullOrWhiteSpace() ? "1" : publishGroup.ChildcareRegistrationDescription.IsNotNullOrWhiteSpace() ? "2" : ""; SwitchChildcareOptions(publishGroup.ChildcareOptions); tbChildcareRegistrationDetails.Text = publishGroup.ChildcareRegistrationDescription; CheckRegistationConflict(); tbRegistrationLink.Text = publishGroup.RegistrationLink; cbAllowSpouseRegistration.Checked = publishGroup.AllowSpouseRegistration; tbRegistrationDetails.Text = publishGroup.RegistrationDescription; ddlChildcareOptions.SelectedValue = publishGroup.ChildcareOptions.ConvertToInt().ToString(); tbChildcareRegistrationLink.Text = publishGroup.ChildcareRegistrationLink; if (publishGroup.ContactPersonAlias != null) { pContactPerson.SetValue(publishGroup.ContactPersonAlias.Person); } tbContactEmail.Text = publishGroup.ContactEmail; tbContactPhoneNumber.Text = publishGroup.ContactPhoneNumber; tbConfirmationFromName.Text = publishGroup.ConfirmationFromName; tbConfirmationFromEmail.Text = publishGroup.ConfirmationEmail; tbConfirmationSubject.Text = publishGroup.ConfirmationSubject; ceConfirmationBody.Text = publishGroup.ConfirmationBody; ddlAudience.SetValues(publishGroup.AudienceValues.Select(i => i.Id.ToString())); if (publishGroup.Attributes.Any()) { pnlAttributes.Visible = true; phAttributeEdits.Controls.Clear(); Rock.Attribute.Helper.AddEditControls(publishGroup, phAttributeEdits, true); } }
/// <summary> /// Checks the settings. If false is returned, it's expected that the caller will make /// the nbNotice visible to inform the user of the "settings" error. /// </summary> /// <returns>true if settings are valid; false otherwise</returns> private bool CheckSettings() { _rockContext = _rockContext ?? new RockContext(); _autoFill = GetAttributeValue("AutoFillForm").AsBoolean(); string registerButtonText = GetAttributeValue("RegisterButtonAltText"); if (string.IsNullOrWhiteSpace(registerButtonText)) { registerButtonText = "Register"; } btnRegister.Text = registerButtonText; var publishGroupService = new PublishGroupService(_rockContext); if (_publishGroup == null) { var publishGroupGuid = PageParameter("PublishGroup").AsGuidOrNull(); if (publishGroupGuid.HasValue) { _publishGroup = publishGroupService.Get(publishGroupGuid.Value); } else { var slug = PageParameter("PublishGroup").ToLower(); _publishGroup = publishGroupService.Queryable().Where(pg => pg.Slug == slug).FirstOrDefault(); } } if (_publishGroup == null || _publishGroup.PublishGroupStatus != PublishGroupStatus.Approved) { nbNotice.Heading = "Unknown Group"; nbNotice.Text = "<p>This page requires a valid group identifying parameter and there was not one provided.</p>"; nbNotice.Visible = true; return(false); } if (_publishGroup.RegistrationLink.IsNotNullOrWhiteSpace()) { Response.Redirect(_publishGroup.RegistrationLink, false); Context.ApplicationInstance.CompleteRequest(); return(false); } _showSpouse = _publishGroup.AllowSpouseRegistration; _defaultGroupRole = _publishGroup.Group.GroupType.DefaultGroupRole; _dvcConnectionStatus = DefinedValueCache.Get(GetAttributeValue("ConnectionStatus").AsGuid()); if (_dvcConnectionStatus == null) { nbNotice.Heading = "Invalid Connection Status"; nbNotice.Text = "<p>The selected Connection Status setting does not exist.</p>"; return(false); } _dvcRecordStatus = DefinedValueCache.Get(GetAttributeValue("RecordStatus").AsGuid()); if (_dvcRecordStatus == null) { nbNotice.Heading = "Invalid Record Status"; nbNotice.Text = "<p>The selected Record Status setting does not exist.</p>"; return(false); } _married = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_MARITAL_STATUS_MARRIED.AsGuid()); _homeAddressType = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_HOME.AsGuid()); _familyType = GroupTypeCache.Get(Rock.SystemGuid.GroupType.GROUPTYPE_FAMILY.AsGuid()); _adultRole = _familyType.Roles.FirstOrDefault(r => r.Guid.Equals(Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT.AsGuid())); if (_married == null || _homeAddressType == null || _familyType == null || _adultRole == null) { nbNotice.Heading = "Missing System Value"; nbNotice.Text = "<p>There is a missing or invalid system value. Check the settings for Marital Status of 'Married', Location Type of 'Home', Group Type of 'Family', and Family Group Role of 'Adult'.</p>"; return(false); } return(true); }
/// <summary> /// Sends the email. /// </summary> private bool SendEmail() { var rockContext = new RockContext(); var personAliasService = new PersonAliasService(rockContext); var groupService = new GroupService(rockContext); var publishGroupService = new PublishGroupService(rockContext); Group group = null; PublishGroup publishGroup = null; var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, this.CurrentPerson); List <RecipientData> recipients = new List <RecipientData>(); // get person from url if (PageParameter("PersonGuid").IsNotNullOrWhiteSpace()) { Guid?personGuid = this.PageParameter("PersonGuid").AsGuidOrNull(); if (personGuid.HasValue) { var personAlias = personAliasService.Get(personGuid.Value); if (personAlias != null) { recipients.Add(new RecipientData(new CommunicationRecipient { PersonAlias = personAlias }, mergeFields)); } } } // get group members from url if (PageParameter("GroupGuid").IsNotNullOrWhiteSpace()) { Guid?groupGuid = PageParameter("GroupGuid").AsGuidOrNull(); if (groupGuid.HasValue) { group = groupService.Get(groupGuid.Value); var leaders = GetGroupLeaders(group); foreach (var leader in leaders) { recipients.Add(new RecipientData(new CommunicationRecipient { PersonAlias = leader.PrimaryAlias }, mergeFields)); } } } // get group members from url if (PageParameter("PublishGroupGuid").IsNotNullOrWhiteSpace()) { Guid?publishGroupGuid = PageParameter("PublishGroupGuid").AsGuidOrNull(); if (publishGroupGuid.HasValue) { publishGroup = publishGroupService.Get(publishGroupGuid.Value); if (publishGroup != null) { recipients.Add(new RecipientData(publishGroup.ContactEmail, mergeFields)); } } } if (!recipients.Any()) { Guid defaultRecipient = this.GetAttributeValue("DefaultRecipient").AsGuid(); var defaultPerson = personAliasService.Get(defaultRecipient); if (defaultPerson != null) { recipients.Add(new RecipientData(new CommunicationRecipient { PersonAlias = defaultPerson }, mergeFields)); } } if (!recipients.Any()) { Guid defaultGroupGuid = GetAttributeValue("LeaderGroup").AsGuid(); var defaultGroup = groupService.Get(defaultGroupGuid); var leaders = GetGroupLeaders(defaultGroup); foreach (var leader in leaders) { recipients.Add(new RecipientData(new CommunicationRecipient { PersonAlias = leader.PrimaryAlias }, mergeFields)); } } if (!cpCaptcha.IsAvailable || cpCaptcha.IsResponseValid()) { mergeFields.Add("NickName", tbFirstName.Text); mergeFields.Add("LastName", tbLastName.Text); mergeFields.Add("Email", tbEmail.Text); mergeFields.Add("PublishGroup", publishGroup); mergeFields.Add("Group", group); mergeFields.Add("Message", tbMessage.Text); mergeFields.Add("FromEmail", tbEmail.Text); mergeFields.Add("FromName", tbFirstName.Text + " " + tbLastName.Text); var message = new RockEmailMessage(); message.EnabledLavaCommands = GetAttributeValue("EnabledLavaCommands"); // send email foreach (var recipient in recipients) { message.AddRecipient(recipient); } message.FromEmail = tbEmail.Text; message.FromName = tbFirstName.Text + " " + tbLastName.Text; message.Subject = GetAttributeValue("Subject"); message.Message = GetAttributeValue("MessageBody"); message.AppRoot = ResolveRockUrl("~/"); message.ThemeRoot = ResolveRockUrl("~~/"); message.CreateCommunicationRecord = GetAttributeValue("SaveCommunicationHistory").AsBoolean(); message.Send(); // set response // display response message lResponse.Visible = true; pnlContactGroupLeaders.Visible = false; lResponse.Text = GetAttributeValue("ResponseMessage").ResolveMergeFields(mergeFields, GetAttributeValue("EnabledLavaCommands")); return(true); } else { lResponse.Visible = true; pnlContactGroupLeaders.Visible = true; lResponse.Text = "<div class='alert alert-danger'>You appear to be a computer. Check the box above and then click Submit.</div>"; return(false); } }
/// <summary>Saves the specified publish group status.</summary> /// <param name="publishGroupStatus">The publish group status.</param> private void Save(PublishGroupStatus publishGroupStatus) { RockContext rockContext = new RockContext(); PublishGroupService publishGroupService = new PublishGroupService(rockContext); PublishGroup publishGroup = GetPublishGroup(rockContext, publishGroupService); var slug = tbSlug.Text.ToLower().RemoveAllNonAlphaNumericCharacters(); tbSlug.Text = slug; //Test for already taken Slugs var isDuplicateSlug = publishGroupService.Queryable() .Where(pg => pg.Slug == slug && pg.Id != publishGroup.Id && pg.GroupId != publishGroup.Group.Id) .Any(); if (isDuplicateSlug) { nbSlug.Visible = true; return; } else { nbSlug.Visible = false; publishGroup.Slug = slug; } bool isApprover = false; if (IsUserAuthorized(Rock.Security.Authorization.EDIT)) { isApprover = true; } if (isApprover) { publishGroupStatus = ddlStatus.SelectedValueAsEnum <PublishGroupStatus>(); } else if (publishGroupStatus != PublishGroupStatus.Draft) { if (ddlRegistration.SelectedValue == "4" || (ddlChildcareOptions.SelectedValue == "2" && ddlChildcareNeedRegistration.SelectedValue == "2")) //Childcare required && Registration needed. { publishGroupStatus = PublishGroupStatus.PendingIT; } } if (publishGroup.PublishGroupStatus == PublishGroupStatus.Approved) { var tempGroup = publishGroup.Group; publishGroup = ( PublishGroup )publishGroup.Clone(); publishGroup.Guid = Guid.NewGuid(); publishGroup.Id = 0; publishGroup.Group = tempGroup; publishGroupService.Add(publishGroup); } publishGroup.Name = tbName.Text; publishGroup.ImageId = iGroupImage.BinaryFileId; publishGroup.PublishGroupStatus = publishGroupStatus; publishGroup.Description = tbDescription.Text; publishGroup.EndDateTime = drPublishDates.UpperValue.Value; publishGroup.StartDateTime = drPublishDates.LowerValue.Value; publishGroup.WeeklyDayOfWeek = ddlDayOfWeek.SelectedValueAsEnumOrNull <DayOfWeek>(); publishGroup.WeeklyTimeOfDay = tTimeOfDay.SelectedTime; publishGroup.CustomSchedule = tbCustomSchedule.Text; publishGroup.StartDate = dpStartDate.SelectedDate; publishGroup.MeetingLocation = tbLocationName.Text; publishGroup.IsHidden = cbIsHidden.Checked; publishGroup.RegistrationRequirement = ( RegistrationRequirement )ddlRegistration.SelectedValue.AsInteger(); publishGroup.RequiresRegistration = ddlRegistration.SelectedValue.AsInteger() > 0; //This is obsolete but left in for backward compatability publishGroup.RegistrationLink = publishGroup.RegistrationRequirement == RegistrationRequirement.CustomRegistration ? tbRegistrationLink.Text : ""; publishGroup.RegistrationDescription = tbRegistrationDetails.Text; publishGroup.ChildcareRegistrationDescription = ddlChildcareNeedRegistration.SelectedValue == "2" ? tbChildcareRegistrationDetails.Text : ""; publishGroup.AllowSpouseRegistration = cbAllowSpouseRegistration.Checked; publishGroup.ChildcareOptions = ( ChildcareOptions )ddlChildcareOptions.SelectedValue.AsInteger(); publishGroup.ChildcareAvailable = ddlChildcareOptions.SelectedValue.AsInteger() > 0; publishGroup.ChildcareRegistrationLink = publishGroup.ChildcareAvailable ? tbChildcareRegistrationLink.Text : ""; publishGroup.AudienceValues = GetSelectedAudiences(rockContext); publishGroup.ContactPersonAliasId = pContactPerson.PersonAliasId.Value; publishGroup.RequestorAliasId = CurrentPersonAliasId.Value; publishGroup.ContactEmail = tbContactEmail.Text; publishGroup.ContactPhoneNumber = tbContactPhoneNumber.Text; publishGroup.ConfirmationFromName = tbConfirmationFromName.Text; publishGroup.ConfirmationEmail = tbConfirmationFromEmail.Text; publishGroup.ConfirmationSubject = tbConfirmationSubject.Text; publishGroup.ConfirmationBody = ceConfirmationBody.Text; if (publishGroup.Id == 0) { publishGroupService.Add(publishGroup); } if (isApprover && publishGroupStatus == PublishGroupStatus.Approved) { publishGroup.Group.IsActive = true; publishGroup.Group.IsPublic = true; //remove all other publish groups for this computer publishGroupService.DeleteRange(publishGroupService.Queryable().Where(pg => pg.GroupId == publishGroup.GroupId && pg.Id != publishGroup.Id)); } ; //Set the binary file to not be temporary if (publishGroup.ImageId.HasValue) { BinaryFileService binaryFileService = new BinaryFileService(rockContext); var binaryFile = binaryFileService.Get(publishGroup.ImageId.Value); if (binaryFile != null) { binaryFile.IsTemporary = false; } } rockContext.SaveChanges(); publishGroup.LoadAttributes(rockContext); if (publishGroup.Attributes.Any()) { Rock.Attribute.Helper.GetEditValues(phAttributeEdits, publishGroup); publishGroup.SaveAttributeValues(rockContext); } if (publishGroup.PublishGroupStatus != PublishGroupStatus.Draft) { publishGroup.LaunchWorkflow(GetAttributeValue(AttributeKeys.Workflow).AsGuidOrNull()); } NavigateToParentPage(new Dictionary <string, string> { { "GroupId", publishGroup.GroupId.ToString() } }); }