示例#1
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 Benevolence Result.
            var benevolenceResultService = new BenevolenceResultService(context);

            var benevolenceResultQuery = benevolenceResultService.Queryable();

            if (dataView != null)
            {
                benevolenceResultQuery = DataComponentSettingsHelper.FilterByDataView(benevolenceResultQuery, dataView, benevolenceResultService);
            }

            var benevolenceRequestKey = benevolenceResultQuery.Select(a => a.BenevolenceRequestId);
            // Get all of the result corresponding to the qualifying Benevolence Requests.
            var qry = new BenevolenceRequestService(context).Queryable()
                      .Where(g => benevolenceRequestKey.Contains(g.Id));

            // Retrieve the Filter Expression.
            var extractedFilterExpression = FilterExpressionExtractor.Extract <Model.BenevolenceRequest>(qry, parameterExpression, "g");

            return(extractedFilterExpression);
        }
        /// <summary>
        /// Handles the Click event of the lbSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void lbSave_Click( object sender, EventArgs e )
        {
            if ( Page.IsValid )
            {
                RockContext rockContext = new RockContext();
                BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext );
                BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext );

                BenevolenceRequest benevolenceRequest = null;
                int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger();

                if ( !benevolenceRequestId.Equals( 0 ) )
                {
                    benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId );
                }

                if ( benevolenceRequest == null )
                {
                    benevolenceRequest = new BenevolenceRequest { Id = 0 };
                }

                benevolenceRequest.FirstName = dtbFirstName.Text;
                benevolenceRequest.LastName = dtbLastName.Text;
                benevolenceRequest.Email = ebEmail.Text;
                benevolenceRequest.RequestText = dtbRequestText.Text;
                benevolenceRequest.ResultSummary = dtbSummary.Text;
                benevolenceRequest.GovernmentId = dtbGovernmentId.Text;

                if ( lapAddress.Location != null )
                {
                    benevolenceRequest.LocationId = lapAddress.Location.Id;
                }

                benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId;
                benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedItem.Value.AsIntegerOrNull();
                benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedItem.Value.AsIntegerOrNull();
                benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedItem.Value.AsIntegerOrNull();

                if ( dpRequestDate.SelectedDate.HasValue )
                {
                    benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value;
                }

                benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number;
                benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number;
                benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number;

                List<BenevolenceResultInfo> resultList = BenevolenceResultsState;
                BenevolenceResult benevolenceResult = null;

                foreach ( BenevolenceResult result in benevolenceRequest.BenevolenceResults.ToList() )
                {
                    if ( resultList.FirstOrDefault( r => r.ResultId == result.Id ) == null )
                    {
                        benevolenceRequest.BenevolenceResults.Remove( result );
                        benevolenceResultService.Delete( result );
                    }
                }

                foreach ( BenevolenceResultInfo benevolenceResultInfo in resultList )
                {
                    if ( benevolenceResultInfo.ResultId == null )
                    {
                        benevolenceResult = new BenevolenceResult();
                        benevolenceResult.Amount = benevolenceResultInfo.Amount;
                        benevolenceResult.ResultSummary = benevolenceResultInfo.ResultSummary;
                        benevolenceResult.ResultTypeValueId = benevolenceResultInfo.ResultTypeValueId;
                        benevolenceResult.BenevolenceRequestId = benevolenceRequest.Id;
                        benevolenceRequest.BenevolenceResults.Add( benevolenceResult );
                    }
                }

                if ( benevolenceRequest.IsValid )
                {
                    if ( benevolenceRequest.Id.Equals( 0 ) )
                    {
                        benevolenceRequestService.Add( benevolenceRequest );
                    }

                    rockContext.SaveChanges();
                    NavigateToParentPage();
                }
            }
        }
        /// <summary>
        /// Handles the Click event of the lbSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void lbSave_Click( object sender, EventArgs e )
        {
            if ( Page.IsValid )
            {
                RockContext rockContext = new RockContext();
                BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext );
                BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext );

                BenevolenceRequest benevolenceRequest = null;
                int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger();

                if ( !benevolenceRequestId.Equals( 0 ) )
                {
                    benevolenceRequest = benevolenceRequestService.Get( benevolenceRequestId );
                }

                if ( benevolenceRequest == null )
                {
                    benevolenceRequest = new BenevolenceRequest { Id = 0 };
                }

                benevolenceRequest.FirstName = dtbFirstName.Text;
                benevolenceRequest.LastName = dtbLastName.Text;
                benevolenceRequest.Email = ebEmail.Text;
                benevolenceRequest.RequestText = dtbRequestText.Text;
                benevolenceRequest.ResultSummary = dtbSummary.Text;
                benevolenceRequest.CampusId = cpCampus.SelectedCampusId;
                benevolenceRequest.ProvidedNextSteps = dtbProvidedNextSteps.Text;
                benevolenceRequest.GovernmentId = dtbGovernmentId.Text;

                if ( lapAddress.Location != null )
                {
                    benevolenceRequest.LocationId = lapAddress.Location.Id;
                }

                benevolenceRequest.RequestedByPersonAliasId = ppPerson.PersonAliasId;
                benevolenceRequest.CaseWorkerPersonAliasId = ddlCaseWorker.SelectedValue.AsIntegerOrNull();
                benevolenceRequest.RequestStatusValueId = ddlRequestStatus.SelectedValue.AsIntegerOrNull();
                benevolenceRequest.ConnectionStatusValueId = ddlConnectionStatus.SelectedValue.AsIntegerOrNull();

                if ( dpRequestDate.SelectedDate.HasValue )
                {
                    benevolenceRequest.RequestDateTime = dpRequestDate.SelectedDate.Value;
                }

                benevolenceRequest.HomePhoneNumber = pnbHomePhone.Number;
                benevolenceRequest.CellPhoneNumber = pnbCellPhone.Number;
                benevolenceRequest.WorkPhoneNumber = pnbWorkPhone.Number;

                List<BenevolenceResultInfo> resultListUI = BenevolenceResultsState;
                var resultListDB = benevolenceRequest.BenevolenceResults.ToList();

                // remove any Benevolence Results that were removed in the UI
                foreach ( BenevolenceResult resultDB in resultListDB )
                {
                    if ( !resultListUI.Any( r => r.ResultId == resultDB.Id ) )
                    {
                        benevolenceRequest.BenevolenceResults.Remove( resultDB );
                        benevolenceResultService.Delete( resultDB );
                    }
                }

                // add any Benevolence Results that were added in the UI
                foreach ( BenevolenceResultInfo resultUI in resultListUI )
                {
                    var resultDB = resultListDB.FirstOrDefault( r => r.Guid == resultUI.TempGuid );
                    if ( resultDB == null )
                    {
                        resultDB = new BenevolenceResult();
                        resultDB.BenevolenceRequestId = benevolenceRequest.Id;
                        resultDB.Guid = resultUI.TempGuid;
                        benevolenceRequest.BenevolenceResults.Add( resultDB );
                    }

                    resultDB.Amount = resultUI.Amount;
                    resultDB.ResultSummary = resultUI.ResultSummary;
                    resultDB.ResultTypeValueId = resultUI.ResultTypeValueId;
                }

                if ( benevolenceRequest.IsValid )
                {
                    if ( benevolenceRequest.Id.Equals( 0 ) )
                    {
                        benevolenceRequestService.Add( benevolenceRequest );
                    }

                    // get attributes
                    benevolenceRequest.LoadAttributes();
                    Rock.Attribute.Helper.GetEditValues( phAttributes, benevolenceRequest );

                    rockContext.WrapTransaction( () =>
                    {
                        rockContext.SaveChanges();
                        benevolenceRequest.SaveAttributeValues( rockContext );
                    } );

                    // update related documents
                    var documentsService = new BenevolenceRequestDocumentService( rockContext );

                    // delete any images that were removed
                    var orphanedBinaryFileIds = new List<int>();
                    var documentsInDb = documentsService.Queryable().Where( b => b.BenevolenceRequestId == benevolenceRequest.Id ).ToList();

                    foreach ( var document in documentsInDb.Where( i => !DocumentsState.Contains( i.BinaryFileId ) ) )
                    {
                        orphanedBinaryFileIds.Add( document.BinaryFileId );
                        documentsService.Delete( document );
                    }

                    // save documents
                    int documentOrder = 0;
                    foreach ( var binaryFileId in DocumentsState )
                    {
                        // Add or Update the activity type
                        var document = documentsInDb.FirstOrDefault( i => i.BinaryFileId == binaryFileId );
                        if ( document == null )
                        {
                            document = new BenevolenceRequestDocument();
                            document.BenevolenceRequestId = benevolenceRequest.Id;
                            benevolenceRequest.Documents.Add( document );
                        }
                        document.BinaryFileId = binaryFileId;
                        document.Order = documentOrder;
                        documentOrder++;
                    }
                    rockContext.SaveChanges();

                    // redirect back to parent
                    var personId = this.PageParameter( "PersonId" ).AsIntegerOrNull();
                    var qryParams = new Dictionary<string, string>();
                    if ( personId.HasValue )
                    {
                        qryParams.Add( "PersonId", personId.ToString() );
                    }

                    NavigateToParentPage( qryParams );
                }
            }
        }
