Example #1
0
        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();
                }
            }
        }
Example #2
0
        /// <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);
        }
Example #5
0
        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());
        }
Example #6
0
        /// <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;
            }
        }
Example #7
0
        /// <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);
        }
Example #8
0
        /// <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();
        }
Example #10
0
        /// <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);
        }
Example #11
0
        /// <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();
        }
Example #12
0
        /// <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 );
        }
Example #14
0
        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);
            }
        }
Example #15
0
        /// <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);
                }
            }
        }
Example #17
0
        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);
        }
Example #18
0
        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);
        }
Example #22
0
        /// <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();
        }
Example #24
0
        /// <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;
        }
Example #26
0
        /// <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)));
        }
Example #30
0
        /// <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();
        }
Example #32
0
        /// <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 ) ) );
        }
Example #37
0
        /// <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;
            }
        }
Example #39
0
        /// <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;
 }
Example #41
0
        /// <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();
        }
Example #47
0
        /// <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();
                }
            }
        }