コード例 #1
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns(BenevolenceRequest benevolenceRequest)
        {
            ddlRequestStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)), false);
            ddlConnectionStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)), true);

            Guid groupGuid  = GetAttributeValue("CaseWorkerRole").AsGuid();
            var  personList = new GroupMemberService(new RockContext())
                              .Queryable("Person, Group")
                              .Where(gm => gm.Group.Guid == groupGuid)
                              .Select(gm => gm.Person)
                              .ToList();

            string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString();

            if (benevolenceRequest.CaseWorkerPersonAlias != null &&
                benevolenceRequest.CaseWorkerPersonAlias.Person != null &&
                !personList.Select(p => p.Id).ToList().Contains(benevolenceRequest.CaseWorkerPersonAlias.Person.Id))
            {
                personList.Add(benevolenceRequest.CaseWorkerPersonAlias.Person);
            }

            ddlCaseWorker.DataSource     = personList.OrderBy(p => p.NickName).ThenBy(p => p.LastName).ToList();
            ddlCaseWorker.DataTextField  = "FullName";
            ddlCaseWorker.DataValueField = "PrimaryAliasId";
            ddlCaseWorker.DataBind();
            ddlCaseWorker.Items.Insert(0, new ListItem());
        }
コード例 #2
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;
            }
        }
コード例 #3
0
        public void BenevolenceRequestDateKeyGetsSetCorrectly()
        {
            var testList = TestDataHelper.GetAnalyticsSourceDateTestData();

            foreach (var keyValue in testList)
            {
                BenevolenceRequest benevolenceRequest = new BenevolenceRequest();
                benevolenceRequest.RequestDateTime = keyValue.Value;
                Assert.AreEqual(keyValue.Key, benevolenceRequest.RequestDateKey);
            }
        }
コード例 #4
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();
        }
コード例 #5
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns(BenevolenceRequest benevolenceRequest)
        {
            ddlRequestStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)), false);
            ddlConnectionStatus.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)), true);
            Guid groupGuid = GetAttributeValue("CaseWorkerGroup").AsGuid();
            var  listData  = new GroupMemberService(new RockContext()).Queryable("Person, Group")
                             .Where(gm => gm.Group.Guid == groupGuid)
                             .Select(gm => gm.Person)
                             .ToList();

            ddlCaseWorker.DataSource     = listData;
            ddlCaseWorker.DataTextField  = "FullName";
            ddlCaseWorker.DataValueField = "PrimaryAliasId";
            ddlCaseWorker.DataBind();
            ddlCaseWorker.Items.Insert(0, new ListItem());
        }
コード例 #6
0
        private BenevolenceRequest BuildBenevolenceRequest(RockContext rockContext, DateTime requestDate)
        {
            var requestStatuses    = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS));
            var requestStatusValue = requestStatuses.DefinedValues.First().Id;
            var personAlias        = new PersonAliasService(rockContext).Queryable().First();
            var connectionStatus   = new ConnectionStatusService(rockContext).Queryable().First();

            var benevolenceRequest = new BenevolenceRequest();

            benevolenceRequest.LastName             = "Name";
            benevolenceRequest.FirstName            = "Test";
            benevolenceRequest.RequestText          = "Request Text";
            benevolenceRequest.ForeignKey           = benevolenceRequestForeignKey;
            benevolenceRequest.RequestDateTime      = requestDate;
            benevolenceRequest.RequestStatusValueId = requestStatusValue;

            return(benevolenceRequest);
        }
コード例 #7
0
        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);
                }
            }
        }
コード例 #8
0
        /// <summary>
        /// Binds the attributes.
        /// </summary>
        private void BindAttributes()
        {
            // Parse the attribute filters
            AvailableAttributes = new List <AttributeCache>();

            int entityTypeId = new BenevolenceRequest().TypeId;

            foreach (var attributeModel in new AttributeService(new RockContext()).Queryable()
                     .Where(a =>
                            a.EntityTypeId == entityTypeId &&
                            a.IsGridColumn)
                     .OrderByDescending(a => a.EntityTypeQualifierColumn)
                     .ThenBy(a => a.Order)
                     .ThenBy(a => a.Name))
            {
                AvailableAttributes.Add(AttributeCache.Get(attributeModel));
            }
        }
