private void DisplayResults() { RockContext rockContext = new RockContext(); if (Request["BenevolenceRequestId"] != null) { int id; int.TryParse(Request["BenevolenceRequestId"].ToString(), out id); var benevolenceRequest = new BenevolenceRequestService(rockContext).Get(id); var mergeFields = new Dictionary <string, object>(); mergeFields.Add("Request", benevolenceRequest); var template = GetAttributeValue("LavaTemplate"); lResults.Text = template.ResolveMergeFields(mergeFields); // show debug info if (GetAttributeValue("EnableDebug").AsBoolean() && IsUserAuthorized(Authorization.EDIT)) { lDebug.Visible = true; lDebug.Text = mergeFields.lavaDebugInfo(); } } }
/// <summary> /// Gets the expression. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="serviceInstance">The service instance.</param> /// <param name="parameterExpression">The parameter expression.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection) { var rockContext = (RockContext)serviceInstance.Context; string[] selectionValues = selection.Split('|'); if (selectionValues.Length >= 1) { var campusGuidList = selectionValues[0].Split(',').AsGuidList(); List <int> campusIds = new List <int>(); foreach (var campusGuid in campusGuidList) { var campus = CampusCache.Read(campusGuid); if (campus != null) { campusIds.Add(campus.Id); } } if (!campusIds.Any()) { return(null); } var qry = new BenevolenceRequestService((RockContext)serviceInstance.Context).Queryable() .Where(p => campusIds.Contains(p.CampusId ?? 0)); Expression extractedFilterExpression = FilterExpressionExtractor.Extract <Rock.Model.BenevolenceRequest>(qry, parameterExpression, "p"); return(extractedFilterExpression); } return(null); }
/// <summary> /// Gets the edit value as the IEntity.Id /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <returns></returns> public int?GetEditValueAsEntityId(System.Web.UI.Control control, Dictionary <string, ConfigurationValue> configurationValues) { Guid guid = GetEditValue(control, configurationValues).AsGuid(); var item = new BenevolenceRequestService(new RockContext()).Get(guid); return(item != null ? item.Id : (int?)null); }
/// <summary> /// Sets the edit value from IEntity.Id value /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="id">The identifier.</param> public void SetEditValueFromEntityId(System.Web.UI.Control control, Dictionary <string, ConfigurationValue> configurationValues, int?id) { var item = new BenevolenceRequestService(new RockContext()).Get(id ?? 0); string guidValue = item != null?item.Guid.ToString() : string.Empty; SetEditValue(control, configurationValues, guidValue); }
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()); }
/// <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> /// Creates a Linq Expression that can be applied to an IQueryable to filter the result set. /// </summary> /// <param name="entityType">The type of entity in the result set.</param> /// <param name="serviceInstance">A service instance that can be queried to obtain the result set.</param> /// <param name="parameterExpression">The input parameter that will be injected into the filter expression.</param> /// <param name="selection">A formatted string representing the filter settings.</param> /// <returns> /// A Linq Expression that can be used to filter an IQueryable. /// </returns> /// <exception cref="System.Exception">Filter issue(s): + errorMessages.AsDelimited( ; )</exception> public override Expression GetExpression(Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection) { var settings = new FilterSettings(selection); var context = (RockContext)serviceInstance.Context; // Get the Benevolence Request Data View. var dataView = DataComponentSettingsHelper.GetDataViewForFilterComponent(settings.DataViewGuid, context); // Evaluate the Data View that defines the Person's Benevolence Request. var benevolenceRequestService = new BenevolenceRequestService(context); var benevolenceRequestQuery = benevolenceRequestService.Queryable(); if (dataView != null) { benevolenceRequestQuery = DataComponentSettingsHelper.FilterByDataView(benevolenceRequestQuery, dataView, benevolenceRequestService); } var benevolenceRequestPersonsKey = benevolenceRequestQuery.Select(a => a.RequestedByPersonAliasId); // Get all of the Person corresponding to the qualifying Benevolence Requests. var qry = new PersonService(context).Queryable() .Where(g => g.Aliases.Any(k => benevolenceRequestPersonsKey.Contains(k.Id))); // Retrieve the Filter Expression. var extractedFilterExpression = FilterExpressionExtractor.Extract <Model.Person>(qry, parameterExpression, "g"); return(extractedFilterExpression); }
/// <summary> /// Gets the expression. /// </summary> /// <param name="context">The context.</param> /// <param name="entityIdProperty">The entity identifier property.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(RockContext context, MemberExpression entityIdProperty, string selection) { var benevolenceRequestQuery = new BenevolenceRequestService(context).Queryable() .Select(p => p.Campus.Name); var selectExpression = SelectExpressionExtractor.Extract(benevolenceRequestQuery, entityIdProperty, "p"); return(selectExpression); }
/// <summary> /// Handles the Delete event of the gBenevolenceType 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 gBenevolenceType_Delete(object sender, RowEventArgs e) { using (var rockContext = new RockContext()) { rockContext.WrapTransaction(action: () => { var benevolenceWorkflowService = new BenevolenceWorkflowService(rockContext); var benevolenceTypeService = new BenevolenceTypeService(rockContext); var authService = new AuthService(rockContext); BenevolenceType benevolenceType = benevolenceTypeService.Get(e.RowKeyId); if (benevolenceType != null) { // Do not allow deletions if the person is not authorized if (!benevolenceType.IsAuthorized(Authorization.ADMINISTRATE, this.CurrentPerson)) { mdGridWarning.Show("You are not authorized to delete this Benevolence type.", ModalAlertType.Information); return; } // var benevolenceRequests = new Service<BenevolenceRequest>( rockContext ).Queryable().All( a => a.BenevolenceTypeId == BenevolenceType.Id ); var benevolenceRequests = benevolenceType.BenevolenceRequests.ToList(); var benevolenceRequestService = new BenevolenceRequestService(rockContext); string errorMessageBenevolenceRequest = string.Empty; foreach (var benvolenceRequest in benevolenceRequests) { if (!benevolenceRequestService.CanDelete(benvolenceRequest, out errorMessageBenevolenceRequest)) { mdGridWarning.Show(errorMessageBenevolenceRequest, ModalAlertType.Information); return; } benevolenceRequestService.Delete(benvolenceRequest); } // Save deleting the benevolence requests for the benevolence type id rockContext.SaveChanges(); string errorMessageBenevolenceType; if (!benevolenceTypeService.CanDelete(benevolenceType, out errorMessageBenevolenceType)) { mdGridWarning.Show(errorMessageBenevolenceType, ModalAlertType.Information); return; } benevolenceTypeService.Delete(benevolenceType); rockContext.SaveChanges(); // ToDo: benevolenceWorkflowService.RemoveCachedTriggers(); } }); } BindGrid(); }
/// <summary> /// Gets the expression. /// </summary> /// <param name="context">The context.</param> /// <param name="entityIdProperty">The entity identifier property.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(RockContext context, MemberExpression entityIdProperty, string selection) { var totalAmountQuery = new BenevolenceRequestService(context).Queryable() .Select(p => p.BenevolenceResults.Sum(a => a.Amount)); var selectTotalAmountExpression = SelectExpressionExtractor.Extract(totalAmountQuery, entityIdProperty, "p"); return(selectTotalAmountExpression); }
/// <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> /// Gets the expression. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="serviceInstance">The service instance.</param> /// <param name="parameterExpression">The parameter expression.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection) { var values = selection.Split('|'); ComparisonType comparisonType = values[0].ConvertToEnum <ComparisonType>(ComparisonType.EqualTo); decimal? amountValue = values[1].AsDecimalOrNull(); var qry = new BenevolenceRequestService((RockContext)serviceInstance.Context).Queryable(); var totalAmountEqualQuery = qry.Where(p => p.BenevolenceResults.Sum(a => a.Amount) == amountValue); BinaryExpression compareEqualExpression = FilterExpressionExtractor.Extract <Rock.Model.BenevolenceRequest>(totalAmountEqualQuery, parameterExpression, "p") as BinaryExpression; BinaryExpression result = FilterExpressionExtractor.AlterComparisonType(comparisonType, compareEqualExpression, null); return(result); }
/// <summary> /// Returns the field's current value(s) /// </summary> /// <param name="parentControl">The parent control.</param> /// <param name="value">Information about the value</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="condensed">Flag indicating if the value should be condensed (i.e. for use in a grid column)</param> /// <returns></returns> public override string FormatValue( Control parentControl, string value, Dictionary<string, ConfigurationValue> configurationValues, bool condensed ) { string formattedValue = value; Guid? guid = value.AsGuidOrNull(); if ( guid.HasValue ) { var benevolenceRequest = new BenevolenceRequestService( new RockContext() ).Get( guid.Value ); if ( benevolenceRequest != null ) { formattedValue = $"{benevolenceRequest.FirstName} {benevolenceRequest.LastName} on {benevolenceRequest.RequestDateTime.ToShortDateString()}"; } } return base.FormatValue( parentControl, formattedValue, configurationValues, condensed ); }
private void DisplayResults() { RockContext rockContext = new RockContext(); var benevolenceRequestId = PageParameter("BenevolenceRequestId").AsInteger(); if (benevolenceRequestId > 0) { var benevolenceRequest = new BenevolenceRequestService(rockContext).Get(benevolenceRequestId); var mergeFields = new Dictionary <string, object>(); mergeFields.Add("Request", benevolenceRequest); var template = GetAttributeValue("LavaTemplate"); lResults.Text = template.ResolveMergeFields(mergeFields); } }
/// <summary> /// Returns the field's current value(s) /// </summary> /// <param name="parentControl">The parent control.</param> /// <param name="value">Information about the value</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="condensed">Flag indicating if the value should be condensed (i.e. for use in a grid column)</param> /// <returns></returns> public override string FormatValue(Control parentControl, string value, Dictionary <string, ConfigurationValue> configurationValues, bool condensed) { string formattedValue = value; Guid?guid = value.AsGuidOrNull(); if (guid.HasValue) { var benevolenceRequest = new BenevolenceRequestService(new RockContext()).Get(guid.Value); if (benevolenceRequest != null) { formattedValue = $"{benevolenceRequest.FirstName} {benevolenceRequest.LastName} on {benevolenceRequest.RequestDateTime.ToShortDateString()}"; } } return(base.FormatValue(parentControl, formattedValue, configurationValues, condensed)); }
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); } } }
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); }
private void DisplayResults() { RockContext rockContext = new RockContext(); if (Request["BenevolenceRequestId"] != null) { int id; int.TryParse(Request["BenevolenceRequestId"].ToString(), out id); var benevolenceRequest = new BenevolenceRequestService(rockContext).Get(id); var mergeFields = new Dictionary <string, object>(); mergeFields.Add("Request", benevolenceRequest); var template = GetAttributeValue("LavaTemplate"); lResults.Text = template.ResolveMergeFields(mergeFields); } }
/// <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> /// 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 benevolenceRequest = new BenevolenceRequestService( rockContext ).Get( GetAttributeValue( action, "BenevolenceRequest", true ).AsGuid() ); if ( benevolenceRequest == null ) { var errorMessage = "Benevolence request could not be found."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } var attribute = AttributeCache.Read( GetAttributeValue( action, "BenevolenceRequestAttribute" ).AsGuid() ); if ( attribute == null ) { var errorMessage = "Could not find a benevolence attribute matching the one provided."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } var attributeValue = GetAttributeValue( action, "Value", true ).ResolveMergeFields( mergeFields ); bool useBlankValues = GetActionAttributeValue( action, "UseBlankValue" ).AsBoolean(); if ( !string.IsNullOrWhiteSpace( attributeValue ) || useBlankValues) { benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.SaveAttributeValue( benevolenceRequest, attribute, attributeValue, rockContext ); action.AddLogEntry( $"Updated benevolence attribute '{attribute.Name}' to '{attributeValue}'." ); } 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 benevolenceRequest = new BenevolenceRequestService(rockContext).Get(GetAttributeValue(action, "BenevolenceRequest", true).AsGuid()); if (benevolenceRequest == null) { var errorMessage = "Benevolence request could not be found."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } var attribute = AttributeCache.Get(GetAttributeValue(action, "BenevolenceRequestAttribute").AsGuid()); if (attribute == null) { var errorMessage = "Could not find a benevolence attribute matching the one provided."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } var attributeValue = GetAttributeValue(action, "Value", true).ResolveMergeFields(mergeFields); bool useBlankValues = GetActionAttributeValue(action, "UseBlankValue").AsBoolean(); if (!string.IsNullOrWhiteSpace(attributeValue) || useBlankValues) { benevolenceRequest.LoadAttributes(); Rock.Attribute.Helper.SaveAttributeValue(benevolenceRequest, attribute, attributeValue, rockContext); action.AddLogEntry($"Updated benevolence attribute '{attribute.Name}' to '{attributeValue}'."); } return(true); }
/// <summary> /// Gets the expression. /// </summary> /// <param name="entityType">Type of the entity.</param> /// <param name="serviceInstance">The service instance.</param> /// <param name="parameterExpression">The parameter expression.</param> /// <param name="selection">The selection.</param> /// <returns></returns> public override Expression GetExpression(Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection) { var rockContext = (RockContext)serviceInstance.Context; string[] selectionValues = selection.Split('|'); if (selectionValues.Length >= 1) { var campus = CampusCache.Read(selectionValues[0].AsGuid()); if (campus == null) { return(null); } var qry = new BenevolenceRequestService((RockContext)serviceInstance.Context).Queryable() .Where(p => (p.CampusId ?? 0) == campus.Id); Expression extractedFilterExpression = FilterExpressionExtractor.Extract <Rock.Model.BenevolenceRequest>(qry, parameterExpression, "p"); return(extractedFilterExpression); } return(null); }
/// <summary> /// Handles the DeleteClick event of the gGrid control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param> private void gGrid_DeleteClick(object sender, RowEventArgs e) { var rockContext = new RockContext(); var benevolenceRequestService = new BenevolenceRequestService(rockContext); var benevolenceRequest = benevolenceRequestService.Get(e.RowKeyId); string errorMessage; if (benevolenceRequest == null) { return; } if (!benevolenceRequestService.CanDelete(benevolenceRequest, out errorMessage)) { mdGridWarning.Show(errorMessage, ModalAlertType.Information); return; } benevolenceRequestService.Delete(benevolenceRequest); rockContext.SaveChanges(); BindGrid(); }
/// <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); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); var benevolenceRequest = benevolenceRequestService.Get(GetAttributeValue(action, "BenevolenceRequest", true).AsGuid()); if (benevolenceRequest == null) { var errorMessage = "Benevolence request could not be found."; errorMessages.Add(errorMessage); action.AddLogEntry(errorMessage, true); return(false); } var binaryFile = new BinaryFileService(rockContext).Get(GetAttributeValue(action, "Document", true).AsGuid()); if (binaryFile == null) { action.AddLogEntry("The document to add to the benevolence request was not be found.", true); return(true); // returning true here to allow the action to run 'successfully' without a document. This allows the action to be easily used when the document is optional without a bunch of action filter tests. } BenevolenceRequestDocument requestDocument = new BenevolenceRequestDocument(); benevolenceRequest.Documents.Add(requestDocument); requestDocument.BinaryFileId = binaryFile.Id; rockContext.SaveChanges(); action.AddLogEntry("Added document to the benevolence request."); 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 ); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); var benevolenceRequest = benevolenceRequestService.Get( GetAttributeValue( action, "BenevolenceRequest", true ).AsGuid() ); if (benevolenceRequest == null ) { var errorMessage = "Benevolence request could not be found."; errorMessages.Add( errorMessage ); action.AddLogEntry( errorMessage, true ); return false; } var binaryFile = new BinaryFileService(rockContext).Get(GetAttributeValue( action, "Document", true ).AsGuid()); if ( binaryFile == null ) { action.AddLogEntry( "The document to add to the benevolence request was not be found.", true ); return true; // returning true here to allow the action to run 'successfully' without a document. This allows the action to be easily used when the document is optional without a bunch of action filter tests. } BenevolenceRequestDocument requestDocument = new BenevolenceRequestDocument(); benevolenceRequest.Documents.Add( requestDocument ); requestDocument.BinaryFileId = binaryFile.Id; rockContext.SaveChanges(); action.AddLogEntry( "Added document to the benevolence request." ); 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.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); } } }
private void DisplayResults() { RockContext rockContext = new RockContext(); if (Request["BenevolenceRequestId"] != null) { int id; int.TryParse(Request["BenevolenceRequestId"].ToString(), out id); var benevolenceRequest = new BenevolenceRequestService(rockContext).Get(id); var mergeFields = new Dictionary<string, object>(); mergeFields.Add("Request", benevolenceRequest); var template = GetAttributeValue("LavaTemplate"); lResults.Text = template.ResolveMergeFields(mergeFields); // show debug info if (GetAttributeValue("EnableDebug").AsBoolean() && IsUserAuthorized(Authorization.EDIT)) { lDebug.Visible = true; lDebug.Text = mergeFields.lavaDebugInfo(); } } }
/// <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> /// Binds the grid. /// </summary> private void BindGrid() { phSummary.Controls.Clear(); rFilter.Visible = true; gList.Visible = true; RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext); var qry = benevolenceRequestService.Queryable("BenevolenceResults,RequestedByPersonAlias,RequestedByPersonAlias.Person,CaseWorkerPersonAlias,CaseWorkerPersonAlias.Person").AsNoTracking(); // Filter by Start Date DateTime?startDate = drpDate.LowerValue; if (startDate != null) { qry = qry.Where(b => b.RequestDateTime >= startDate); } // Filter by End Date DateTime?endDate = drpDate.UpperValue; if (endDate != null) { qry = qry.Where(b => b.RequestDateTime <= endDate); } // Filter by Campus if (cpCampus.SelectedCampusId.HasValue) { qry = qry.Where(b => b.CampusId == cpCampus.SelectedCampusId); } if (TargetPerson != null) { // show benevolence request for the target person and also for their family members var qryFamilyMembers = TargetPerson.GetFamilyMembers(true, rockContext); qry = qry.Where(a => a.RequestedByPersonAliasId.HasValue && qryFamilyMembers.Any(b => b.PersonId == a.RequestedByPersonAlias.PersonId)); } else { // Filter by First Name string firstName = tbFirstName.Text; if (!string.IsNullOrWhiteSpace(firstName)) { qry = qry.Where(b => b.FirstName.StartsWith(firstName)); } // Filter by Last Name string lastName = tbLastName.Text; if (!string.IsNullOrWhiteSpace(lastName)) { qry = qry.Where(b => b.LastName.StartsWith(lastName)); } } // Filter by Government Id string governmentId = tbGovernmentId.Text; if (!string.IsNullOrWhiteSpace(governmentId)) { qry = qry.Where(b => b.GovernmentId.StartsWith(governmentId)); } // Filter by Case Worker int?caseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull(); if (caseWorkerPersonAliasId != null) { qry = qry.Where(b => b.CaseWorkerPersonAliasId == caseWorkerPersonAliasId); } // Filter by Result int?resultTypeValueId = dvpResult.SelectedItem.Value.AsIntegerOrNull(); if (resultTypeValueId != null) { qry = qry.Where(b => b.BenevolenceResults.Where(r => r.ResultTypeValueId == resultTypeValueId).Count() > 0); } // Filter by Request Status int?requestStatusValueId = dvpStatus.SelectedItem.Value.AsIntegerOrNull(); if (requestStatusValueId != null) { qry = qry.Where(b => b.RequestStatusValueId == requestStatusValueId); } SortProperty sortProperty = gList.SortProperty; if (sortProperty != null) { if (sortProperty.Property == "TotalAmount") { if (sortProperty.Direction == SortDirection.Descending) { qry = qry.OrderByDescending(a => a.BenevolenceResults.Sum(b => b.Amount)); } else { qry = qry.OrderBy(a => a.BenevolenceResults.Sum(b => b.Amount)); } } else { qry = qry.Sort(sortProperty); } } else { qry = qry.OrderByDescending(a => a.RequestDateTime).ThenByDescending(a => a.Id); } // Filter query by any configured attribute filters if (AvailableAttributes != null && AvailableAttributes.Any()) { foreach (var attribute in AvailableAttributes) { var filterControl = phAttributeFilters.FindControl("filter_" + attribute.Id.ToString()); qry = attribute.FieldType.Field.ApplyAttributeQueryFilter(qry, filterControl, attribute, benevolenceRequestService, Rock.Reporting.FilterMode.SimpleFilter); } } var list = qry.ToList(); gList.DataSource = list; gList.DataBind(); // Builds the Totals section var definedTypeCache = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_RESULT_TYPE)); Dictionary <string, decimal> resultTotals = new Dictionary <string, decimal>(); decimal grandTotal = 0; foreach (BenevolenceRequest request in list) { foreach (BenevolenceResult result in request.BenevolenceResults) { if (result.Amount != null) { if (resultTotals.ContainsKey(result.ResultTypeValue.Value)) { resultTotals[result.ResultTypeValue.Value] += result.Amount.Value; } else { resultTotals.Add(result.ResultTypeValue.Value, result.Amount.Value); } grandTotal += result.Amount.Value; } } } foreach (KeyValuePair <string, decimal> keyValuePair in resultTotals) { phSummary.Controls.Add(new LiteralControl(string.Format("<div class='row'><div class='col-xs-8'>{0}: </div><div class='col-xs-4 text-right'>{1}{2:#,##0.00}</div></div>", keyValuePair.Key, GlobalAttributesCache.Value("CurrencySymbol"), keyValuePair.Value))); } phSummary.Controls.Add(new LiteralControl(string.Format("<div class='row'><div class='col-xs-8'><b>Total: </div><div class='col-xs-4 text-right'>{0}{1:#,##0.00}</b></div></div>", GlobalAttributesCache.Value("CurrencySymbol"), grandTotal))); }
/// <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> /// 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); // 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> /// 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> /// Sets the edit value from IEntity.Id value /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <param name="id">The identifier.</param> public void SetEditValueFromEntityId( System.Web.UI.Control control, Dictionary<string, ConfigurationValue> configurationValues, int? id ) { var item = new BenevolenceRequestService( new RockContext() ).Get( id ?? 0 ); string guidValue = item != null ? item.Guid.ToString() : string.Empty; SetEditValue( control, configurationValues, guidValue ); }
/// <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 gList_Delete( 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> /// Binds the grid. /// </summary> private void BindGrid() { phSummary.Controls.Clear(); rFilter.Visible = true; gList.Visible = true; RockContext rockContext = new RockContext(); BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext ); var qry = benevolenceRequestService.Queryable( "BenevolenceResults,RequestedByPersonAlias,RequestedByPersonAlias.Person,CaseWorkerPersonAlias,CaseWorkerPersonAlias.Person" ); // Filter by Start Date DateTime? startDate = drpDate.LowerValue; if ( startDate != null ) { qry = qry.Where( b => b.RequestDateTime >= startDate ); } // Filter by End Date DateTime? endDate = drpDate.UpperValue; if ( endDate != null ) { qry = qry.Where( b => b.RequestDateTime <= endDate ); } if ( TargetPerson != null ) { // show benevolence request for the target person and also for their family members var qryFamilyMembers = TargetPerson.GetFamilyMembers( true, rockContext ); qry = qry.Where( a => a.RequestedByPersonAliasId.HasValue && qryFamilyMembers.Any( b => b.PersonId == a.RequestedByPersonAlias.PersonId ) ); } else { // Filter by First Name string firstName = tbFirstName.Text; if ( !string.IsNullOrWhiteSpace( firstName ) ) { qry = qry.Where( b => b.FirstName.StartsWith( firstName ) ); } // Filter by Last Name string lastName = tbLastName.Text; if ( !string.IsNullOrWhiteSpace( lastName ) ) { qry = qry.Where( b => b.LastName.StartsWith( lastName ) ); } } // Filter by Government Id string governmentId = tbGovernmentId.Text; if ( !string.IsNullOrWhiteSpace( governmentId ) ) { qry = qry.Where( b => b.GovernmentId.StartsWith( governmentId ) ); } // Filter by Case Worker int? caseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull(); if ( caseWorkerPersonAliasId != null ) { qry = qry.Where( b => b.CaseWorkerPersonAliasId == caseWorkerPersonAliasId ); } // Filter by Result int? resultTypeValueId = ddlResult.SelectedItem.Value.AsIntegerOrNull(); if ( resultTypeValueId != null ) { qry = qry.Where( b => b.BenevolenceResults.Where( r => r.ResultTypeValueId == resultTypeValueId ).Count() > 0 ); } // Filter by Request Status int? requestStatusValueId = ddlStatus.SelectedItem.Value.AsIntegerOrNull(); if ( requestStatusValueId != null ) { qry = qry.Where( b => b.RequestStatusValueId == requestStatusValueId ); } SortProperty sortProperty = gList.SortProperty; if ( sortProperty != null ) { if ( sortProperty.Property == "TotalAmount" ) { if ( sortProperty.Direction == SortDirection.Descending ) { qry = qry.OrderByDescending( a => a.BenevolenceResults.Sum( b => b.Amount ) ); } else { qry = qry.OrderBy( a => a.BenevolenceResults.Sum( b => b.Amount ) ); } } else { qry = qry.Sort( sortProperty ); } } else { qry = qry.OrderByDescending( a => a.RequestDateTime ).ThenByDescending( a => a.Id ); } gList.DataSource = qry.ToList(); gList.DataBind(); // Builds the Totals section var definedTypeCache = DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_RESULT_TYPE ) ); Dictionary<string, decimal> resultTotals = new Dictionary<string, decimal>(); decimal grandTotal = 0; foreach ( BenevolenceRequest request in qry.ToList() ) { foreach ( BenevolenceResult result in request.BenevolenceResults ) { if ( result.Amount != null ) { if ( resultTotals.ContainsKey( result.ResultTypeValue.Value ) ) { resultTotals[result.ResultTypeValue.Value] += result.Amount.Value; } else { resultTotals.Add( result.ResultTypeValue.Value, result.Amount.Value ); } grandTotal += result.Amount.Value; } } } foreach ( KeyValuePair<string, decimal> keyValuePair in resultTotals ) { phSummary.Controls.Add( new LiteralControl( string.Format( "<div class='row'><div class='col-xs-8'>{0}: </div><div class='col-xs-4 text-right'>{1}{2:#,##0.00}</div></div>", keyValuePair.Key, GlobalAttributesCache.Value( "CurrencySymbol" ), keyValuePair.Value ) ) ); } phSummary.Controls.Add( new LiteralControl( string.Format( "<div class='row'><div class='col-xs-8'><b>Total: </div><div class='col-xs-4 text-right'>{0}{1:#,##0.00}</b></div></div>", GlobalAttributesCache.Value( "CurrencySymbol" ), grandTotal ) ) ); }
/// <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> /// 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> /// 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> /// Gets the edit value as the IEntity.Id /// </summary> /// <param name="control">The control.</param> /// <param name="configurationValues">The configuration values.</param> /// <returns></returns> public int? GetEditValueAsEntityId( System.Web.UI.Control control, Dictionary<string, ConfigurationValue> configurationValues ) { Guid guid = GetEditValue( control, configurationValues ).AsGuid(); var item = new BenevolenceRequestService( new RockContext() ).Get( guid ); return item != null ? item.Id : (int?)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); 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> /// Binds the grid. /// </summary> private void BindGrid() { phSummary.Controls.Clear(); rFilter.Visible = true; gList.Visible = true; bool canAddEditDelete = IsUserAuthorized(Authorization.EDIT); gList.Actions.ShowAdd = canAddEditDelete; gList.IsDeleteEnabled = canAddEditDelete; var rockContext = new RockContext(); var benevolenceRequestService = new BenevolenceRequestService(rockContext); var benevolenceRequests = benevolenceRequestService .Queryable("BenevolenceResults,RequestedByPersonAlias,RequestedByPersonAlias.Person,CaseWorkerPersonAlias,CaseWorkerPersonAlias.Person").AsNoTracking(); var hideGridColumns = GetAttributeValue(AttributeKey.HideColumnsAttributeKey)?.Split(',')?.Select(v => v.ToUpper()); var benevolenceTypeFilter = GetAttributeValue(AttributeKey.FilterBenevolenceTypesAttributeKey) ?.Split(',') ?.Where(v => v.IsNotNullOrWhiteSpace()) ?.Select(v => new Guid(v)); // Filter by Start Date DateTime?startDate = drpDate.LowerValue; if (startDate != null) { benevolenceRequests = benevolenceRequests.Where(b => b.RequestDateTime >= startDate); } // Filter by End Date DateTime?endDate = drpDate.UpperValue; if (endDate != null) { benevolenceRequests = benevolenceRequests.Where(b => b.RequestDateTime <= endDate); } // Filter by Campus if (cpCampus.SelectedCampusId.HasValue) { benevolenceRequests = benevolenceRequests.Where(b => b.CampusId == cpCampus.SelectedCampusId); } if (TargetPerson != null) { // show benevolence request for the target person and also for their family members var qryFamilyMembers = TargetPerson.GetFamilyMembers(true, rockContext); benevolenceRequests = benevolenceRequests.Where(a => a.RequestedByPersonAliasId.HasValue && qryFamilyMembers.Any(b => b.PersonId == a.RequestedByPersonAlias.PersonId)); } else { // Filter by First Name string firstName = tbFirstName.Text; if (!string.IsNullOrWhiteSpace(firstName)) { benevolenceRequests = benevolenceRequests.Where(b => b.FirstName.StartsWith(firstName)); } // Filter by Last Name string lastName = tbLastName.Text; if (!string.IsNullOrWhiteSpace(lastName)) { benevolenceRequests = benevolenceRequests.Where(b => b.LastName.StartsWith(lastName)); } } // Filter by Government Id string governmentId = tbGovernmentId.Text; if (!string.IsNullOrWhiteSpace(governmentId)) { benevolenceRequests = benevolenceRequests.Where(b => b.GovernmentId.StartsWith(governmentId)); } // Filter by Case Worker int?caseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull(); if (caseWorkerPersonAliasId != null) { benevolenceRequests = benevolenceRequests.Where(b => b.CaseWorkerPersonAliasId == caseWorkerPersonAliasId); } // Filter by Result int?resultTypeValueId = dvpResult.SelectedItem.Value.AsIntegerOrNull(); if (resultTypeValueId != null) { benevolenceRequests = benevolenceRequests.Where(b => b.BenevolenceResults.Where(r => r.ResultTypeValueId == resultTypeValueId).Count() > 0); } // Filter by Request Status int?requestStatusValueId = dvpStatus.SelectedItem.Value.AsIntegerOrNull(); if (requestStatusValueId != null) { benevolenceRequests = benevolenceRequests.Where(b => b.RequestStatusValueId == requestStatusValueId); } // Filter by Benevolence Types var benevolenceTypeIds = cblBenevolenceType.SelectedValues.Where(v => v.ToIntSafe() > 0).Select(v => v.ToIntSafe()); if (benevolenceTypeIds?.Count() > 0) { benevolenceRequests = benevolenceRequests.Where(b => benevolenceTypeIds.Contains(b.BenevolenceTypeId)); } if (benevolenceTypeFilter?.Count() > 0) { benevolenceRequests = benevolenceRequests.Where(b => benevolenceTypeFilter.Contains(b.BenevolenceType.Guid)); } SortProperty sortProperty = gList.SortProperty; if (sortProperty != null) { if (sortProperty.Property == "TotalAmount") { if (sortProperty.Direction == SortDirection.Descending) { benevolenceRequests = benevolenceRequests.OrderByDescending(a => a.BenevolenceResults.Sum(b => b.Amount)); } else { benevolenceRequests = benevolenceRequests.OrderBy(a => a.BenevolenceResults.Sum(b => b.Amount)); } } } else { benevolenceRequests = benevolenceRequests.OrderByDescending(a => a.RequestDateTime).ThenByDescending(a => a.Id); } // Filter query by any configured attribute filters if (AvailableAttributes != null && AvailableAttributes.Any()) { foreach (var attribute in AvailableAttributes) { var filterControl = phAttributeFilters.FindControl("filter_" + attribute.Id.ToString()); benevolenceRequests = attribute.FieldType.Field.ApplyAttributeQueryFilter(benevolenceRequests, filterControl, attribute, benevolenceRequestService, Rock.Reporting.FilterMode.SimpleFilter); } } var personContext = this.ContextEntity <Person>(); if (personContext != null) { benevolenceRequests = benevolenceRequests.Where(a => a.RequestedByPersonAlias.PersonId == personContext.Id); } if (sortProperty != null) { gList.DataSource = benevolenceRequests.Sort(sortProperty).ToList(); } else { gList.DataSource = benevolenceRequests.OrderByDescending(p => p.CreatedDateTime).ThenByDescending(p => p.Id).ToList(); } // Hide the campus column if the campus filter is not visible. gList.ColumnsOfType <RockBoundField>().First(c => c.DataField == "Campus.Name").Visible = cpCampus.Visible; gList.EntityTypeId = EntityTypeCache.Get <BenevolenceRequest>().Id; gList.DataBind(); // Hide columns and specific fields if the hide column attributes are set on the block. if (hideGridColumns?.Count() > 0) { foreach (DataControlField controlField in gList.Columns) { controlField.Visible = !hideGridColumns.Contains(controlField.HeaderText.ToUpper()); } pnlSummary.Visible = !hideGridColumns.Contains("TOTAL RESULTS"); } // Hide the campus column if the campus filter is not visible. gList.ColumnsOfType <RockBoundField>().First(c => c.DataField == "Campus.Name").Visible = cpCampus.Visible; // Builds the Totals section var definedTypeCache = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_RESULT_TYPE)); Dictionary <string, decimal> resultTotals = new Dictionary <string, decimal>(); decimal grandTotal = 0; foreach (BenevolenceRequest request in benevolenceRequests) { foreach (BenevolenceResult result in request.BenevolenceResults) { if (result.Amount != null) { if (resultTotals.ContainsKey(result.ResultTypeValue.Value)) { resultTotals[result.ResultTypeValue.Value] += result.Amount.Value; } else { resultTotals.Add(result.ResultTypeValue.Value, result.Amount.Value); } grandTotal += result.Amount.Value; } } } foreach (KeyValuePair <string, decimal> keyValuePair in resultTotals) { phSummary.Controls.Add(new LiteralControl(string.Format("<div class='row'><div class='col-xs-8'>{0}: </div><div class='col-xs-4 text-right'>{1}</div></div>", keyValuePair.Key, keyValuePair.Value.FormatAsCurrency()))); } phSummary.Controls.Add(new LiteralControl(string.Format("<div class='row'><div class='col-xs-8'><b>Total: </div><div class='col-xs-4 text-right'>{0}</b></div></div>", grandTotal.FormatAsCurrency()))); }
/// <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.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; 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> /// 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> /// 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(); } } }