/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns(BenevolenceRequest benevolenceRequest) { ddlRequestStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)), false); ddlConnectionStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)), true); Guid groupGuid = GetAttributeValue("CaseWorkerRole").AsGuid(); var personList = new GroupMemberService(new RockContext()) .Queryable("Person, Group") .Where(gm => gm.Group.Guid == groupGuid) .Select(gm => gm.Person) .ToList(); string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); if (benevolenceRequest.CaseWorkerPersonAlias != null && benevolenceRequest.CaseWorkerPersonAlias.Person != null && !personList.Select(p => p.Id).ToList().Contains(benevolenceRequest.CaseWorkerPersonAlias.Person.Id)) { personList.Add(benevolenceRequest.CaseWorkerPersonAlias.Person); } ddlCaseWorker.DataSource = personList.OrderBy(p => p.NickName).ThenBy(p => p.LastName).ToList(); ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert(0, new ListItem()); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summary> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (!Page.IsPostBack) { cpCampus.Campuses = CampusCache.All(); ShowDetail(PageParameter("BenevolenceRequestId").AsInteger()); } else { var rockContext = new RockContext(); BenevolenceRequest item = new BenevolenceRequestService(rockContext).Get(hfBenevolenceRequestId.ValueAsInt()); if (item == null) { item = new BenevolenceRequest(); } item.LoadAttributes(); phAttributes.Controls.Clear(); Rock.Attribute.Helper.AddEditControls(item, phAttributes, false, BlockValidationGroup, 2); confirmExit.Enabled = true; } }
public void BenevolenceRequestDateKeyGetsSetCorrectly() { var testList = TestDataHelper.GetAnalyticsSourceDateTestData(); foreach (var keyValue in testList) { BenevolenceRequest benevolenceRequest = new BenevolenceRequest(); benevolenceRequest.RequestDateTime = keyValue.Value; Assert.AreEqual(keyValue.Key, benevolenceRequest.RequestDateKey); } }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnInit(EventArgs e) { base.OnInit(e); // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it this.BlockUpdated += Block_BlockUpdated; this.AddConfigurationUpdateTrigger(upnlContent); gResults.DataKeyNames = new string[] { "TempGuid" }; gResults.Actions.AddClick += gResults_AddClick; gResults.Actions.ShowAdd = true; gResults.IsDeleteEnabled = true; // Gets any existing results and places them into the ViewState BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter("BenevolenceRequestId").AsInteger(); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = new BenevolenceRequestService(new RockContext()).Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } if (ViewState["BenevolenceResultInfoState"] == null) { List <BenevolenceResultInfo> brInfoList = new List <BenevolenceResultInfo>(); foreach (BenevolenceResult benevolenceResult in benevolenceRequest.BenevolenceResults) { BenevolenceResultInfo benevolenceResultInfo = new BenevolenceResultInfo(); benevolenceResultInfo.ResultId = benevolenceResult.Id; benevolenceResultInfo.Amount = benevolenceResult.Amount; benevolenceResultInfo.TempGuid = benevolenceResult.Guid; benevolenceResultInfo.ResultSummary = benevolenceResult.ResultSummary; benevolenceResultInfo.ResultTypeValueId = benevolenceResult.ResultTypeValueId; benevolenceResultInfo.ResultTypeName = benevolenceResult.ResultTypeValue.Value; brInfoList.Add(benevolenceResultInfo); } BenevolenceResultsState = brInfoList; } dlDocuments.ItemDataBound += DlDocuments_ItemDataBound; _caseWorkerGroupGuid = GetAttributeValue("CaseWorkerRole").AsGuidOrNull(); }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns(BenevolenceRequest benevolenceRequest) { ddlRequestStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)), false); ddlConnectionStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)), true); Guid groupGuid = GetAttributeValue("CaseWorkerGroup").AsGuid(); var listData = new GroupMemberService(new RockContext()).Queryable("Person, Group") .Where(gm => gm.Group.Guid == groupGuid) .Select(gm => gm.Person) .ToList(); ddlCaseWorker.DataSource = listData; ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert(0, new ListItem()); }
private BenevolenceRequest BuildBenevolenceRequest(RockContext rockContext, DateTime requestDate) { var requestStatuses = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)); var requestStatusValue = requestStatuses.DefinedValues.First().Id; var personAlias = new PersonAliasService(rockContext).Queryable().First(); var connectionStatus = new ConnectionStatusService(rockContext).Queryable().First(); var benevolenceRequest = new BenevolenceRequest(); benevolenceRequest.LastName = "Name"; benevolenceRequest.FirstName = "Test"; benevolenceRequest.RequestText = "Request Text"; benevolenceRequest.ForeignKey = benevolenceRequestForeignKey; benevolenceRequest.RequestDateTime = requestDate; benevolenceRequest.RequestStatusValueId = requestStatusValue; return(benevolenceRequest); }
private void LaunchWorkflow(RockContext rockContext, BenevolenceWorkflow benevolenceWorkflow, string name) { var workflowType = WorkflowTypeCache.Get(benevolenceWorkflow.WorkflowTypeId); if (workflowType != null && (workflowType.IsActive ?? true)) { BenevolenceRequest benevolenceRequest = null; if (BenevolenceRequestGuid.HasValue) { benevolenceRequest = new BenevolenceRequestService(rockContext).Get(BenevolenceRequestGuid.Value); var workflow = Rock.Model.Workflow.Activate(workflowType, name); List <string> workflowErrors; new WorkflowService(rockContext).Process(workflow, benevolenceRequest, out workflowErrors); } } }
/// <summary> /// Binds the attributes. /// </summary> private void BindAttributes() { // Parse the attribute filters AvailableAttributes = new List <AttributeCache>(); int entityTypeId = new BenevolenceRequest().TypeId; foreach (var attributeModel in new AttributeService(new RockContext()).Queryable() .Where(a => a.EntityTypeId == entityTypeId && a.IsGridColumn) .OrderByDescending(a => a.EntityTypeQualifierColumn) .ThenBy(a => a.Order) .ThenBy(a => a.Name)) { AvailableAttributes.Add(AttributeCache.Get(attributeModel)); } }
/// <summary> /// Handles the RowDataBound event of the gGroupMembers control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param> public void gList_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { BenevolenceRequest benevolenceRequest = e.Row.DataItem as BenevolenceRequest; if (benevolenceRequest != null) { Literal lName = e.Row.FindControl("lName") as Literal; if (lName != null) { if (benevolenceRequest.RequestedByPersonAlias != null) { lName.Text = String.Format("<a href=\"{0}\">{1}</a>", ResolveUrl(string.Format("~/Person/{0}", benevolenceRequest.RequestedByPersonAlias.PersonId)), benevolenceRequest.RequestedByPersonAlias.Person.FullName ?? ""); } else { lName.Text = String.Format("{0} {1}", benevolenceRequest.FirstName, benevolenceRequest.LastName); } } Literal lResults = e.Row.FindControl("lResults") as Literal; if (lResults != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<div class='col-md-12'>"); foreach (BenevolenceResult result in benevolenceRequest.BenevolenceResults) { if (result.Amount != null) { stringBuilder.Append(String.Format("<div class='row'>{0} ({1}{2:0.00})</div>", result.ResultTypeValue, GlobalAttributesCache.Value("CurrencySymbol"), result.Amount)); } else { stringBuilder.Append(String.Format("<div class='row'>{0}</div>", result.ResultTypeValue)); } } stringBuilder.Append("</div>"); lResults.Text = stringBuilder.ToString(); } } } }
/// <summary> /// Handles the Delete event of the gList control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param> protected void dfBenevolenceRequest_Click(object sender, RowEventArgs e) { var rockContext = new RockContext(); BenevolenceRequestService service = new BenevolenceRequestService(rockContext); BenevolenceRequest benevolenceRequest = service.Get(e.RowKeyId); if (benevolenceRequest != null) { string errorMessage; if (!service.CanDelete(benevolenceRequest, out errorMessage)) { mdGridWarning.Show(errorMessage, ModalAlertType.Information); return; } service.Delete(benevolenceRequest); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns(BenevolenceRequest benevolenceRequest) { dvpRequestStatus.DefinedTypeId = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)).Id; dvpConnectionStatus.DefinedTypeId = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)).Id; if (_caseWorkerGroupGuid.HasValue) { var personList = new GroupMemberService(new RockContext()) .Queryable("Person, Group") .Where(gm => gm.Group.Guid == _caseWorkerGroupGuid.Value) .Select(gm => gm.Person) .ToList(); string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); if (benevolenceRequest.CaseWorkerPersonAlias != null && benevolenceRequest.CaseWorkerPersonAlias.Person != null && !personList.Select(p => p.Id).ToList().Contains(benevolenceRequest.CaseWorkerPersonAlias.Person.Id)) { personList.Add(benevolenceRequest.CaseWorkerPersonAlias.Person); } ddlCaseWorker.DataSource = personList.OrderBy(p => p.NickName).ThenBy(p => p.LastName).ToList(); ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert(0, new ListItem()); ppCaseWorker.Visible = false; ddlCaseWorker.Visible = true; } else { ppCaseWorker.Visible = true; ddlCaseWorker.Visible = false; } }
/// <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> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail(int benevolenceRequestId) { BenevolenceRequest benevolenceRequest = null; var rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; var personId = this.PageParameter("PersonId").AsIntegerOrNull(); if (personId.HasValue) { var person = new PersonService(rockContext).Get(personId.Value); if (person != null) { benevolenceRequest.RequestedByPersonAliasId = person.PrimaryAliasId; benevolenceRequest.RequestedByPersonAlias = person.PrimaryAlias; } } } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if (benevolenceRequest.RequestedByPersonAlias != null) { ppPerson.SetValue(benevolenceRequest.RequestedByPersonAlias.Person); } else { ppPerson.SetValue(null); } if (benevolenceRequest.HomePhoneNumber != null) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if (benevolenceRequest.CellPhoneNumber != null) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if (benevolenceRequest.WorkPhoneNumber != null) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue(benevolenceRequest.Location); LoadDropDowns(benevolenceRequest); if (benevolenceRequest.RequestStatusValueId != null) { ddlRequestStatus.SetValue(benevolenceRequest.RequestStatusValueId); if (benevolenceRequest.RequestStatusValue.Value == "Approved") { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if (benevolenceRequest.RequestStatusValue.Value == "Denied") { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if (benevolenceRequest.ConnectionStatusValueId != null) { ddlConnectionStatus.SetValue(benevolenceRequest.ConnectionStatusValueId); } ddlCaseWorker.SetValue(benevolenceRequest.CaseWorkerPersonAliasId); BindGridFromViewState(); // call the OnSelectPerson of the person picker which will update the UI based on the selected person ppPerson_SelectPerson(null, null); }
/// <summary> /// Loads the BenevolenceResult data. /// </summary> /// <param name="csvData">The CSV data.</param> private int LoadBenevolenceResult(CSVInstance csvData) { var lookupContext = new RockContext(); var benevolenceResultService = new BenevolenceResultService(lookupContext); var benevolenceRequestService = new BenevolenceRequestService(lookupContext); var resultTypeDTGuid = Rock.SystemGuid.DefinedType.BENEVOLENCE_RESULT_TYPE.AsGuid(); var benevolenceResultList = new List <BenevolenceResult>(); var importedRequestIds = new List <int>(); var completed = 0; var importedCount = 0; var alreadyImportedCount = benevolenceResultService.Queryable().AsNoTracking().Count(i => i.ForeignKey != null); ReportProgress(0, $"Starting Benevolence Result import ({alreadyImportedCount:N0} already exist)."); string[] row; // Uses a look-ahead enumerator: this call will move to the next record immediately while ((row = csvData.Database.FirstOrDefault()) != null) { var benevolenceResultRequestId = row[BenevolenceResultRequestId]; var benevolenceResultType = row[BenevolenceResultType]; var benevolenceResultId = row[BenevolenceResultId]; var benevolenceResultAmount = row[BenevolenceResultAmount]; var benevolenceResultSummary = row[BenevolenceResultSummary]; var benevolenceResultCreatedById = row[BenevolenceResultCreatedById]; var benevolenceResultCreatedDate = row[BenevolenceResultCreatedDate]; // // Verify the Benevolence Result has a Result Type provided in the csv file. // if (string.IsNullOrWhiteSpace(benevolenceResultType)) { ReportProgress(0, $"Benevolence Result {benevolenceResultId} has no BenevolenceResultType value provided. Skipping Benevolence Result {benevolenceResultId}."); LogException("InvalidBenevolenceResult", string.Format("ResultId: {0} - Missing BenevolenceResultType value. Benevolence Result {0} was not imported.", benevolenceResultId)); completed++; continue; } BenevolenceRequest benevolenceRequest = null; if (benevolenceRequestService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceResultRequestId)) { benevolenceRequest = benevolenceRequestService.Queryable().AsNoTracking().FirstOrDefault(r => r.ForeignKey == benevolenceResultRequestId); } // // Verify the Benevolence Request exists. // if (benevolenceRequest == null || benevolenceRequest.Id < 1) { ReportProgress(0, $"Benevolence Request {benevolenceResultRequestId} not found. Skipping Benevolence Result {benevolenceResultId}."); LogException("InvalidBenevolenceResult", string.Format("ResultId: {0} - BenevolenceResultRequestId {1} does not exist in imported Benevolence Requests. Benevolence Result {0} was not imported.", benevolenceResultId, benevolenceResultRequestId)); completed++; continue; } // // Check that this Benevolence Result doesn't already exist. // var exists = false; if (alreadyImportedCount > 0) { exists = benevolenceResultService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceResultId); } if (!exists) { // Handle Result Type var resultTypeDV = FindDefinedValueByTypeAndName(lookupContext, resultTypeDTGuid, benevolenceResultType); if (resultTypeDV == null) { resultTypeDV = AddDefinedValue(new RockContext(), resultTypeDTGuid.ToString(), benevolenceResultType); } // Format created date var resultCreatedDate = ( DateTime )ParseDateOrDefault(benevolenceResultCreatedDate, Bulldozer.BulldozerComponent.ImportDateTime); // Handle created by int?createdByAliasId = null; var createdByPersonKeys = GetPersonKeys(benevolenceResultCreatedById); if (createdByPersonKeys != null) { createdByAliasId = createdByPersonKeys.PersonAliasId; } // // Create and populate the new Benevolence Result. // var benevolenceResult = new BenevolenceResult { BenevolenceRequestId = benevolenceRequest.Id, ResultSummary = benevolenceResultSummary, ResultTypeValueId = resultTypeDV.Id, Amount = benevolenceResultAmount.AsType <decimal?>(), ForeignKey = benevolenceResultId, ForeignId = benevolenceResultId.AsType <int?>(), CreatedDateTime = resultCreatedDate, CreatedByPersonAliasId = createdByAliasId, }; benevolenceResultList.Add(benevolenceResult); importedCount++; } // // Notify user of our status. // completed++; if (completed % (ReportingNumber * 10) < 1) { ReportProgress(0, $"{completed:N0} Benevolence Request records processed, {importedCount:N0} imported."); } if (completed % ReportingNumber < 1) { SaveBenevolenceResults(benevolenceResultList); ReportPartialProgress(); benevolenceResultList.Clear(); // Clear out variables benevolenceRequestService = new BenevolenceRequestService(lookupContext); } } if (benevolenceResultList.Any()) { SaveBenevolenceResults(benevolenceResultList); } ReportProgress(0, $"Finished Benevolence Result import: {importedCount:N0} records added."); return(completed); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail(int benevolenceRequestId) { BenevolenceRequest benevolenceRequest = null; var rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); pdAuditDetails.SetEntity(benevolenceRequest, ResolveRockUrl("~")); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; var personId = this.PageParameter("PersonId").AsIntegerOrNull(); if (personId.HasValue) { var person = new PersonService(rockContext).Get(personId.Value); if (person != null) { benevolenceRequest.RequestedByPersonAliasId = person.PrimaryAliasId; benevolenceRequest.RequestedByPersonAlias = person.PrimaryAlias; } } // hide the panel drawer that show created and last modified dates pdAuditDetails.Visible = false; } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dtbProvidedNextSteps.Text = benevolenceRequest.ProvidedNextSteps; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if (benevolenceRequest.Campus != null) { cpCampus.SelectedCampusId = benevolenceRequest.CampusId; } else { cpCampus.SelectedIndex = 0; } if (benevolenceRequest.RequestedByPersonAlias != null) { ppPerson.SetValue(benevolenceRequest.RequestedByPersonAlias.Person); } else { ppPerson.SetValue(null); } if (benevolenceRequest.HomePhoneNumber != null) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if (benevolenceRequest.CellPhoneNumber != null) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if (benevolenceRequest.WorkPhoneNumber != null) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue(benevolenceRequest.Location); LoadDropDowns(benevolenceRequest); if (benevolenceRequest.RequestStatusValueId != null) { ddlRequestStatus.SetValue(benevolenceRequest.RequestStatusValueId); if (benevolenceRequest.RequestStatusValue.Value == "Approved") { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if (benevolenceRequest.RequestStatusValue.Value == "Denied") { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if (benevolenceRequest.ConnectionStatusValueId != null) { ddlConnectionStatus.SetValue(benevolenceRequest.ConnectionStatusValueId); } ddlCaseWorker.SetValue(benevolenceRequest.CaseWorkerPersonAliasId); BindGridFromViewState(); DocumentsState = benevolenceRequest.Documents.OrderBy(s => s.Order).Select(s => s.BinaryFileId).ToList(); BindDocuments(true); benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.AddEditControls(benevolenceRequest, phAttributes, true, BlockValidationGroup, 2); // call the OnSelectPerson of the person picker which will update the UI based on the selected person ppPerson_SelectPerson(null, null); hfBenevolenceRequestId.Value = benevolenceRequest.Id.ToString(); }
/// <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> /// Handles the RowDataBound event of the gGroupMembers control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param> public void gList_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) { if (e.Row.RowType != DataControlRowType.DataRow) { return; } if (e.Row.RowType == DataControlRowType.DataRow) { BenevolenceRequest benevolenceRequest = e.Row.DataItem as BenevolenceRequest; if (benevolenceRequest != null) { Literal lName = e.Row.FindControl("lName") as Literal; if (lName != null) { if (benevolenceRequest.RequestedByPersonAlias != null) { lName.Text = string.Format("<a href=\"{0}\">{1}</a>", ResolveUrl(string.Format("~/Person/{0}", benevolenceRequest.RequestedByPersonAlias.PersonId)), benevolenceRequest.RequestedByPersonAlias.Person.FullName ?? string.Empty); } else { lName.Text = string.Format("{0} {1}", benevolenceRequest.FirstName, benevolenceRequest.LastName); } } Literal lResults = e.Row.FindControl("lResults") as Literal; if (lResults != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<div class='col-md-12'>"); foreach (BenevolenceResult result in benevolenceRequest.BenevolenceResults) { if (result.Amount != null) { stringBuilder.Append(string.Format("<div class='row'>{0} ({1})</div>", result.ResultTypeValue, result.Amount.FormatAsCurrency())); } else { stringBuilder.Append(string.Format("<div class='row'>{0}</div>", result.ResultTypeValue)); } } stringBuilder.Append("</div>"); lResults.Text = stringBuilder.ToString(); } HighlightLabel hlStatus = e.Row.FindControl("hlStatus") as HighlightLabel; if (hlStatus != null) { switch (benevolenceRequest.RequestStatusValue.Value) { case "Approved": hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; return; case "Denied": hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; return; case "Pending": hlStatus.Text = "Pending"; hlStatus.LabelType = LabelType.Default; return; default: hlStatus.Text = benevolenceRequest.RequestStatusValue.Value; hlStatus.LabelType = LabelType.Info; return; } } } } }
/// <summary> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail( int benevolenceRequestId ) { BenevolenceRequest benevolenceRequest = null; var rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); pdAuditDetails.SetEntity( benevolenceRequest, ResolveRockUrl( "~" ) ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; var personId = this.PageParameter( "PersonId" ).AsIntegerOrNull(); if ( personId.HasValue ) { var person = new PersonService( rockContext ).Get( personId.Value ); if ( person != null ) { benevolenceRequest.RequestedByPersonAliasId = person.PrimaryAliasId; benevolenceRequest.RequestedByPersonAlias = person.PrimaryAlias; } } // hide the panel drawer that show created and last modified dates pdAuditDetails.Visible = false; } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dtbProvidedNextSteps.Text = benevolenceRequest.ProvidedNextSteps; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if ( benevolenceRequest.Campus != null ) { cpCampus.SelectedCampusId = benevolenceRequest.CampusId; } else { cpCampus.SelectedIndex = 0; } if ( benevolenceRequest.RequestedByPersonAlias != null ) { ppPerson.SetValue( benevolenceRequest.RequestedByPersonAlias.Person ); } else { ppPerson.SetValue( null ); } if ( benevolenceRequest.HomePhoneNumber != null ) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if ( benevolenceRequest.CellPhoneNumber != null ) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if ( benevolenceRequest.WorkPhoneNumber != null ) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue( benevolenceRequest.Location ); LoadDropDowns( benevolenceRequest ); if ( benevolenceRequest.RequestStatusValueId != null ) { ddlRequestStatus.SetValue( benevolenceRequest.RequestStatusValueId ); if ( benevolenceRequest.RequestStatusValue.Value == "Approved" ) { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if ( benevolenceRequest.RequestStatusValue.Value == "Denied" ) { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if ( benevolenceRequest.ConnectionStatusValueId != null ) { ddlConnectionStatus.SetValue( benevolenceRequest.ConnectionStatusValueId ); } ddlCaseWorker.SetValue( benevolenceRequest.CaseWorkerPersonAliasId ); BindGridFromViewState(); DocumentsState = benevolenceRequest.Documents.OrderBy( s => s.Order ).Select( s => s.BinaryFileId ).ToList(); BindDocuments( true ); benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.AddEditControls( benevolenceRequest, phAttributes, true, BlockValidationGroup, 2 ); // call the OnSelectPerson of the person picker which will update the UI based on the selected person ppPerson_SelectPerson( null, null ); hfBenevolenceRequestId.Value = benevolenceRequest.Id.ToString(); }
/// <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> /// Loads the drop downs. /// </summary> private void LoadDropDowns( BenevolenceRequest benevolenceRequest ) { ddlRequestStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS ) ), false ); ddlConnectionStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS ) ), true ); Guid groupGuid = GetAttributeValue( "CaseWorkerGroup" ).AsGuid(); var listData = new GroupMemberService( new RockContext() ).Queryable( "Person, Group" ) .Where( gm => gm.Group.Guid == groupGuid ) .Select( gm => gm.Person ) .ToList(); ddlCaseWorker.DataSource = listData; ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert( 0, new ListItem() ); }
/// <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> /// Maps the people attributes to date/text attributes. /// Also converts attribute comments to person notes. /// </summary> /// <param name="tableData">The table data.</param> /// <param name="totalRows">The total rows.</param> private void MapAttribute(IQueryable <Row> tableData, long totalRows = 0) { var lookupContext = new RockContext(); var personService = new PersonService(lookupContext); var personAttributes = new AttributeService(lookupContext).GetByEntityTypeId(PersonEntityTypeId).Include("Categories").AsNoTracking().ToList(); var importedAttributeCount = lookupContext.AttributeValues.Count(v => v.Attribute.EntityTypeId == PersonEntityTypeId && v.ForeignKey != null); var baptizedHereAttribute = personAttributes.FirstOrDefault(a => a.Key.Equals("BaptizedHere", StringComparison.InvariantCultureIgnoreCase)); var newBenevolences = new List <BenevolenceRequest>(); var peopleToUpdate = new Dictionary <int, Person>(); if (totalRows == 0) { totalRows = tableData.Count(); } var completedItems = 0; var percentage = (totalRows - 1) / 100 + 1; ReportProgress(0, $"Verifying attribute import ({totalRows:N0} found, {importedAttributeCount:N0} already exist)."); foreach (var row in tableData.OrderBy(r => r["Attribute_Name"]).ThenByDescending(r => r["Start_Date"] != null).ThenBy(r => r["Start_Date"]).ThenBy(r => r["End_Date"]).Where(r => r != null)) { // add the new attribute var attributeGroupName = row["Attribute_Group_Name"] as string; var attributeName = row["Attribute_Name"] as string; var attributeDate = row["Start_Date"] as DateTime?; attributeDate = attributeDate ?? row["End_Date"] as DateTime?; var attributeComment = row["Comment"] as string; var attributeCreator = row["Staff_Individual_ID"] as int?; int?campusId = null; if (attributeGroupName.IsNullOrWhiteSpace() && attributeName.IsNullOrWhiteSpace()) { continue; } // strip attribute group name (will become a category) if (attributeGroupName.Any(n => ValidDelimiters.Contains(n))) { campusId = campusId ?? GetCampusId(attributeGroupName); if (campusId.HasValue) { attributeGroupName = StripPrefix(attributeGroupName, campusId); } } // strip attribute name if (attributeName.Any(n => ValidDelimiters.Contains(n))) { campusId = campusId ?? GetCampusId(attributeName); if (campusId.HasValue) { attributeName = StripPrefix(attributeName, campusId); } } var personBaptizedHere = false; var isBenevolenceAttribute = false; if (attributeName.StartsWith("Baptism", StringComparison.CurrentCultureIgnoreCase)) { // match the core Baptism attribute attributeName = "Baptism Date"; personBaptizedHere = attributeCreator.HasValue; } else if (attributeName.StartsWith("Benevolence", StringComparison.CurrentCultureIgnoreCase)) { // set a flag to create benevolence items isBenevolenceAttribute = true; attributeName = attributeName.Replace("Benevolence", string.Empty).Trim(); } else if (string.IsNullOrWhiteSpace(attributeName)) { attributeName = attributeGroupName; } Attribute primaryAttribute = null, campusAttribute = null; // don't create custom attributes for benevolence items if (!isBenevolenceAttribute) { // create attributes if they don't exist var attributeKey = attributeName.RemoveSpecialCharacters(); primaryAttribute = personAttributes.FirstOrDefault(a => a.Key.Equals(attributeKey, StringComparison.CurrentCultureIgnoreCase)); if (primaryAttribute == null) { primaryAttribute = AddEntityAttribute(lookupContext, PersonEntityTypeId, string.Empty, string.Empty, $"{attributeKey} imported {ImportDateTime}", attributeGroupName, attributeName, attributeKey, attributeDate.HasValue ? DateFieldTypeId : TextFieldTypeId, importPersonAliasId: ImportPersonAliasId ); personAttributes.Add(primaryAttribute); } // attribute already exists, add the new category else if (!primaryAttribute.Categories.Any(c => c.Name.Equals(attributeGroupName))) { var attributeCategory = GetCategory(lookupContext, AttributeEntityTypeId, null, attributeGroupName, false, "EntityTypeId", PersonEntityTypeId.ToString()); primaryAttribute.Categories.Add(attributeCategory); } // only create a campus attribute if there was a campus prefix campusAttribute = personAttributes.FirstOrDefault(a => a.Key.Equals($"{attributeKey}Campus", StringComparison.CurrentCultureIgnoreCase)); if (campusAttribute == null && campusId.HasValue) { campusAttribute = AddEntityAttribute(lookupContext, PersonEntityTypeId, string.Empty, string.Empty, $"{attributeKey}Campus imported {ImportDateTime}", attributeGroupName, $"{attributeName} Campus", $"{attributeKey}Campus", CampusFieldTypeId ); personAttributes.Add(campusAttribute); } } // make sure we have a valid person to assign to var individualId = row["Individual_Id"] as int?; var matchingPerson = GetPersonKeys(individualId, null, includeVisitors: false); if (matchingPerson != null) { var person = !peopleToUpdate.ContainsKey(matchingPerson.PersonId) ? personService.Queryable(includeDeceased: true).FirstOrDefault(p => p.Id == matchingPerson.PersonId) : peopleToUpdate[matchingPerson.PersonId]; if (person != null) { int?creatorAliasId = null; var noteCreator = GetPersonKeys(attributeCreator); if (noteCreator != null) { creatorAliasId = noteCreator.PersonAliasId; } if (!isBenevolenceAttribute) { // could have multiple attributes assigned to this person, don't overwrite previous if (person.Attributes == null || person.AttributeValues == null) { person.Attributes = new Dictionary <string, AttributeCache>(); person.AttributeValues = new Dictionary <string, AttributeValueCache>(); } var attributeValue = attributeDate.HasValue ? attributeDate.Value.ToString("yyyy-MM-dd") : attributeComment; if (string.IsNullOrWhiteSpace(attributeValue)) { // add today's date so that the attribute at least gets a value attributeValue = RockDateTime.Now.ToString("yyyy-MM-dd"); } AddEntityAttributeValue(lookupContext, primaryAttribute, person, attributeValue); if (personBaptizedHere) { AddEntityAttributeValue(lookupContext, baptizedHereAttribute, person, "Yes"); } // Add the campus attribute value if (campusAttribute != null && campusId.HasValue) { var campus = CampusList.FirstOrDefault(c => c.Id.Equals(campusId)); AddEntityAttributeValue(lookupContext, campusAttribute, person, campus.Guid.ToString()); } // convert the attribute comment to a person note if (!string.IsNullOrWhiteSpace(attributeComment)) { // add the note to the person AddEntityNote(lookupContext, PersonEntityTypeId, person.Id, attributeName, attributeComment, false, false, attributeGroupName, null, true, attributeDate, $"Imported {ImportDateTime}", creatorAliasId); } } // benevolences require a date else if (attributeDate.HasValue) { var requestText = !string.IsNullOrWhiteSpace(attributeComment) ? attributeComment : "N/A"; var benevolence = new BenevolenceRequest { CampusId = campusId, RequestDateTime = attributeDate.Value, FirstName = person.FirstName, LastName = person.LastName, Email = person.Email, RequestedByPersonAliasId = person.PrimaryAliasId, ConnectionStatusValueId = person.ConnectionStatusValueId, CaseWorkerPersonAliasId = creatorAliasId, RequestStatusValueId = ParseBenevolenceStatus(attributeName), RequestText = requestText, CreatedDateTime = attributeDate.Value, ModifiedDateTime = attributeDate.Value, CreatedByPersonAliasId = creatorAliasId, ModifiedByPersonAliasId = ImportPersonAliasId, ForeignKey = $"Benevolence imported {ImportDateTime}" }; newBenevolences.Add(benevolence); } // store the person lookup for this batch if (!peopleToUpdate.ContainsKey(matchingPerson.PersonId)) { peopleToUpdate.Add(matchingPerson.PersonId, person); } else { peopleToUpdate[matchingPerson.PersonId] = person; } } } completedItems++; if (completedItems % percentage < 1) { var percentComplete = completedItems / percentage; ReportProgress(percentComplete, $"{completedItems:N0} attributes imported ({percentComplete}% complete)."); } if (completedItems % ReportingNumber < 1) { SaveAttributes(peopleToUpdate); SaveBenevolenceRequests(newBenevolences); // reset so context doesn't bloat lookupContext.Dispose(); lookupContext = new RockContext(); personService = new PersonService(lookupContext); peopleToUpdate.Clear(); newBenevolences.Clear(); ReportPartialProgress(); } } SaveAttributes(peopleToUpdate); SaveBenevolenceRequests(newBenevolences); ReportProgress(100, $"Finished attribute import: {completedItems:N0} attributes imported."); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event. /// </summary> /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnLoad( EventArgs e ) { base.OnLoad( e ); if ( !Page.IsPostBack ) { cpCampus.Campuses = CampusCache.All(); ShowDetail( PageParameter( "BenevolenceRequestId" ).AsInteger() ); } else { var rockContext = new RockContext(); BenevolenceRequest item = new BenevolenceRequestService(rockContext).Get( hfBenevolenceRequestId.ValueAsInt()); if (item == null ) { item = new BenevolenceRequest(); } item.LoadAttributes(); phAttributes.Controls.Clear(); Rock.Attribute.Helper.AddEditControls( item, phAttributes, false, BlockValidationGroup, 2 ); confirmExit.Enabled = true; } }
/// <summary> /// Binds the attributes. /// </summary> private void BindAttributes() { // Parse the attribute filters AvailableAttributes = new List<AttributeCache>(); int entityTypeId = new BenevolenceRequest().TypeId; foreach ( var attributeModel in new AttributeService( new RockContext() ).Queryable() .Where( a => a.EntityTypeId == entityTypeId && a.IsGridColumn ) .OrderByDescending( a => a.EntityTypeQualifierColumn ) .ThenBy( a => a.Order ) .ThenBy( a => a.Name ) ) { AvailableAttributes.Add( AttributeCache.Read( attributeModel ) ); } }
/// <summary> /// Loads the drop downs. /// </summary> private void LoadDropDowns( BenevolenceRequest benevolenceRequest ) { ddlRequestStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS ) ), false ); ddlConnectionStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS ) ), true ); Guid groupGuid = GetAttributeValue( "CaseWorkerRole" ).AsGuid(); var personList = new GroupMemberService( new RockContext() ) .Queryable( "Person, Group" ) .Where( gm => gm.Group.Guid == groupGuid ) .Select( gm => gm.Person ) .ToList(); string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); if ( benevolenceRequest.CaseWorkerPersonAlias != null && benevolenceRequest.CaseWorkerPersonAlias.Person != null && !personList.Select( p => p.Id ).ToList().Contains( benevolenceRequest.CaseWorkerPersonAlias.Person.Id ) ) { personList.Add( benevolenceRequest.CaseWorkerPersonAlias.Person ); } ddlCaseWorker.DataSource = personList.OrderBy( p => p.NickName ).ThenBy( p => p.LastName ).ToList(); ddlCaseWorker.DataTextField = "FullName"; ddlCaseWorker.DataValueField = "PrimaryAliasId"; ddlCaseWorker.DataBind(); ddlCaseWorker.Items.Insert( 0, new ListItem() ); }
/// <summary> /// Loads the Benevolence Requests data. /// </summary> /// <param name="csvData">The CSV data.</param> private int LoadBenevolenceRequest(CSVInstance csvData) { var lookupContext = new RockContext(); var benevolenceRequestService = new BenevolenceRequestService(lookupContext); var importedBenevolenceRequests = benevolenceRequestService.Queryable().Count(p => p.ForeignKey != null); var requestStatusDTGuid = Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS.AsGuid(); var requestStatusPendingDVId = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.BENEVOLENCE_PENDING), lookupContext).Id; var homePhoneTypeDVId = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_HOME), lookupContext).Id; var mobilePhoneTypeDVId = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE), lookupContext).Id; var workPhoneTypeDVId = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_WORK), lookupContext).Id; var benevolenceRequestList = new List <BenevolenceRequest>(); var completedItems = 0; var addedItems = 0; ReportProgress(0, string.Format("Verifying benevolence request import ({0:N0} already imported).", importedBenevolenceRequests)); string[] row; // Uses a look-ahead enumerator: this call will move to the next record immediately while ((row = csvData.Database.FirstOrDefault()) != null) { var benevolenceRequestText = row[BenevolenceRequestText]; var benevolenceRequestDate = row[BenevolenceRequestDate]; var benevolenceRequestId = row[BenevolenceRequestId]; var benevolenceRequestFirstName = row[BenevolenceRequestFirstName]; var benevolenceRequestLastName = row[BenevolenceRequestLastName]; var benevolenceRequestEmail = row[BenevolenceRequestEmail]; var benevolenceRequestCreatedById = row[BenevolenceRequestCreatedById]; var benevolenceRequestCreatedDate = row[BenevolenceRequestCreatedDate]; var benevolenceRequestRequestedById = row[BenevolenceRequestRequestedById]; var benevolenceRequestCaseWorkerId = row[BenevolenceRequestCaseWorkerId]; var benevolenceRequestCellPhone = row[BenevolenceRequestCellPhone]; var benevolenceRequestHomePhone = row[BenevolenceRequestHomePhone]; var benevolenceRequestWorkPhone = row[BenevolenceRequestWorkPhone]; var benevolenceRequestGovernmentId = row[BenevolenceRequestGovernmentId]; var benevolenceRequestProvidedNextSteps = row[BenevolenceRequestProvidedNextSteps]; var benevolenceRequestStatus = row[BenevolenceRequestStatus]; var benevolenceRequestResultSummary = row[BenevolenceRequestResultSummary]; var benevolenceRequestAddress = row[BenevolenceRequestAddress]; var benevolenceRequestAddress2 = row[BenevolenceRequestAddress2]; var benevolenceRequestCity = row[BenevolenceRequestCity]; var benevolenceRequestState = row[BenevolenceRequestState]; var benevolenceRequestZip = row[BenevolenceRequestZip]; var benevolenceRequestCountry = row[BenevolenceRequestCountry]; // // Verify we have the minimum required information for a valid BenevolenceRequest in the csv file. // if (string.IsNullOrWhiteSpace(benevolenceRequestText) || (string.IsNullOrWhiteSpace(benevolenceRequestRequestedById) && (string.IsNullOrWhiteSpace(benevolenceRequestFirstName) || string.IsNullOrWhiteSpace(benevolenceRequestLastName)))) { ReportProgress(0, $"Benevolence Request {benevolenceRequestId} is missing information. See exception log for details."); LogException("InvalidBenevolenceRequest", string.Format("RequestId: {0} - BenevolenceRequestText and either BenevolenceRequestRequestedById or both BenevolenceRequestFirstName and BenevolenceRequestLastName are required. Benevolence Request {0} was not imported.", benevolenceRequestId)); completedItems++; continue; } // // Check that this Benevolence Request doesn't already exist. // var exists = false; if (importedBenevolenceRequests > 0) { exists = benevolenceRequestService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceRequestId); } if (!exists) { var email = string.Empty; if (benevolenceRequestEmail.IsEmail()) { email = benevolenceRequestEmail; } int?requestedByAliasId = null; var requestedByPersonKeys = GetPersonKeys(benevolenceRequestRequestedById); if (requestedByPersonKeys != null) { requestedByAliasId = requestedByPersonKeys.PersonAliasId; } int?createdByAliasId = null; var createdByPersonKeys = GetPersonKeys(benevolenceRequestCreatedById); if (createdByPersonKeys != null) { createdByAliasId = createdByPersonKeys.PersonAliasId; } int?caseWorkerAliasId = null; var caseWorkerPersonKeys = GetPersonKeys(benevolenceRequestCaseWorkerId); if (caseWorkerPersonKeys != null) { caseWorkerAliasId = caseWorkerPersonKeys.PersonAliasId; } var requestDate = ( DateTime )ParseDateOrDefault(benevolenceRequestDate, Bulldozer.BulldozerComponent.ImportDateTime); var dateCreated = ( DateTime )ParseDateOrDefault(benevolenceRequestCreatedDate, Bulldozer.BulldozerComponent.ImportDateTime); var benevolenceRequest = new BenevolenceRequest { RequestedByPersonAliasId = requestedByAliasId, FirstName = benevolenceRequestFirstName, LastName = benevolenceRequestLastName, Email = email, RequestText = benevolenceRequestText, RequestDateTime = requestDate, CreatedDateTime = dateCreated, CreatedByPersonAliasId = createdByAliasId, ResultSummary = benevolenceRequestResultSummary, CaseWorkerPersonAliasId = caseWorkerAliasId, ForeignKey = benevolenceRequestId, ForeignId = benevolenceRequestId.AsType <int?>() }; // Handle request Status if (!string.IsNullOrWhiteSpace(benevolenceRequestStatus)) { var statusDV = FindDefinedValueByTypeAndName(lookupContext, requestStatusDTGuid, benevolenceRequestStatus); if (statusDV == null) { statusDV = AddDefinedValue(new RockContext(), requestStatusDTGuid.ToString(), benevolenceRequestStatus); } benevolenceRequest.RequestStatusValueId = statusDV.Id; } else { // set default status to pending benevolenceRequest.RequestStatusValueId = requestStatusPendingDVId; } // Check for requester person and use its info instead if (requestedByAliasId.HasValue && requestedByAliasId.Value > 0) { Person requester = null; var requesterPersonAlias = new PersonAliasService(lookupContext).Queryable() .AsNoTracking() .FirstOrDefault(pa => pa.Id == requestedByAliasId.Value); if (requesterPersonAlias != null && requesterPersonAlias.PersonId > 0) { requester = requesterPersonAlias.Person; } if (requester != null) { if (!string.IsNullOrWhiteSpace(requester.NickName)) { benevolenceRequest.FirstName = requester.NickName; } else if (!string.IsNullOrWhiteSpace(requester.FirstName)) { benevolenceRequest.FirstName = requester.FirstName; } if (!string.IsNullOrWhiteSpace(requester.LastName)) { benevolenceRequest.LastName = requester.LastName; } if (!string.IsNullOrWhiteSpace(requester.Email)) { benevolenceRequest.Email = requester.Email; } if (requester.PrimaryCampusId.HasValue) { benevolenceRequest.CampusId = requester.PrimaryCampusId; } if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == homePhoneTypeDVId)) { benevolenceRequest.HomePhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == homePhoneTypeDVId).NumberFormatted; } if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == mobilePhoneTypeDVId)) { benevolenceRequest.CellPhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == mobilePhoneTypeDVId).NumberFormatted; } if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == workPhoneTypeDVId)) { benevolenceRequest.WorkPhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == workPhoneTypeDVId).NumberFormatted; } var requesterAddressLocation = requester.GetHomeLocation(); if (requesterAddressLocation != null) { benevolenceRequest.LocationId = requesterAddressLocation.Id; } } else { benevolenceRequestRequestedById = null; } } if (string.IsNullOrWhiteSpace(benevolenceRequestRequestedById)) { // Handle Address var requestAddress = new LocationService(lookupContext).Get(benevolenceRequestAddress.Left(100), benevolenceRequestAddress2.Left(100), benevolenceRequestCity, benevolenceRequestState, benevolenceRequestZip, benevolenceRequestCountry, verifyLocation: false); if (requestAddress != null) { benevolenceRequest.LocationId = requestAddress.Id; } } benevolenceRequestList.Add(benevolenceRequest); addedItems++; } completedItems++; if (completedItems % (ReportingNumber * 10) < 1) { ReportProgress(0, string.Format("{0:N0} benevolence requests processed.", completedItems)); } if (completedItems % ReportingNumber < 1) { SaveBenevolenceRequests(benevolenceRequestList); ReportPartialProgress(); benevolenceRequestList.Clear(); } } if (benevolenceRequestList.Any()) { SaveBenevolenceRequests(benevolenceRequestList); } ReportProgress(100, string.Format("Finished benevolence request import: {0:N0} benevolence requests processed, {1:N0} imported.", completedItems, addedItems)); return(completedItems); }
/// <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> /// 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> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail( int benevolenceRequestId ) { BenevolenceRequest benevolenceRequest = null; var rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; var personId = this.PageParameter( "PersonId" ).AsIntegerOrNull(); if ( personId.HasValue ) { var person = new PersonService( rockContext ).Get( personId.Value ); if ( person != null ) { benevolenceRequest.RequestedByPersonAliasId = person.PrimaryAliasId; benevolenceRequest.RequestedByPersonAlias = person.PrimaryAlias; } } } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if ( benevolenceRequest.RequestedByPersonAlias != null ) { ppPerson.SetValue( benevolenceRequest.RequestedByPersonAlias.Person ); } else { ppPerson.SetValue( null ); } if ( benevolenceRequest.HomePhoneNumber != null ) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if ( benevolenceRequest.CellPhoneNumber != null ) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if ( benevolenceRequest.WorkPhoneNumber != null ) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue( benevolenceRequest.Location ); LoadDropDowns( benevolenceRequest ); if ( benevolenceRequest.RequestStatusValueId != null ) { ddlRequestStatus.SetValue( benevolenceRequest.RequestStatusValueId ); if ( benevolenceRequest.RequestStatusValue.Value == "Approved" ) { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if ( benevolenceRequest.RequestStatusValue.Value == "Denied" ) { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if ( benevolenceRequest.ConnectionStatusValueId != null ) { ddlConnectionStatus.SetValue( benevolenceRequest.ConnectionStatusValueId ); } ddlCaseWorker.SetValue( benevolenceRequest.CaseWorkerPersonAliasId ); BindGridFromViewState(); // call the OnSelectPerson of the person picker which will update the UI based on the selected person ppPerson_SelectPerson( null, null ); }
/// <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); // get benevolence request id var requestGuid = GetAttributeValue(action, "BenevolenceRequest", true).AsGuidOrNull(); if (!requestGuid.HasValue) { var errorMessage = "A valid benevolence request ID was not provided."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // get result summary var resultSummary = GetAttributeValue(action, "ResultSummary", true).ResolveMergeFields(mergeFields); // get next steps var nextSteps = GetAttributeValue(action, "NextSteps", true).ResolveMergeFields(mergeFields); // get result type var resultType = DefinedValueCache.Read(GetAttributeValue(action, "ResultType", true).AsGuid()); if (resultType == null) { var errorMessage = "A valid result type was not provided."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // get result details var resultDetails = GetAttributeValue(action, "ResultDetails", true).ResolveMergeFields(mergeFields); // get amount var amount = GetAttributeValue(action, "ResultAmount", true).AsDecimalOrNull(); if (!amount.HasValue) { var errorMessage = "A valid result amount was not provided."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } // create benevolence request BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); BenevolenceRequest request = benevolenceRequestService.Get(requestGuid.Value); if (request == null) { var errorMessage = "The benevolence request provided could not be found."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } if (nextSteps.IsNotNullOrWhitespace()) { request.ProvidedNextSteps = nextSteps; } if (resultSummary.IsNotNullOrWhitespace()) { request.ResultSummary = resultSummary; } BenevolenceResult result = new BenevolenceResult(); request.BenevolenceResults.Add(result); result.Amount = amount; result.ResultTypeValueId = resultType.Id; result.ResultSummary = resultDetails; rockContext.SaveChanges(); return(true); }
/// <summary> /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event. /// </summary> /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param> protected override void OnInit( EventArgs e ) { base.OnInit( e ); // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it this.BlockUpdated += Block_BlockUpdated; this.AddConfigurationUpdateTrigger( upnlContent ); gResults.DataKeyNames = new string[] { "TempGuid" }; gResults.Actions.AddClick += gResults_AddClick; gResults.Actions.ShowAdd = true; gResults.IsDeleteEnabled = true; // Gets any existing results and places them into the ViewState BenevolenceRequest benevolenceRequest = null; int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger(); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = new BenevolenceRequestService( new RockContext() ).Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; } if ( ViewState["BenevolenceResultInfoState"] == null ) { List<BenevolenceResultInfo> brInfoList = new List<BenevolenceResultInfo>(); foreach ( BenevolenceResult benevolenceResult in benevolenceRequest.BenevolenceResults ) { BenevolenceResultInfo benevolenceResultInfo = new BenevolenceResultInfo(); benevolenceResultInfo.ResultId = benevolenceResult.Id; benevolenceResultInfo.Amount = benevolenceResult.Amount; benevolenceResultInfo.TempGuid = benevolenceResult.Guid; benevolenceResultInfo.ResultSummary = benevolenceResult.ResultSummary; benevolenceResultInfo.ResultTypeValueId = benevolenceResult.ResultTypeValueId; benevolenceResultInfo.ResultTypeName = benevolenceResult.ResultTypeValue.Value; brInfoList.Add( benevolenceResultInfo ); } BenevolenceResultsState = brInfoList; } }
/// <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> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail( int benevolenceRequestId ) { BenevolenceRequest benevolenceRequest = null; BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( new RockContext() ); if ( !benevolenceRequestId.Equals( 0 ) ) { benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId ); } if ( benevolenceRequest == null ) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if ( benevolenceRequest.RequestedByPersonAlias != null ) { ppPerson.SetValue( benevolenceRequest.RequestedByPersonAlias.Person ); } else { ppPerson.SetValue( null ); } if ( benevolenceRequest.HomePhoneNumber != null ) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if ( benevolenceRequest.CellPhoneNumber != null ) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if ( benevolenceRequest.WorkPhoneNumber != null ) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue( benevolenceRequest.Location ); LoadDropDowns( benevolenceRequest ); if ( benevolenceRequest.RequestStatusValueId != null ) { ddlRequestStatus.SelectedValue = benevolenceRequest.RequestStatusValueId.ToString(); if ( benevolenceRequest.RequestStatusValue.Value == "Approved" ) { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if ( benevolenceRequest.RequestStatusValue.Value == "Denied" ) { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if ( benevolenceRequest.ConnectionStatusValueId != null ) { ddlConnectionStatus.SelectedValue = benevolenceRequest.ConnectionStatusValueId.ToString(); } ddlCaseWorker.SelectedValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); BindGridFromViewState(); }
/// <summary> /// Shows the detail. /// </summary> /// <param name="benevolenceRequestId">The benevolence request identifier</param> public void ShowDetail(int benevolenceRequestId) { BenevolenceRequest benevolenceRequest = null; BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(new RockContext()); if (!benevolenceRequestId.Equals(0)) { benevolenceRequest = benevolenceRequestService.Get(benevolenceRequestId); } if (benevolenceRequest == null) { benevolenceRequest = new BenevolenceRequest { Id = 0 }; benevolenceRequest.RequestDateTime = RockDateTime.Now; } dtbFirstName.Text = benevolenceRequest.FirstName; dtbLastName.Text = benevolenceRequest.LastName; dtbGovernmentId.Text = benevolenceRequest.GovernmentId; ebEmail.Text = benevolenceRequest.Email; dtbRequestText.Text = benevolenceRequest.RequestText; dtbSummary.Text = benevolenceRequest.ResultSummary; dpRequestDate.SelectedDate = benevolenceRequest.RequestDateTime; if (benevolenceRequest.RequestedByPersonAlias != null) { ppPerson.SetValue(benevolenceRequest.RequestedByPersonAlias.Person); } else { ppPerson.SetValue(null); } if (benevolenceRequest.HomePhoneNumber != null) { pnbHomePhone.Text = benevolenceRequest.HomePhoneNumber; } if (benevolenceRequest.CellPhoneNumber != null) { pnbCellPhone.Text = benevolenceRequest.CellPhoneNumber; } if (benevolenceRequest.WorkPhoneNumber != null) { pnbWorkPhone.Text = benevolenceRequest.WorkPhoneNumber; } lapAddress.SetValue(benevolenceRequest.Location); LoadDropDowns(benevolenceRequest); if (benevolenceRequest.RequestStatusValueId != null) { ddlRequestStatus.SelectedValue = benevolenceRequest.RequestStatusValueId.ToString(); if (benevolenceRequest.RequestStatusValue.Value == "Approved") { hlStatus.Text = "Approved"; hlStatus.LabelType = LabelType.Success; } if (benevolenceRequest.RequestStatusValue.Value == "Denied") { hlStatus.Text = "Denied"; hlStatus.LabelType = LabelType.Danger; } } if (benevolenceRequest.ConnectionStatusValueId != null) { ddlConnectionStatus.SelectedValue = benevolenceRequest.ConnectionStatusValueId.ToString(); } ddlCaseWorker.SelectedValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString(); BindGridFromViewState(); }