コード例 #9
0
        /// <summary>
        /// Handles the RowDataBound event of the gGroupMembers control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param>
        public void gList_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                BenevolenceRequest benevolenceRequest = e.Row.DataItem as BenevolenceRequest;
                if (benevolenceRequest != null)
                {
                    Literal lName = e.Row.FindControl("lName") as Literal;
                    if (lName != null)
                    {
                        if (benevolenceRequest.RequestedByPersonAlias != null)
                        {
                            lName.Text = String.Format("<a href=\"{0}\">{1}</a>", ResolveUrl(string.Format("~/Person/{0}", benevolenceRequest.RequestedByPersonAlias.PersonId)), benevolenceRequest.RequestedByPersonAlias.Person.FullName ?? "");
                        }
                        else
                        {
                            lName.Text = String.Format("{0} {1}", benevolenceRequest.FirstName, benevolenceRequest.LastName);
                        }
                    }

                    Literal lResults = e.Row.FindControl("lResults") as Literal;
                    if (lResults != null)
                    {
                        StringBuilder stringBuilder = new StringBuilder();
                        stringBuilder.Append("<div class='col-md-12'>");
                        foreach (BenevolenceResult result in benevolenceRequest.BenevolenceResults)
                        {
                            if (result.Amount != null)
                            {
                                stringBuilder.Append(String.Format("<div class='row'>{0} ({1}{2:0.00})</div>", result.ResultTypeValue, GlobalAttributesCache.Value("CurrencySymbol"), result.Amount));
                            }
                            else
                            {
                                stringBuilder.Append(String.Format("<div class='row'>{0}</div>", result.ResultTypeValue));
                            }
                        }
                        stringBuilder.Append("</div>");
                        lResults.Text = stringBuilder.ToString();
                    }
                }
            }
        }
コード例 #10
0
        /// <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();
        }
コード例 #11
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns(BenevolenceRequest benevolenceRequest)
        {
            dvpRequestStatus.DefinedTypeId    = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS)).Id;
            dvpConnectionStatus.DefinedTypeId = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS)).Id;

            if (_caseWorkerGroupGuid.HasValue)
            {
                var personList = new GroupMemberService(new RockContext())
                                 .Queryable("Person, Group")
                                 .Where(gm => gm.Group.Guid == _caseWorkerGroupGuid.Value)
                                 .Select(gm => gm.Person)
                                 .ToList();

                string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString();
                if (benevolenceRequest.CaseWorkerPersonAlias != null &&
                    benevolenceRequest.CaseWorkerPersonAlias.Person != null &&
                    !personList.Select(p => p.Id).ToList().Contains(benevolenceRequest.CaseWorkerPersonAlias.Person.Id))
                {
                    personList.Add(benevolenceRequest.CaseWorkerPersonAlias.Person);
                }

                ddlCaseWorker.DataSource     = personList.OrderBy(p => p.NickName).ThenBy(p => p.LastName).ToList();
                ddlCaseWorker.DataTextField  = "FullName";
                ddlCaseWorker.DataValueField = "PrimaryAliasId";
                ddlCaseWorker.DataBind();
                ddlCaseWorker.Items.Insert(0, new ListItem());

                ppCaseWorker.Visible  = false;
                ddlCaseWorker.Visible = true;
            }
            else
            {
                ppCaseWorker.Visible  = true;
                ddlCaseWorker.Visible = false;
            }
        }
コード例 #12
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 );
                }
            }
        }
コード例 #13
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);
            }

            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);
        }
コード例 #14
0
ファイル: Benevolence.cs プロジェクト: KingdomFirst/Bulldozer
        /// <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);
        }
コード例 #15
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();
        }
コード例 #16
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);
        }
コード例 #17
0
        /// <summary>
        /// Handles the RowDataBound event of the gGroupMembers control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewRowEventArgs"/> instance containing the event data.</param>
        public void gList_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
        {
            if (e.Row.RowType != DataControlRowType.DataRow)
            {
                return;
            }

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                BenevolenceRequest benevolenceRequest = e.Row.DataItem as BenevolenceRequest;
                if (benevolenceRequest != null)
                {
                    Literal lName = e.Row.FindControl("lName") as Literal;
                    if (lName != null)
                    {
                        if (benevolenceRequest.RequestedByPersonAlias != null)
                        {
                            lName.Text = string.Format("<a href=\"{0}\">{1}</a>", ResolveUrl(string.Format("~/Person/{0}", benevolenceRequest.RequestedByPersonAlias.PersonId)), benevolenceRequest.RequestedByPersonAlias.Person.FullName ?? string.Empty);
                        }
                        else
                        {
                            lName.Text = string.Format("{0} {1}", benevolenceRequest.FirstName, benevolenceRequest.LastName);
                        }
                    }

                    Literal lResults = e.Row.FindControl("lResults") as Literal;
                    if (lResults != null)
                    {
                        StringBuilder stringBuilder = new StringBuilder();
                        stringBuilder.Append("<div class='col-md-12'>");
                        foreach (BenevolenceResult result in benevolenceRequest.BenevolenceResults)
                        {
                            if (result.Amount != null)
                            {
                                stringBuilder.Append(string.Format("<div class='row'>{0} ({1})</div>", result.ResultTypeValue, result.Amount.FormatAsCurrency()));
                            }
                            else
                            {
                                stringBuilder.Append(string.Format("<div class='row'>{0}</div>", result.ResultTypeValue));
                            }
                        }

                        stringBuilder.Append("</div>");
                        lResults.Text = stringBuilder.ToString();
                    }

                    HighlightLabel hlStatus = e.Row.FindControl("hlStatus") as HighlightLabel;
                    if (hlStatus != null)
                    {
                        switch (benevolenceRequest.RequestStatusValue.Value)
                        {
                        case "Approved":
                            hlStatus.Text      = "Approved";
                            hlStatus.LabelType = LabelType.Success;
                            return;

                        case "Denied":
                            hlStatus.Text      = "Denied";
                            hlStatus.LabelType = LabelType.Danger;
                            return;

                        case "Pending":
                            hlStatus.Text      = "Pending";
                            hlStatus.LabelType = LabelType.Default;
                            return;

                        default:
                            hlStatus.Text      = benevolenceRequest.RequestStatusValue.Value;
                            hlStatus.LabelType = LabelType.Info;
                            return;
                        }
                    }
                }
            }
        }