示例#4
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);
                }
            }
        }
示例#5
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();
                }
            }
        }
        /// <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 );
                }
            }
        }
示例#7
0
        /// <summary>
        /// Loads the BenevolenceResult data.
        /// </summary>
        /// <param name="csvData">The CSV data.</param>
        private int LoadBenevolenceResult(CSVInstance csvData)
        {
            var lookupContext             = new RockContext();
            var benevolenceResultService  = new BenevolenceResultService(lookupContext);
            var benevolenceRequestService = new BenevolenceRequestService(lookupContext);
            var resultTypeDTGuid          = Rock.SystemGuid.DefinedType.BENEVOLENCE_RESULT_TYPE.AsGuid();
            var benevolenceResultList     = new List <BenevolenceResult>();

            var importedRequestIds = new List <int>();

            var completed            = 0;
            var importedCount        = 0;
            var alreadyImportedCount = benevolenceResultService.Queryable().AsNoTracking().Count(i => i.ForeignKey != null);

            ReportProgress(0, $"Starting Benevolence Result import ({alreadyImportedCount:N0} already exist).");

            string[] row;
            // Uses a look-ahead enumerator: this call will move to the next record immediately
            while ((row = csvData.Database.FirstOrDefault()) != null)
            {
                var benevolenceResultRequestId   = row[BenevolenceResultRequestId];
                var benevolenceResultType        = row[BenevolenceResultType];
                var benevolenceResultId          = row[BenevolenceResultId];
                var benevolenceResultAmount      = row[BenevolenceResultAmount];
                var benevolenceResultSummary     = row[BenevolenceResultSummary];
                var benevolenceResultCreatedById = row[BenevolenceResultCreatedById];
                var benevolenceResultCreatedDate = row[BenevolenceResultCreatedDate];

                //
                // Verify the Benevolence Result has a Result Type provided in the csv file.
                //
                if (string.IsNullOrWhiteSpace(benevolenceResultType))
                {
                    ReportProgress(0, $"Benevolence Result {benevolenceResultId} has no BenevolenceResultType value provided. Skipping Benevolence Result {benevolenceResultId}.");
                    LogException("InvalidBenevolenceResult", string.Format("ResultId: {0} - Missing BenevolenceResultType value. Benevolence Result {0} was not imported.", benevolenceResultId));
                    completed++;
                    continue;
                }

                BenevolenceRequest benevolenceRequest = null;
                if (benevolenceRequestService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceResultRequestId))
                {
                    benevolenceRequest = benevolenceRequestService.Queryable().AsNoTracking().FirstOrDefault(r => r.ForeignKey == benevolenceResultRequestId);
                }

                //
                // Verify the Benevolence Request exists.
                //
                if (benevolenceRequest == null || benevolenceRequest.Id < 1)
                {
                    ReportProgress(0, $"Benevolence Request {benevolenceResultRequestId} not found. Skipping Benevolence Result {benevolenceResultId}.");
                    LogException("InvalidBenevolenceResult", string.Format("ResultId: {0} - BenevolenceResultRequestId {1} does not exist in imported Benevolence Requests. Benevolence Result {0} was not imported.", benevolenceResultId, benevolenceResultRequestId));
                    completed++;
                    continue;
                }

                //
                // Check that this Benevolence Result doesn't already exist.
                //
                var exists = false;
                if (alreadyImportedCount > 0)
                {
                    exists = benevolenceResultService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceResultId);
                }

                if (!exists)
                {
                    // Handle Result Type
                    var resultTypeDV = FindDefinedValueByTypeAndName(lookupContext, resultTypeDTGuid, benevolenceResultType);
                    if (resultTypeDV == null)
                    {
                        resultTypeDV = AddDefinedValue(new RockContext(), resultTypeDTGuid.ToString(), benevolenceResultType);
                    }

                    // Format created date
                    var resultCreatedDate = ( DateTime )ParseDateOrDefault(benevolenceResultCreatedDate, Bulldozer.BulldozerComponent.ImportDateTime);

                    // Handle created by
                    int?createdByAliasId    = null;
                    var createdByPersonKeys = GetPersonKeys(benevolenceResultCreatedById);
                    if (createdByPersonKeys != null)
                    {
                        createdByAliasId = createdByPersonKeys.PersonAliasId;
                    }

                    //
                    // Create and populate the new Benevolence Result.
                    //
                    var benevolenceResult = new BenevolenceResult
                    {
                        BenevolenceRequestId = benevolenceRequest.Id,
                        ResultSummary        = benevolenceResultSummary,
                        ResultTypeValueId    = resultTypeDV.Id,
                        Amount                 = benevolenceResultAmount.AsType <decimal?>(),
                        ForeignKey             = benevolenceResultId,
                        ForeignId              = benevolenceResultId.AsType <int?>(),
                        CreatedDateTime        = resultCreatedDate,
                        CreatedByPersonAliasId = createdByAliasId,
                    };

                    benevolenceResultList.Add(benevolenceResult);

                    importedCount++;
                }

                //
                // Notify user of our status.
                //
                completed++;
                if (completed % (ReportingNumber * 10) < 1)
                {
                    ReportProgress(0, $"{completed:N0} Benevolence Request records processed, {importedCount:N0} imported.");
                }

                if (completed % ReportingNumber < 1)
                {
                    SaveBenevolenceResults(benevolenceResultList);
                    ReportPartialProgress();
                    benevolenceResultList.Clear();

                    // Clear out variables
                    benevolenceRequestService = new BenevolenceRequestService(lookupContext);
                }
            }

            if (benevolenceResultList.Any())
            {
                SaveBenevolenceResults(benevolenceResultList);
            }

            ReportProgress(0, $"Finished Benevolence Result import: {importedCount:N0} records added.");

            return(completed);
        }
示例#8
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.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);
                }
            }
        }