/// <summary> /// Handles the Click event of the btnSubmit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSubmit_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { var rockContext = new RockContext(); var communication = UpdateCommunication( rockContext ); if ( communication != null ) { var mediumControl = GetMediumControl(); if ( mediumControl != null ) { mediumControl.OnCommunicationSave( rockContext ); } if ( _editingApproved && communication.Status == CommunicationStatus.PendingApproval ) { rockContext.SaveChanges(); // Redirect back to same page without the edit param var pageRef = new Rock.Web.PageReference(); pageRef.PageId = CurrentPageReference.PageId; pageRef.RouteId = CurrentPageReference.RouteId; pageRef.Parameters = new Dictionary<string, string>(); pageRef.Parameters.Add( "CommunicationId", communication.Id.ToString() ); Response.Redirect( pageRef.BuildUrl() ); Context.ApplicationInstance.CompleteRequest(); } else { string message = string.Empty; // Save the communication proir to checking recipients. communication.Status = CommunicationStatus.Draft; rockContext.SaveChanges(); if ( CheckApprovalRequired( communication.GetRecipientCount(rockContext) ) && !IsUserAuthorized( "Approve" ) ) { communication.Status = CommunicationStatus.PendingApproval; message = "Communication has been submitted for approval."; } else { communication.Status = CommunicationStatus.Approved; communication.ReviewedDateTime = RockDateTime.Now; communication.ReviewerPersonAliasId = CurrentPersonAliasId; if ( communication.FutureSendDateTime.HasValue && communication.FutureSendDateTime > RockDateTime.Now ) { message = string.Format( "Communication will be sent {0}.", communication.FutureSendDateTime.Value.ToRelativeDateString( 0 ) ); } else { message = "Communication has been queued for sending."; } } rockContext.SaveChanges(); // send approval email if needed (now that we have a communication id) if ( communication.Status == CommunicationStatus.PendingApproval ) { var approvalTransaction = new Rock.Transactions.SendCommunicationApprovalEmail(); approvalTransaction.CommunicationId = communication.Id; approvalTransaction.ApprovalPageUrl = HttpContext.Current.Request.Url.AbsoluteUri; Rock.Transactions.RockQueue.TransactionQueue.Enqueue( approvalTransaction ); } if ( communication.Status == CommunicationStatus.Approved && ( !communication.FutureSendDateTime.HasValue || communication.FutureSendDateTime.Value <= RockDateTime.Now ) ) { if ( GetAttributeValue( "SendWhenApproved" ).AsBoolean() ) { var transaction = new Rock.Transactions.SendCommunicationTransaction(); transaction.CommunicationId = communication.Id; transaction.PersonAlias = CurrentPersonAlias; Rock.Transactions.RockQueue.TransactionQueue.Enqueue( transaction ); } } ShowResult( message, communication ); } } } }
/// <summary> /// Handles the Click event of the btnSubmit control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSubmit_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { var rockContext = new RockContext(); var communication = UpdateCommunication( rockContext ); if ( communication != null ) { string message = string.Empty; if ( CheckApprovalRequired( communication.Recipients.Count ) && !IsUserAuthorized( "Approve" ) ) { communication.Status = CommunicationStatus.PendingApproval; message = "Communication has been submitted for approval."; } else { communication.Status = CommunicationStatus.Approved; communication.ReviewedDateTime = RockDateTime.Now; communication.ReviewerPersonAliasId = CurrentPersonAliasId; if ( communication.FutureSendDateTime.HasValue && communication.FutureSendDateTime > RockDateTime.Now) { message = string.Format( "Communication will be sent {0}.", communication.FutureSendDateTime.Value.ToRelativeDateString( 0 ) ); } else { message = "Communication has been queued for sending."; } } rockContext.SaveChanges(); // send approval email if needed (now that we have a communication id) if ( communication.Status == CommunicationStatus.PendingApproval ) { var approvalTransaction = new Rock.Transactions.SendCommunicationApprovalEmail(); approvalTransaction.CommunicationId = communication.Id; approvalTransaction.ApprovalPageUrl = HttpContext.Current.Request.Url.AbsoluteUri; Rock.Transactions.RockQueue.TransactionQueue.Enqueue( approvalTransaction ); } if ( communication.Status == CommunicationStatus.Approved && (!communication.FutureSendDateTime.HasValue || communication.FutureSendDateTime.Value <= RockDateTime.Now)) { if ( GetAttributeValue( "SendWhenApproved" ).AsBoolean() ) { var transaction = new Rock.Transactions.SendCommunicationTransaction(); transaction.CommunicationId = communication.Id; transaction.PersonAlias = CurrentPersonAlias; Rock.Transactions.RockQueue.TransactionQueue.Enqueue( transaction ); } } ShowResult( message, communication ); } } }