コード例 #18
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();
        }
コード例 #19
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>
 /// Loads the drop downs.
 /// </summary>
 private void LoadDropDowns( BenevolenceRequest benevolenceRequest )
 {
     ddlRequestStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS ) ), false );
     ddlConnectionStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS ) ), true );
     Guid groupGuid = GetAttributeValue( "CaseWorkerGroup" ).AsGuid();
     var listData = new GroupMemberService( new RockContext() ).Queryable( "Person, Group" )
         .Where( gm => gm.Group.Guid == groupGuid )
         .Select( gm => gm.Person )
         .ToList();
     ddlCaseWorker.DataSource = listData;
     ddlCaseWorker.DataTextField = "FullName";
     ddlCaseWorker.DataValueField = "PrimaryAliasId";
     ddlCaseWorker.DataBind();
     ddlCaseWorker.Items.Insert( 0, new ListItem() );
 }
        /// <summary>
        /// Handles the Click event of the lbSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void lbSave_Click( object sender, EventArgs e )
        {
            if ( Page.IsValid )
            {
                RockContext rockContext = new RockContext();
                BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService( rockContext );
                BenevolenceResultService benevolenceResultService = new BenevolenceResultService( rockContext );

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

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

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

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

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

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

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

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

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

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

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

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

                    rockContext.SaveChanges();
                    NavigateToParentPage();
                }
            }
        }
コード例 #22
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 );
                }
            }
        }
