public void BenevolenceRequestDateKeyJoinsCorrectly() { var expectedRecordCount = 15; var year = 2015; var rockContext = new RockContext(); var benevolenceRequestService = new BenevolenceRequestService(rockContext); var minDateValue = TestDataHelper.GetAnalyticsSourceMinDateForYear(rockContext, year); var maxDateValue = TestDataHelper.GetAnalyticsSourceMaxDateForYear(rockContext, year); for (var i = 0; i < 15; i++) { var benevolenceRequest = BuildBenevolenceRequest(rockContext, TestDataHelper.GetRandomDateInRange(minDateValue, maxDateValue)); benevolenceRequestService.Add(benevolenceRequest); } rockContext.SaveChanges(); var benevolenceRequests = benevolenceRequestService. Queryable("AnalyticsSourceDate"). Where(i => i.ForeignKey == benevolenceRequestForeignKey). Where(i => i.RequestSourceDate.CalendarYear == year); Assert.AreEqual(expectedRecordCount, benevolenceRequests.Count()); }
public void BenevolenceRequestDateKeySavesCorrectly() { var rockContext = new RockContext(); var benevolenceRequestService = new BenevolenceRequestService(rockContext); var benevolenceRequest = BuildBenevolenceRequest(rockContext, Convert.ToDateTime("3/15/2010")); benevolenceRequestService.Add(benevolenceRequest); rockContext.SaveChanges(); var benevolenceRequestId = benevolenceRequest.Id; // We're bypassing the model because the model doesn't user the BenevolenceRequestDateKey from the database, // but it still needs to be correct for inner joins to work correctly. var result = rockContext.Database. SqlQuery <int>($"SELECT RequestDateKey FROM BenevolenceRequest WHERE Id = {benevolenceRequestId}").First(); Assert.AreEqual(20100315, result); }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext ); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger(); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if ( lapAddress.Location != null ) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedItem.Value.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedItem.Value.AsIntegerOrNull(); if ( dpRequestDate.SelectedDate.HasValue ) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List<BenevolenceResultInfo> resultList = BenevolenceResultsState; BenevolenceResult benevolenceResult = null; foreach ( BenevolenceResult result in benevolenceRequest.BenevolenceResults.ToList() ) { if ( resultList.FirstOrDefault( r => r.ResultId == result.Id ) == null ) { benevolenceRequest.BenevolenceResults.Remove( result ); benevolenceResultService.Delete( result ); } } foreach ( BenevolenceResultInfo benevolenceResultInfo in resultList ) { if ( benevolenceResultInfo.ResultId == null ) { benevolenceResult = new BenevolenceResult(); benevolenceResult.Amount = benevolenceResultInfo.Amount; benevolenceResult.ResultSummary = benevolenceResultInfo.ResultSummary; benevolenceResult.ResultTypeValueId = benevolenceResultInfo.ResultTypeValueId; benevolenceResult.BenevolenceRequestId = benevolenceRequest.Id; benevolenceRequest.BenevolenceResults.Add( benevolenceResult ); } } if ( benevolenceRequest.IsValid ) { if ( benevolenceRequest.Id.Equals( 0 ) ) { benevolenceRequestService.Add( benevolenceRequest ); } rockContext.SaveChanges(); NavigateToParentPage(); } } }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext ); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger(); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.CampusId = cpCampus.SelectedCampusId; benevolenceRequest.ProvidedNextSteps = dtbProvidedNextSteps.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if ( lapAddress.Location != null ) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedValue.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedValue.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedValue.AsIntegerOrNull(); if ( dpRequestDate.SelectedDate.HasValue ) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List<BenevolenceResultInfo> resultListUI = BenevolenceResultsState; var resultListDB = benevolenceRequest.BenevolenceResults.ToList(); // remove any Benevolence Results that were removed in the UI foreach ( BenevolenceResult resultDB in resultListDB ) { if ( !resultListUI.Any( r => r.ResultId == resultDB.Id ) ) { benevolenceRequest.BenevolenceResults.Remove( resultDB ); benevolenceResultService.Delete( resultDB ); } } // add any Benevolence Results that were added in the UI foreach ( BenevolenceResultInfo resultUI in resultListUI ) { var resultDB = resultListDB.FirstOrDefault( r => r.Guid == resultUI.TempGuid ); if ( resultDB == null ) { resultDB = new BenevolenceResult(); resultDB.BenevolenceRequestId = benevolenceRequest.Id; resultDB.Guid = resultUI.TempGuid; benevolenceRequest.BenevolenceResults.Add( resultDB ); } resultDB.Amount = resultUI.Amount; resultDB.ResultSummary = resultUI.ResultSummary; resultDB.ResultTypeValueId = resultUI.ResultTypeValueId; } if ( benevolenceRequest.IsValid ) { if ( benevolenceRequest.Id.Equals( 0 ) ) { benevolenceRequestService.Add( benevolenceRequest ); } // get attributes benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.GetEditValues( phAttributes, benevolenceRequest ); rockContext.WrapTransaction( () => { rockContext.SaveChanges(); benevolenceRequest.SaveAttributeValues( rockContext ); } ); // update related documents var documentsService = new BenevolenceRequestDocumentService( rockContext ); // delete any images that were removed var orphanedBinaryFileIds = new List<int>(); var documentsInDb = documentsService.Queryable().Where( b => b.BenevolenceRequestId == benevolenceRequest.Id ).ToList(); foreach ( var document in documentsInDb.Where( i => !DocumentsState.Contains( i.BinaryFileId ) ) ) { orphanedBinaryFileIds.Add( document.BinaryFileId ); documentsService.Delete( document ); } // save documents int documentOrder = 0; foreach ( var binaryFileId in DocumentsState ) { // Add or Update the activity type var document = documentsInDb.FirstOrDefault( i => i.BinaryFileId == binaryFileId ); if ( document == null ) { document = new BenevolenceRequestDocument(); document.BenevolenceRequestId = benevolenceRequest.Id; benevolenceRequest.Documents.Add( document ); } document.BinaryFileId = binaryFileId; document.Order = documentOrder; documentOrder++; } rockContext.SaveChanges(); // redirect back to parent var personId = this.PageParameter( "PersonId" ).AsIntegerOrNull(); var qryParams = new Dictionary<string, string>(); if ( personId.HasValue ) { qryParams.Add( "PersonId", personId.ToString() ); } NavigateToParentPage( qryParams ); } } }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click(object sender, EventArgs e) { if (Page.IsValid) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); BenevolenceResultService benevolenceResultService = new BenevolenceResultService(rockContext); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter("BenevolenceRequestId").AsInteger(); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.CampusId = cpCampus.SelectedCampusId; benevolenceRequest.ProvidedNextSteps = dtbProvidedNextSteps.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if (lapAddress.Location != null) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedValue.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedValue.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedValue.AsIntegerOrNull(); if (dpRequestDate.SelectedDate.HasValue) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List <BenevolenceResultInfo> resultListUI = BenevolenceResultsState; var resultListDB = benevolenceRequest.BenevolenceResults.ToList(); // remove any Benevolence Results that were removed in the UI foreach (BenevolenceResult resultDB in resultListDB) { if (!resultListUI.Any(r => r.ResultId == resultDB.Id)) { benevolenceRequest.BenevolenceResults.Remove(resultDB); benevolenceResultService.Delete(resultDB); } } // add any Benevolence Results that were added in the UI foreach (BenevolenceResultInfo resultUI in resultListUI) { var resultDB = resultListDB.FirstOrDefault(r => r.Guid == resultUI.TempGuid); if (resultDB == null) { resultDB = new BenevolenceResult(); resultDB.BenevolenceRequestId = benevolenceRequest.Id; resultDB.Guid = resultUI.TempGuid; benevolenceRequest.BenevolenceResults.Add(resultDB); } resultDB.Amount = resultUI.Amount; resultDB.ResultSummary = resultUI.ResultSummary; resultDB.ResultTypeValueId = resultUI.ResultTypeValueId; } if (benevolenceRequest.IsValid) { if (benevolenceRequest.Id.Equals(0)) { benevolenceRequestService.Add(benevolenceRequest); } // get attributes benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.GetEditValues(phAttributes, benevolenceRequest); rockContext.WrapTransaction(() => { rockContext.SaveChanges(); benevolenceRequest.SaveAttributeValues(rockContext); }); // update related documents var documentsService = new BenevolenceRequestDocumentService(rockContext); // delete any images that were removed var orphanedBinaryFileIds = new List <int>(); var documentsInDb = documentsService.Queryable().Where(b => b.BenevolenceRequestId == benevolenceRequest.Id).ToList(); foreach (var document in documentsInDb.Where(i => !DocumentsState.Contains(i.BinaryFileId))) { orphanedBinaryFileIds.Add(document.BinaryFileId); documentsService.Delete(document); } // save documents int documentOrder = 0; foreach (var binaryFileId in DocumentsState) { // Add or Update the activity type var document = documentsInDb.FirstOrDefault(i => i.BinaryFileId == binaryFileId); if (document == null) { document = new BenevolenceRequestDocument(); document.BenevolenceRequestId = benevolenceRequest.Id; benevolenceRequest.Documents.Add(document); } document.BinaryFileId = binaryFileId; document.Order = documentOrder; documentOrder++; } rockContext.SaveChanges(); // redirect back to parent var personId = this.PageParameter("PersonId").AsIntegerOrNull(); var qryParams = new Dictionary <string, string>(); if (personId.HasValue) { qryParams.Add("PersonId", personId.ToString()); } NavigateToParentPage(qryParams); } } }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click(object sender, EventArgs e) { if (Page.IsValid) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); BenevolenceResultService benevolenceResultService = new BenevolenceResultService(rockContext); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter("BenevolenceRequestId").AsInteger(); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if (lapAddress.Location != null) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedItem.Value.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedItem.Value.AsIntegerOrNull(); if (dpRequestDate.SelectedDate.HasValue) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List <BenevolenceResultInfo> resultList = BenevolenceResultsState; BenevolenceResult benevolenceResult = null; foreach (BenevolenceResult result in benevolenceRequest.BenevolenceResults.ToList()) { if (resultList.FirstOrDefault(r => r.ResultId == result.Id) == null) { benevolenceRequest.BenevolenceResults.Remove(result); benevolenceResultService.Delete(result); } } foreach (BenevolenceResultInfo benevolenceResultInfo in resultList) { if (benevolenceResultInfo.ResultId == null) { benevolenceResult = new BenevolenceResult(); benevolenceResult.Amount = benevolenceResultInfo.Amount; benevolenceResult.ResultSummary = benevolenceResultInfo.ResultSummary; benevolenceResult.ResultTypeValueId = benevolenceResultInfo.ResultTypeValueId; benevolenceResult.BenevolenceRequestId = benevolenceRequest.Id; benevolenceRequest.BenevolenceResults.Add(benevolenceResult); } } if (benevolenceRequest.IsValid) { if (benevolenceRequest.Id.Equals(0)) { benevolenceRequestService.Add(benevolenceRequest); } rockContext.SaveChanges(); NavigateToParentPage(); } } }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click( object sender, EventArgs e ) { if ( Page.IsValid ) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext ); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger(); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if ( lapAddress.Location != null ) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedValue.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedValue.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedValue.AsIntegerOrNull(); if ( dpRequestDate.SelectedDate.HasValue ) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List<BenevolenceResultInfo> resultListUI = BenevolenceResultsState; var resultListDB = benevolenceRequest.BenevolenceResults.ToList(); // remove any Benevolence Results that were removed in the UI foreach ( BenevolenceResult resultDB in resultListDB ) { if ( !resultListUI.Any( r => r.ResultId == resultDB.Id ) ) { benevolenceRequest.BenevolenceResults.Remove( resultDB ); benevolenceResultService.Delete( resultDB ); } } // add any Benevolence Results that were added in the UI foreach ( BenevolenceResultInfo resultUI in resultListUI ) { var resultDB = resultListDB.FirstOrDefault( r => r.Guid == resultUI.TempGuid ); if ( resultDB == null ) { resultDB = new BenevolenceResult(); resultDB.BenevolenceRequestId = benevolenceRequest.Id; resultDB.Guid = resultUI.TempGuid; benevolenceRequest.BenevolenceResults.Add( resultDB ); } resultDB.Amount = resultUI.Amount; resultDB.ResultSummary = resultUI.ResultSummary; resultDB.ResultTypeValueId = resultUI.ResultTypeValueId; } if ( benevolenceRequest.IsValid ) { if ( benevolenceRequest.Id.Equals( 0 ) ) { benevolenceRequestService.Add( benevolenceRequest ); } rockContext.SaveChanges(); var personId = this.PageParameter( "PersonId" ).AsIntegerOrNull(); var qryParams = new Dictionary<string, string>(); if ( personId.HasValue ) { qryParams.Add( "PersonId", personId.ToString() ); } NavigateToParentPage( qryParams ); } } }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages) { errorMessages = new List <string>(); var mergeFields = GetMergeFields(action); var homePhoneValueId = DefinedValueCache.Get(SystemGuid.DefinedValue.PERSON_PHONE_TYPE_HOME).Id; var mobilePhoneValueId = DefinedValueCache.Get(SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE).Id; var workPhoneValueId = DefinedValueCache.Get(SystemGuid.DefinedValue.PERSON_PHONE_TYPE_WORK).Id; // get requester var requestPerson = new PersonAliasService(rockContext).Get(GetAttributeValue(action, "Person", true).AsGuid()).Person; if (requestPerson == null) { var errorMessage = "Could not determine the person for the request."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // get case worker var caseWorker = new PersonAliasService(rockContext).Get(GetAttributeValue(action, "CaseWorker", true).AsGuid())?.Person; // get request status var statusValue = DefinedValueCache.Get(GetAttributeValue(action, "RequestStatus")); if (statusValue == null) { var errorMessage = "Invalid request status provided."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // get request description var requestDescription = GetAttributeValue(action, "RequestDescription", true).ResolveMergeFields(mergeFields); if (string.IsNullOrWhiteSpace(requestDescription)) { var errorMessage = "Request description is required."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // get government id var governmentId = GetAttributeValue(action, "GovernmentId", true).ResolveMergeFields(mergeFields); // get campus int?campusId = CampusCache.Get(GetAttributeValue(action, "Campus").AsGuid())?.Id; // create benevolence request BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); BenevolenceRequest request = new BenevolenceRequest(); benevolenceRequestService.Add(request); request.RequestDateTime = RockDateTime.Now; request.RequestText = requestDescription; request.RequestedByPersonAliasId = requestPerson.PrimaryAliasId; request.FirstName = requestPerson.NickName; request.LastName = requestPerson.LastName; request.Email = requestPerson.Email; request.LocationId = requestPerson.GetHomeLocation()?.Id; request.GovernmentId = governmentId; if (campusId.HasValue) { request.CampusId = campusId.Value; } else { request.CampusId = requestPerson.GetCampus()?.Id; } var requestorPhoneNumbers = requestPerson.PhoneNumbers; if (requestorPhoneNumbers != null) { request.HomePhoneNumber = requestorPhoneNumbers.Where(p => p.NumberTypeValueId == homePhoneValueId).FirstOrDefault()?.NumberFormatted; request.CellPhoneNumber = requestorPhoneNumbers.Where(p => p.NumberTypeValueId == mobilePhoneValueId).FirstOrDefault()?.NumberFormatted; request.WorkPhoneNumber = requestorPhoneNumbers.Where(p => p.NumberTypeValueId == workPhoneValueId).FirstOrDefault()?.NumberFormatted; } if (caseWorker != null) { request.CaseWorkerPersonAliasId = caseWorker.PrimaryAliasId; } request.ConnectionStatusValueId = requestPerson.ConnectionStatusValueId; request.RequestStatusValueId = statusValue.Id; rockContext.SaveChanges(); SetWorkflowAttributeValue(action, "BenevolenceRequest", request.Guid); action.AddLogEntry($"Set 'Benevolence Request' attribute to '{request.Guid}'."); return(true); }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> public override bool Execute( RockContext rockContext, WorkflowAction action, Object entity, out List<string> errorMessages ) { errorMessages = new List<string>(); var mergeFields = GetMergeFields( action ); var homePhoneValueId = DefinedValueCache.Read( SystemGuid.DefinedValue.PERSON_PHONE_TYPE_HOME ).Id; var mobilePhoneValueId = DefinedValueCache.Read( SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE ).Id; var workPhoneValueId = DefinedValueCache.Read( SystemGuid.DefinedValue.PERSON_PHONE_TYPE_WORK ).Id; // get requester var requestPerson = new PersonAliasService( rockContext ).Get( GetAttributeValue( action, "Person", true ).AsGuid() ).Person; if (requestPerson == null ) { var errorMessage = "Could not determine the person for the request."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } // get case worker var caseWorker = new PersonAliasService( rockContext ).Get( GetAttributeValue( action, "CaseWorker", true ).AsGuid() )?.Person; // get request status var statusValue = DefinedValueCache.Read( GetAttributeValue( action, "RequestStatus" ) ); if ( statusValue == null ) { var errorMessage = "Invalid request status provided."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } // get request description var requestDescription = GetAttributeValue( action, "RequestDescription", true ).ResolveMergeFields( mergeFields ); if ( string.IsNullOrWhiteSpace( requestDescription ) ) { var errorMessage = "Request description is requried."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } // get government id var governmentId = GetAttributeValue( action, "GovernmentId", true ).ResolveMergeFields( mergeFields ); // get campus int? campusId = CampusCache.Read( GetAttributeValue( action, "Campus" ).AsGuid() )?.Id; // create benevolence request BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); BenevolenceRequest request = new BenevolenceRequest(); benevolenceRequestService.Add( request ); request.RequestDateTime = RockDateTime.Now; request.RequestText = requestDescription; request.RequestedByPersonAliasId = requestPerson.PrimaryAliasId; request.FirstName = requestPerson.NickName; request.LastName = requestPerson.LastName; request.Email = requestPerson.Email; request.LocationId = requestPerson.GetHomeLocation()?.Id; request.GovernmentId = governmentId; if ( campusId.HasValue ) { request.CampusId = campusId.Value; } else { request.CampusId = requestPerson.GetCampus()?.Id; } var requestorPhoneNumbers = requestPerson.PhoneNumbers; if ( requestorPhoneNumbers != null ) { request.HomePhoneNumber = requestorPhoneNumbers.Where( p => p.NumberTypeValueId == homePhoneValueId ).FirstOrDefault()?.NumberFormatted; request.CellPhoneNumber = requestorPhoneNumbers.Where( p => p.NumberTypeValueId == mobilePhoneValueId ).FirstOrDefault()?.NumberFormatted; request.WorkPhoneNumber = requestorPhoneNumbers.Where( p => p.NumberTypeValueId == workPhoneValueId ).FirstOrDefault()?.NumberFormatted; } if( caseWorker != null ) { request.CaseWorkerPersonAliasId = caseWorker.PrimaryAliasId; } request.ConnectionStatusValueId = requestPerson.ConnectionStatusValueId; request.RequestStatusValueId = statusValue.Id; rockContext.SaveChanges(); action.Activity.Workflow.SetAttributeValue( "BenevolenceRequest", request.Guid ); action.AddLogEntry( $"Set 'Benevolence Request' attribute to '{request.Guid}'." ); return true; }
/// <summary> /// Handles the Click event of the lbSave 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 lbSave_Click(object sender, EventArgs e) { if (Page.IsValid) { RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); BenevolenceResultService benevolenceResultService = new BenevolenceResultService(rockContext); BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter("BenevolenceRequestId").AsInteger(); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } benevolenceRequest.FirstName = dtbFirstName.Text; benevolenceRequest.LastName = dtbLastName.Text; benevolenceRequest.Email = ebEmail.Text; benevolenceRequest.RequestText = dtbRequestText.Text; benevolenceRequest.ResultSummary = dtbSummary.Text; benevolenceRequest.GovernmentId = dtbGovernmentId.Text; if (lapAddress.Location != null) { benevolenceRequest.LocationId = lapAddress.Location.Id; } benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId; benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedValue.AsIntegerOrNull(); benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedValue.AsIntegerOrNull(); benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedValue.AsIntegerOrNull(); if (dpRequestDate.SelectedDate.HasValue) { benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value; } benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number; benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number; benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number; List <BenevolenceResultInfo> resultListUI = BenevolenceResultsState; var resultListDB = benevolenceRequest.BenevolenceResults.ToList(); // remove any Benevolence Results that were removed in the UI foreach (BenevolenceResult resultDB in resultListDB) { if (!resultListUI.Any(r => r.ResultId == resultDB.Id)) { benevolenceRequest.BenevolenceResults.Remove(resultDB); benevolenceResultService.Delete(resultDB); } } // add any Benevolence Results that were added in the UI foreach (BenevolenceResultInfo resultUI in resultListUI) { var resultDB = resultListDB.FirstOrDefault(r => r.Guid == resultUI.TempGuid); if (resultDB == null) { resultDB = new BenevolenceResult(); resultDB.BenevolenceRequestId = benevolenceRequest.Id; resultDB.Guid = resultUI.TempGuid; benevolenceRequest.BenevolenceResults.Add(resultDB); } resultDB.Amount = resultUI.Amount; resultDB.ResultSummary = resultUI.ResultSummary; resultDB.ResultTypeValueId = resultUI.ResultTypeValueId; } if (benevolenceRequest.IsValid) { if (benevolenceRequest.Id.Equals(0)) { benevolenceRequestService.Add(benevolenceRequest); } rockContext.SaveChanges(); var personId = this.PageParameter("PersonId").AsIntegerOrNull(); var qryParams = new Dictionary <string, string>(); if (personId.HasValue) { qryParams.Add("PersonId", personId.ToString()); } NavigateToParentPage(qryParams); } } }