コード例 #23
0
ファイル: Attribute.cs プロジェクト: treusch/Bulldozer
        /// <summary>
        /// Maps the people attributes to date/text attributes.
        /// Also converts attribute comments to person notes.
        /// </summary>
        /// <param name="tableData">The table data.</param>
        /// <param name="totalRows">The total rows.</param>
        private void MapAttribute(IQueryable <Row> tableData, long totalRows = 0)
        {
            var lookupContext = new RockContext();
            var personService = new PersonService(lookupContext);

            var personAttributes       = new AttributeService(lookupContext).GetByEntityTypeId(PersonEntityTypeId).Include("Categories").AsNoTracking().ToList();
            var importedAttributeCount = lookupContext.AttributeValues.Count(v => v.Attribute.EntityTypeId == PersonEntityTypeId && v.ForeignKey != null);
            var baptizedHereAttribute  = personAttributes.FirstOrDefault(a => a.Key.Equals("BaptizedHere", StringComparison.InvariantCultureIgnoreCase));
            var newBenevolences        = new List <BenevolenceRequest>();
            var peopleToUpdate         = new Dictionary <int, Person>();

            if (totalRows == 0)
            {
                totalRows = tableData.Count();
            }

            var completedItems = 0;
            var percentage     = (totalRows - 1) / 100 + 1;

            ReportProgress(0, $"Verifying attribute import ({totalRows:N0} found, {importedAttributeCount:N0} already exist).");

            foreach (var row in tableData.OrderBy(r => r["Attribute_Name"]).ThenByDescending(r => r["Start_Date"] != null).ThenBy(r => r["Start_Date"]).ThenBy(r => r["End_Date"]).Where(r => r != null))
            {
                // add the new attribute
                var attributeGroupName = row["Attribute_Group_Name"] as string;
                var attributeName      = row["Attribute_Name"] as string;
                var attributeDate      = row["Start_Date"] as DateTime?;
                attributeDate = attributeDate ?? row["End_Date"] as DateTime?;
                var attributeComment = row["Comment"] as string;
                var attributeCreator = row["Staff_Individual_ID"] as int?;
                int?campusId         = null;

                if (attributeGroupName.IsNullOrWhiteSpace() && attributeName.IsNullOrWhiteSpace())
                {
                    continue;
                }

                // strip attribute group name (will become a category)
                if (attributeGroupName.Any(n => ValidDelimiters.Contains(n)))
                {
                    campusId = campusId ?? GetCampusId(attributeGroupName);
                    if (campusId.HasValue)
                    {
                        attributeGroupName = StripPrefix(attributeGroupName, campusId);
                    }
                }

                // strip attribute name
                if (attributeName.Any(n => ValidDelimiters.Contains(n)))
                {
                    campusId = campusId ?? GetCampusId(attributeName);
                    if (campusId.HasValue)
                    {
                        attributeName = StripPrefix(attributeName, campusId);
                    }
                }

                var personBaptizedHere     = false;
                var isBenevolenceAttribute = false;
                if (attributeName.StartsWith("Baptism", StringComparison.CurrentCultureIgnoreCase))
                {   // match the core Baptism attribute
                    attributeName      = "Baptism Date";
                    personBaptizedHere = attributeCreator.HasValue;
                }
                else if (attributeName.StartsWith("Benevolence", StringComparison.CurrentCultureIgnoreCase))
                {   // set a flag to create benevolence items
                    isBenevolenceAttribute = true;
                    attributeName          = attributeName.Replace("Benevolence", string.Empty).Trim();
                }
                else if (string.IsNullOrWhiteSpace(attributeName))
                {
                    attributeName = attributeGroupName;
                }

                Attribute primaryAttribute = null, campusAttribute = null;
                // don't create custom attributes for benevolence items
                if (!isBenevolenceAttribute)
                {
                    // create attributes if they don't exist
                    var attributeKey = attributeName.RemoveSpecialCharacters();
                    primaryAttribute = personAttributes.FirstOrDefault(a => a.Key.Equals(attributeKey, StringComparison.CurrentCultureIgnoreCase));
                    if (primaryAttribute == null)
                    {
                        primaryAttribute = AddEntityAttribute(lookupContext, PersonEntityTypeId, string.Empty, string.Empty, $"{attributeKey} imported {ImportDateTime}",
                                                              attributeGroupName, attributeName, attributeKey, attributeDate.HasValue ? DateFieldTypeId : TextFieldTypeId, importPersonAliasId: ImportPersonAliasId
                                                              );

                        personAttributes.Add(primaryAttribute);
                    }
                    // attribute already exists, add the new category
                    else if (!primaryAttribute.Categories.Any(c => c.Name.Equals(attributeGroupName)))
                    {
                        var attributeCategory = GetCategory(lookupContext, AttributeEntityTypeId, null, attributeGroupName, false, "EntityTypeId", PersonEntityTypeId.ToString());
                        primaryAttribute.Categories.Add(attributeCategory);
                    }

                    // only create a campus attribute if there was a campus prefix
                    campusAttribute = personAttributes.FirstOrDefault(a => a.Key.Equals($"{attributeKey}Campus", StringComparison.CurrentCultureIgnoreCase));
                    if (campusAttribute == null && campusId.HasValue)
                    {
                        campusAttribute = AddEntityAttribute(lookupContext, PersonEntityTypeId, string.Empty, string.Empty, $"{attributeKey}Campus imported {ImportDateTime}",
                                                             attributeGroupName, $"{attributeName} Campus", $"{attributeKey}Campus", CampusFieldTypeId
                                                             );

                        personAttributes.Add(campusAttribute);
                    }
                }

                // make sure we have a valid person to assign to
                var individualId   = row["Individual_Id"] as int?;
                var matchingPerson = GetPersonKeys(individualId, null, includeVisitors: false);
                if (matchingPerson != null)
                {
                    var person = !peopleToUpdate.ContainsKey(matchingPerson.PersonId)
                        ? personService.Queryable(includeDeceased: true).FirstOrDefault(p => p.Id == matchingPerson.PersonId)
                        : peopleToUpdate[matchingPerson.PersonId];

                    if (person != null)
                    {
                        int?creatorAliasId = null;
                        var noteCreator    = GetPersonKeys(attributeCreator);
                        if (noteCreator != null)
                        {
                            creatorAliasId = noteCreator.PersonAliasId;
                        }

                        if (!isBenevolenceAttribute)
                        {
                            // could have multiple attributes assigned to this person, don't overwrite previous
                            if (person.Attributes == null || person.AttributeValues == null)
                            {
                                person.Attributes      = new Dictionary <string, AttributeCache>();
                                person.AttributeValues = new Dictionary <string, AttributeValueCache>();
                            }

                            var attributeValue = attributeDate.HasValue ? attributeDate.Value.ToString("yyyy-MM-dd") : attributeComment;
                            if (string.IsNullOrWhiteSpace(attributeValue))
                            {
                                // add today's date so that the attribute at least gets a value
                                attributeValue = RockDateTime.Now.ToString("yyyy-MM-dd");
                            }

                            AddEntityAttributeValue(lookupContext, primaryAttribute, person, attributeValue);

                            if (personBaptizedHere)
                            {
                                AddEntityAttributeValue(lookupContext, baptizedHereAttribute, person, "Yes");
                            }

                            // Add the campus attribute value
                            if (campusAttribute != null && campusId.HasValue)
                            {
                                var campus = CampusList.FirstOrDefault(c => c.Id.Equals(campusId));
                                AddEntityAttributeValue(lookupContext, campusAttribute, person, campus.Guid.ToString());
                            }

                            // convert the attribute comment to a person note
                            if (!string.IsNullOrWhiteSpace(attributeComment))
                            {
                                // add the note to the person
                                AddEntityNote(lookupContext, PersonEntityTypeId, person.Id, attributeName, attributeComment, false, false,
                                              attributeGroupName, null, true, attributeDate, $"Imported {ImportDateTime}", creatorAliasId);
                            }
                        }
                        // benevolences require a date
                        else if (attributeDate.HasValue)
                        {
                            var requestText = !string.IsNullOrWhiteSpace(attributeComment) ? attributeComment : "N/A";
                            var benevolence = new BenevolenceRequest
                            {
                                CampusId                 = campusId,
                                RequestDateTime          = attributeDate.Value,
                                FirstName                = person.FirstName,
                                LastName                 = person.LastName,
                                Email                    = person.Email,
                                RequestedByPersonAliasId = person.PrimaryAliasId,
                                ConnectionStatusValueId  = person.ConnectionStatusValueId,
                                CaseWorkerPersonAliasId  = creatorAliasId,
                                RequestStatusValueId     = ParseBenevolenceStatus(attributeName),
                                RequestText              = requestText,
                                CreatedDateTime          = attributeDate.Value,
                                ModifiedDateTime         = attributeDate.Value,
                                CreatedByPersonAliasId   = creatorAliasId,
                                ModifiedByPersonAliasId  = ImportPersonAliasId,
                                ForeignKey               = $"Benevolence imported {ImportDateTime}"
                            };

                            newBenevolences.Add(benevolence);
                        }

                        // store the person lookup for this batch
                        if (!peopleToUpdate.ContainsKey(matchingPerson.PersonId))
                        {
                            peopleToUpdate.Add(matchingPerson.PersonId, person);
                        }
                        else
                        {
                            peopleToUpdate[matchingPerson.PersonId] = person;
                        }
                    }
                }

                completedItems++;
                if (completedItems % percentage < 1)
                {
                    var percentComplete = completedItems / percentage;
                    ReportProgress(percentComplete, $"{completedItems:N0} attributes imported ({percentComplete}% complete).");
                }

                if (completedItems % ReportingNumber < 1)
                {
                    SaveAttributes(peopleToUpdate);
                    SaveBenevolenceRequests(newBenevolences);

                    // reset so context doesn't bloat
                    lookupContext.Dispose();
                    lookupContext = new RockContext();
                    personService = new PersonService(lookupContext);
                    peopleToUpdate.Clear();
                    newBenevolences.Clear();
                    ReportPartialProgress();
                }
            }

            SaveAttributes(peopleToUpdate);
            SaveBenevolenceRequests(newBenevolences);

            ReportProgress(100, $"Finished attribute import: {completedItems:N0} attributes imported.");
        }
コード例 #24
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;
            }
        }
コード例 #25
0
        /// <summary>
        /// Binds the attributes.
        /// </summary>
        private void BindAttributes()
        {
            // Parse the attribute filters
            AvailableAttributes = new List<AttributeCache>();

            int entityTypeId = new BenevolenceRequest().TypeId;
            foreach ( var attributeModel in new AttributeService( new RockContext() ).Queryable()
                .Where( a =>
                    a.EntityTypeId == entityTypeId &&
                    a.IsGridColumn )
                .OrderByDescending( a => a.EntityTypeQualifierColumn )
                .ThenBy( a => a.Order )
                .ThenBy( a => a.Name ) )
            {
                AvailableAttributes.Add( AttributeCache.Read( attributeModel ) );
            }
        }
コード例 #26
0
        /// <summary>
        /// Loads the drop downs.
        /// </summary>
        private void LoadDropDowns( BenevolenceRequest benevolenceRequest )
        {
            ddlRequestStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS ) ), false );
            ddlConnectionStatus.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.PERSON_CONNECTION_STATUS ) ), true );

            Guid groupGuid = GetAttributeValue( "CaseWorkerRole" ).AsGuid();
            var personList = new GroupMemberService( new RockContext() )
                .Queryable( "Person, Group" )
                .Where( gm => gm.Group.Guid == groupGuid )
                .Select( gm => gm.Person )
                .ToList();

            string caseWorkerPersonAliasValue = benevolenceRequest.CaseWorkerPersonAliasId.ToString();
            if ( benevolenceRequest.CaseWorkerPersonAlias != null &&
                benevolenceRequest.CaseWorkerPersonAlias.Person != null &&
                !personList.Select( p => p.Id ).ToList().Contains( benevolenceRequest.CaseWorkerPersonAlias.Person.Id ) )
            {
                personList.Add( benevolenceRequest.CaseWorkerPersonAlias.Person );
            }

            ddlCaseWorker.DataSource = personList.OrderBy( p => p.NickName ).ThenBy( p => p.LastName ).ToList();
            ddlCaseWorker.DataTextField = "FullName";
            ddlCaseWorker.DataValueField = "PrimaryAliasId";
            ddlCaseWorker.DataBind();
            ddlCaseWorker.Items.Insert( 0, new ListItem() );
        }
コード例 #27
0
ファイル: Benevolence.cs プロジェクト: KingdomFirst/Bulldozer
        /// <summary>
        /// Loads the Benevolence Requests data.
        /// </summary>
        /// <param name="csvData">The CSV data.</param>
        private int LoadBenevolenceRequest(CSVInstance csvData)
        {
            var lookupContext               = new RockContext();
            var benevolenceRequestService   = new BenevolenceRequestService(lookupContext);
            var importedBenevolenceRequests = benevolenceRequestService.Queryable().Count(p => p.ForeignKey != null);
            var requestStatusDTGuid         = Rock.SystemGuid.DefinedType.BENEVOLENCE_REQUEST_STATUS.AsGuid();
            var requestStatusPendingDVId    = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.BENEVOLENCE_PENDING), lookupContext).Id;
            var homePhoneTypeDVId           = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_HOME), lookupContext).Id;
            var mobilePhoneTypeDVId         = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE), lookupContext).Id;
            var workPhoneTypeDVId           = DefinedValueCache.Get(new Guid(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_WORK), lookupContext).Id;

            var benevolenceRequestList = new List <BenevolenceRequest>();

            var completedItems = 0;
            var addedItems     = 0;

            ReportProgress(0, string.Format("Verifying benevolence request import ({0:N0} already imported).", importedBenevolenceRequests));

            string[] row;
            // Uses a look-ahead enumerator: this call will move to the next record immediately

            while ((row = csvData.Database.FirstOrDefault()) != null)
            {
                var benevolenceRequestText              = row[BenevolenceRequestText];
                var benevolenceRequestDate              = row[BenevolenceRequestDate];
                var benevolenceRequestId                = row[BenevolenceRequestId];
                var benevolenceRequestFirstName         = row[BenevolenceRequestFirstName];
                var benevolenceRequestLastName          = row[BenevolenceRequestLastName];
                var benevolenceRequestEmail             = row[BenevolenceRequestEmail];
                var benevolenceRequestCreatedById       = row[BenevolenceRequestCreatedById];
                var benevolenceRequestCreatedDate       = row[BenevolenceRequestCreatedDate];
                var benevolenceRequestRequestedById     = row[BenevolenceRequestRequestedById];
                var benevolenceRequestCaseWorkerId      = row[BenevolenceRequestCaseWorkerId];
                var benevolenceRequestCellPhone         = row[BenevolenceRequestCellPhone];
                var benevolenceRequestHomePhone         = row[BenevolenceRequestHomePhone];
                var benevolenceRequestWorkPhone         = row[BenevolenceRequestWorkPhone];
                var benevolenceRequestGovernmentId      = row[BenevolenceRequestGovernmentId];
                var benevolenceRequestProvidedNextSteps = row[BenevolenceRequestProvidedNextSteps];
                var benevolenceRequestStatus            = row[BenevolenceRequestStatus];
                var benevolenceRequestResultSummary     = row[BenevolenceRequestResultSummary];
                var benevolenceRequestAddress           = row[BenevolenceRequestAddress];
                var benevolenceRequestAddress2          = row[BenevolenceRequestAddress2];
                var benevolenceRequestCity              = row[BenevolenceRequestCity];
                var benevolenceRequestState             = row[BenevolenceRequestState];
                var benevolenceRequestZip               = row[BenevolenceRequestZip];
                var benevolenceRequestCountry           = row[BenevolenceRequestCountry];

                //
                // Verify we have the minimum required information for a valid BenevolenceRequest in the csv file.
                //
                if (string.IsNullOrWhiteSpace(benevolenceRequestText) ||
                    (string.IsNullOrWhiteSpace(benevolenceRequestRequestedById) && (string.IsNullOrWhiteSpace(benevolenceRequestFirstName) || string.IsNullOrWhiteSpace(benevolenceRequestLastName))))
                {
                    ReportProgress(0, $"Benevolence Request {benevolenceRequestId} is missing information. See exception log for details.");
                    LogException("InvalidBenevolenceRequest", string.Format("RequestId: {0} - BenevolenceRequestText and either BenevolenceRequestRequestedById or both BenevolenceRequestFirstName and BenevolenceRequestLastName are required. Benevolence Request {0} was not imported.", benevolenceRequestId));
                    completedItems++;
                    continue;
                }

                //
                // Check that this Benevolence Request doesn't already exist.
                //
                var exists = false;
                if (importedBenevolenceRequests > 0)
                {
                    exists = benevolenceRequestService.Queryable().AsNoTracking().Any(r => r.ForeignKey == benevolenceRequestId);
                }

                if (!exists)
                {
                    var email = string.Empty;
                    if (benevolenceRequestEmail.IsEmail())
                    {
                        email = benevolenceRequestEmail;
                    }

                    int?requestedByAliasId    = null;
                    var requestedByPersonKeys = GetPersonKeys(benevolenceRequestRequestedById);
                    if (requestedByPersonKeys != null)
                    {
                        requestedByAliasId = requestedByPersonKeys.PersonAliasId;
                    }

                    int?createdByAliasId    = null;
                    var createdByPersonKeys = GetPersonKeys(benevolenceRequestCreatedById);
                    if (createdByPersonKeys != null)
                    {
                        createdByAliasId = createdByPersonKeys.PersonAliasId;
                    }

                    int?caseWorkerAliasId    = null;
                    var caseWorkerPersonKeys = GetPersonKeys(benevolenceRequestCaseWorkerId);
                    if (caseWorkerPersonKeys != null)
                    {
                        caseWorkerAliasId = caseWorkerPersonKeys.PersonAliasId;
                    }

                    var requestDate = ( DateTime )ParseDateOrDefault(benevolenceRequestDate, Bulldozer.BulldozerComponent.ImportDateTime);
                    var dateCreated = ( DateTime )ParseDateOrDefault(benevolenceRequestCreatedDate, Bulldozer.BulldozerComponent.ImportDateTime);

                    var benevolenceRequest = new BenevolenceRequest
                    {
                        RequestedByPersonAliasId = requestedByAliasId,
                        FirstName               = benevolenceRequestFirstName,
                        LastName                = benevolenceRequestLastName,
                        Email                   = email,
                        RequestText             = benevolenceRequestText,
                        RequestDateTime         = requestDate,
                        CreatedDateTime         = dateCreated,
                        CreatedByPersonAliasId  = createdByAliasId,
                        ResultSummary           = benevolenceRequestResultSummary,
                        CaseWorkerPersonAliasId = caseWorkerAliasId,
                        ForeignKey              = benevolenceRequestId,
                        ForeignId               = benevolenceRequestId.AsType <int?>()
                    };
                    // Handle request Status
                    if (!string.IsNullOrWhiteSpace(benevolenceRequestStatus))
                    {
                        var statusDV = FindDefinedValueByTypeAndName(lookupContext, requestStatusDTGuid, benevolenceRequestStatus);
                        if (statusDV == null)
                        {
                            statusDV = AddDefinedValue(new RockContext(), requestStatusDTGuid.ToString(), benevolenceRequestStatus);
                        }
                        benevolenceRequest.RequestStatusValueId = statusDV.Id;
                    }
                    else
                    {
                        // set default status to pending
                        benevolenceRequest.RequestStatusValueId = requestStatusPendingDVId;
                    }

                    // Check for requester person and use its info instead
                    if (requestedByAliasId.HasValue && requestedByAliasId.Value > 0)
                    {
                        Person requester            = null;
                        var    requesterPersonAlias = new PersonAliasService(lookupContext).Queryable()
                                                      .AsNoTracking()
                                                      .FirstOrDefault(pa => pa.Id == requestedByAliasId.Value);
                        if (requesterPersonAlias != null && requesterPersonAlias.PersonId > 0)
                        {
                            requester = requesterPersonAlias.Person;
                        }

                        if (requester != null)
                        {
                            if (!string.IsNullOrWhiteSpace(requester.NickName))
                            {
                                benevolenceRequest.FirstName = requester.NickName;
                            }
                            else if (!string.IsNullOrWhiteSpace(requester.FirstName))
                            {
                                benevolenceRequest.FirstName = requester.FirstName;
                            }
                            if (!string.IsNullOrWhiteSpace(requester.LastName))
                            {
                                benevolenceRequest.LastName = requester.LastName;
                            }
                            if (!string.IsNullOrWhiteSpace(requester.Email))
                            {
                                benevolenceRequest.Email = requester.Email;
                            }
                            if (requester.PrimaryCampusId.HasValue)
                            {
                                benevolenceRequest.CampusId = requester.PrimaryCampusId;
                            }
                            if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == homePhoneTypeDVId))
                            {
                                benevolenceRequest.HomePhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == homePhoneTypeDVId).NumberFormatted;
                            }
                            if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == mobilePhoneTypeDVId))
                            {
                                benevolenceRequest.CellPhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == mobilePhoneTypeDVId).NumberFormatted;
                            }
                            if (requester.PhoneNumbers.Any(n => n.NumberTypeValueId.Value == workPhoneTypeDVId))
                            {
                                benevolenceRequest.WorkPhoneNumber = requester.PhoneNumbers.FirstOrDefault(n => n.NumberTypeValueId.Value == workPhoneTypeDVId).NumberFormatted;
                            }
                            var requesterAddressLocation = requester.GetHomeLocation();
                            if (requesterAddressLocation != null)
                            {
                                benevolenceRequest.LocationId = requesterAddressLocation.Id;
                            }
                        }
                        else
                        {
                            benevolenceRequestRequestedById = null;
                        }
                    }
                    if (string.IsNullOrWhiteSpace(benevolenceRequestRequestedById))
                    {
                        // Handle Address
                        var requestAddress = new LocationService(lookupContext).Get(benevolenceRequestAddress.Left(100), benevolenceRequestAddress2.Left(100), benevolenceRequestCity, benevolenceRequestState, benevolenceRequestZip, benevolenceRequestCountry, verifyLocation: false);
                        if (requestAddress != null)
                        {
                            benevolenceRequest.LocationId = requestAddress.Id;
                        }
                    }
                    benevolenceRequestList.Add(benevolenceRequest);
                    addedItems++;
                }
                completedItems++;
                if (completedItems % (ReportingNumber * 10) < 1)
                {
                    ReportProgress(0, string.Format("{0:N0} benevolence requests processed.", completedItems));
                }

                if (completedItems % ReportingNumber < 1)
                {
                    SaveBenevolenceRequests(benevolenceRequestList);
                    ReportPartialProgress();
                    benevolenceRequestList.Clear();
                }
            }

            if (benevolenceRequestList.Any())
            {
                SaveBenevolenceRequests(benevolenceRequestList);
            }

            ReportProgress(100, string.Format("Finished benevolence request import: {0:N0} benevolence requests processed, {1:N0} imported.", completedItems, addedItems));
            return(completedItems);
        }
コード例 #28
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);
                }
            }
        }
コード例 #29
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);
                }
            }
        }
コード例 #30
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 );
            }

            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 );
        }
コード例 #31
0
ファイル: BenevolenceResultAdd.cs プロジェクト: sjison/Rock
        /// <summary>
        /// Executes the specified workflow.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="action">The action.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns></returns>
        public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            var mergeFields = GetMergeFields(action);

            // get benevolence request id
            var requestGuid = GetAttributeValue(action, "BenevolenceRequest", true).AsGuidOrNull();

            if (!requestGuid.HasValue)
            {
                var errorMessage = "A valid benevolence request ID was not provided.";
                errorMessages.Add(errorMessage);
                action.AddLogEntry(errorMessage, true);
                return(false);
            }

            // get result summary
            var resultSummary = GetAttributeValue(action, "ResultSummary", true).ResolveMergeFields(mergeFields);

            // get next steps
            var nextSteps = GetAttributeValue(action, "NextSteps", true).ResolveMergeFields(mergeFields);

            // get result type
            var resultType = DefinedValueCache.Read(GetAttributeValue(action, "ResultType", true).AsGuid());

            if (resultType == null)
            {
                var errorMessage = "A valid result type was not provided.";
                errorMessages.Add(errorMessage);
                action.AddLogEntry(errorMessage, true);
                return(false);
            }

            // get result details
            var resultDetails = GetAttributeValue(action, "ResultDetails", true).ResolveMergeFields(mergeFields);

            // get amount
            var amount = GetAttributeValue(action, "ResultAmount", true).AsDecimalOrNull();

            if (!amount.HasValue)
            {
                var errorMessage = "A valid result amount was not provided.";
                errorMessages.Add(errorMessage);
                action.AddLogEntry(errorMessage, true);
                return(false);
            }

            // create benevolence request
            BenevolenceRequestService benevolenceRequestService = new BenevolenceRequestService(rockContext);

            BenevolenceRequest request = benevolenceRequestService.Get(requestGuid.Value);

            if (request == null)
            {
                var errorMessage = "The benevolence request provided could not be found.";
                errorMessages.Add(errorMessage);
                action.AddLogEntry(errorMessage, true);
                return(false);
            }

            if (nextSteps.IsNotNullOrWhitespace())
            {
                request.ProvidedNextSteps = nextSteps;
            }

            if (resultSummary.IsNotNullOrWhitespace())
            {
                request.ResultSummary = resultSummary;
            }

            BenevolenceResult result = new BenevolenceResult();

            request.BenevolenceResults.Add(result);

            result.Amount            = amount;
            result.ResultTypeValueId = resultType.Id;
            result.ResultSummary     = resultDetails;

            rockContext.SaveChanges();

            return(true);
        }
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit( EventArgs e )
        {
            base.OnInit( e );

            // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it
            this.BlockUpdated += Block_BlockUpdated;
            this.AddConfigurationUpdateTrigger( upnlContent );
            gResults.DataKeyNames = new string[] { "TempGuid" };
            gResults.Actions.AddClick += gResults_AddClick;
            gResults.Actions.ShowAdd = true;
            gResults.IsDeleteEnabled = true;

            // Gets any existing results and places them into the ViewState
            BenevolenceRequest benevolenceRequest = null;
            int benevolenceRequestId = PageParameter( "BenevolenceRequestId" ).AsInteger();
            if ( !benevolenceRequestId.Equals( 0 ) )
            {
                benevolenceRequest = new BenevolenceRequestService( new RockContext() ).Get( benevolenceRequestId );
            }
            if ( benevolenceRequest == null )
            {
                benevolenceRequest = new BenevolenceRequest { Id = 0 };
            }
            if ( ViewState["BenevolenceResultInfoState"] == null )
            {
                List<BenevolenceResultInfo> brInfoList = new List<BenevolenceResultInfo>();
                foreach ( BenevolenceResult benevolenceResult in benevolenceRequest.BenevolenceResults )
                {
                    BenevolenceResultInfo benevolenceResultInfo = new BenevolenceResultInfo();
                    benevolenceResultInfo.ResultId = benevolenceResult.Id;
                    benevolenceResultInfo.Amount = benevolenceResult.Amount;
                    benevolenceResultInfo.TempGuid = benevolenceResult.Guid;
                    benevolenceResultInfo.ResultSummary = benevolenceResult.ResultSummary;
                    benevolenceResultInfo.ResultTypeValueId = benevolenceResult.ResultTypeValueId;
                    benevolenceResultInfo.ResultTypeName = benevolenceResult.ResultTypeValue.Value;
                    brInfoList.Add( benevolenceResultInfo );
                }
                BenevolenceResultsState = brInfoList;
            }
        }
コード例 #33
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>
        /// 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();
        }
コード例 #35
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();
        }