public GetByGroupId ( int groupId, bool includeDeceased = false ) : IQueryable |
||
groupId | int | A |
includeDeceased | bool | A |
Результат | IQueryable |
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The workflow action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> /// <exception cref="System.NotImplementedException"></exception> public override bool Execute( RockContext rockContext, Model.WorkflowAction action, Object entity, out List<string> errorMessages ) { var checkInState = GetCheckInState( entity, out errorMessages ); if ( checkInState != null ) { var family = checkInState.CheckIn.Families.Where( f => f.Selected ).FirstOrDefault(); if ( family != null ) { var service = new GroupMemberService( rockContext ); foreach ( var groupMember in service.GetByGroupId( family.Group.Id ).AsNoTracking().ToList() ) { if ( !family.People.Any( p => p.Person.Id == groupMember.PersonId ) ) { var person = new CheckInPerson(); person.Person = groupMember.Person.Clone( false ); person.FamilyMember = true; family.People.Add( person ); } } return true; } else { errorMessages.Add( "There is not a family that is selected" ); } return false; } return false; }
/// <summary> /// Executes the specified workflow. /// </summary> /// <param name="rockContext">The rock context.</param> /// <param name="action">The workflow action.</param> /// <param name="entity">The entity.</param> /// <param name="errorMessages">The error messages.</param> /// <returns></returns> /// <exception cref="System.NotImplementedException"></exception> public override bool Execute( RockContext rockContext, Model.WorkflowAction action, Object entity, out List<string> errorMessages ) { var checkInState = GetCheckInState( entity, out errorMessages ); if ( checkInState != null ) { var family = checkInState.CheckIn.CurrentFamily; if ( family != null ) { var service = new GroupMemberService( rockContext ); var people = service.GetByGroupId( family.Group.Id ).AsNoTracking(); if ( checkInState.CheckInType != null && checkInState.CheckInType.PreventInactivePeopele ) { var dvInactive = DefinedValueCache.Read( Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_INACTIVE.AsGuid() ); if ( dvInactive != null ) { people = people.Where( m => m.Person.RecordStatusValueId != dvInactive.Id ); } } foreach ( var groupMember in people.ToList() ) { if ( !family.People.Any( p => p.Person.Id == groupMember.PersonId ) ) { var person = new CheckInPerson(); person.Person = groupMember.Person.Clone( false ); person.FamilyMember = true; family.People.Add( person ); } } return true; } else { errorMessages.Add( "There is not a family that is selected" ); } return false; } return false; }
/// <summary> /// Deletes the family's addresses, phone numbers, photos, viewed records, and people. /// TODO: delete attendance codes for attendance data that's about to be deleted when /// we delete the person record. /// </summary> /// <param name="families">The families.</param> /// <param name="rockContext">The rock context.</param> private void DeleteExistingFamilyData( XElement families, RockContext rockContext ) { PersonService personService = new PersonService( rockContext ); PhoneNumberService phoneNumberService = new PhoneNumberService( rockContext ); PersonViewedService personViewedService = new PersonViewedService( rockContext ); PageViewService pageViewService = new PageViewService( rockContext ); BinaryFileService binaryFileService = new BinaryFileService( rockContext ); PersonAliasService personAliasService = new PersonAliasService( rockContext ); PersonDuplicateService personDuplicateService = new PersonDuplicateService( rockContext ); NoteService noteService = new NoteService( rockContext ); AuthService authService = new AuthService( rockContext ); CommunicationService communicationService = new CommunicationService( rockContext ); CommunicationRecipientService communicationRecipientService = new CommunicationRecipientService( rockContext ); FinancialBatchService financialBatchService = new FinancialBatchService( rockContext ); FinancialTransactionService financialTransactionService = new FinancialTransactionService( rockContext ); PersonPreviousNameService personPreviousNameService = new PersonPreviousNameService( rockContext ); ConnectionRequestService connectionRequestService = new ConnectionRequestService( rockContext ); ConnectionRequestActivityService connectionRequestActivityService = new ConnectionRequestActivityService( rockContext ); // delete the batch data List<int> imageIds = new List<int>(); foreach ( var batch in financialBatchService.Queryable().Where( b => b.Name.StartsWith( "SampleData" ) ) ) { imageIds.AddRange( batch.Transactions.SelectMany( t => t.Images ).Select( i => i.BinaryFileId ).ToList() ); financialTransactionService.DeleteRange( batch.Transactions ); financialBatchService.Delete( batch ); } // delete all transaction images foreach ( var image in binaryFileService.GetByIds( imageIds ) ) { binaryFileService.Delete( image ); } foreach ( var elemFamily in families.Elements( "family" ) ) { Guid guid = elemFamily.Attribute( "guid" ).Value.Trim().AsGuid(); GroupService groupService = new GroupService( rockContext ); Group family = groupService.Get( guid ); if ( family != null ) { var groupMemberService = new GroupMemberService( rockContext ); var members = groupMemberService.GetByGroupId( family.Id, true ); // delete the people records string errorMessage; List<int> photoIds = members.Select( m => m.Person ).Where( p => p.PhotoId != null ).Select( a => (int)a.PhotoId ).ToList(); foreach ( var person in members.Select( m => m.Person ) ) { person.GivingGroup = null; person.GivingGroupId = null; person.PhotoId = null; // delete phone numbers foreach ( var phone in phoneNumberService.GetByPersonId( person.Id ) ) { if ( phone != null ) { phoneNumberService.Delete( phone ); } } // delete communication recipient foreach ( var recipient in communicationRecipientService.Queryable().Where( r => r.PersonAlias.PersonId == person.Id ) ) { communicationRecipientService.Delete( recipient ); } // delete communication foreach ( var communication in communicationService.Queryable().Where( c => c.SenderPersonAliasId == person.PrimaryAlias.Id ) ) { communicationService.Delete( communication ); } // delete person viewed records foreach ( var view in personViewedService.GetByTargetPersonId( person.Id ) ) { personViewedService.Delete( view ); } // delete page viewed records foreach ( var view in pageViewService.GetByPersonId( person.Id ) ) { pageViewService.Delete( view ); } // delete notes created by them or on their record. foreach ( var note in noteService.Queryable().Where ( n => n.CreatedByPersonAlias.PersonId == person.Id || (n.NoteType.EntityTypeId == _personEntityTypeId && n.EntityId == person.Id ) ) ) { noteService.Delete( note ); } // delete previous names on their records foreach ( var previousName in personPreviousNameService.Queryable().Where( r => r.PersonAlias.PersonId == person.Id ) ) { personPreviousNameService.Delete( previousName ); } // delete any GroupMember records they have foreach ( var groupMember in groupMemberService.Queryable().Where( gm => gm.PersonId == person.Id ) ) { groupMemberService.Delete( groupMember ); } //// delete any Authorization data //foreach ( var auth in authService.Queryable().Where( a => a.PersonId == person.Id ) ) //{ // authService.Delete( auth ); //} // delete their aliases foreach ( var alias in personAliasService.Queryable().Where( a => a.PersonId == person.Id ) ) { foreach ( var duplicate in personDuplicateService.Queryable().Where( d => d.DuplicatePersonAliasId == alias.Id ) ) { personDuplicateService.Delete( duplicate ); } personAliasService.Delete( alias ); } // delete any connection requests tied to them foreach ( var request in connectionRequestService.Queryable().Where( r => r.PersonAlias.PersonId == person.Id || r.ConnectorPersonAlias.PersonId == person.Id ) ) { connectionRequestActivityService.DeleteRange( request.ConnectionRequestActivities ); connectionRequestService.Delete( request ); } // Save these changes so the CanDelete passes the check... //rockContext.ChangeTracker.DetectChanges(); rockContext.SaveChanges( disablePrePostProcessing: true ); if ( personService.CanDelete( person, out errorMessage ) ) { personService.Delete( person ); //rockContext.ChangeTracker.DetectChanges(); //rockContext.SaveChanges( disablePrePostProcessing: true ); } else { throw new Exception( string.Format( "Trying to delete {0}, but: {1}", person.FullName, errorMessage ) ); } } //rockContext.ChangeTracker.DetectChanges(); rockContext.SaveChanges( disablePrePostProcessing: true ); // delete all member photos foreach ( var photo in binaryFileService.GetByIds( photoIds ) ) { binaryFileService.Delete( photo ); } DeleteGroupAndMemberData( family, rockContext ); } } }
public DataSet GetContributionTransactions( int groupId, int? personId, [FromBody]Rock.Net.RestParameters.ContributionStatementOptions options ) { var user = CurrentUser(); if ( user == null ) { // unable to determine user throw new HttpResponseException( HttpStatusCode.Unauthorized ); } if ( !new FinancialTransaction().IsAuthorized( "View", user.Person ) ) { // user can't view FinancialTransactions throw new HttpResponseException( HttpStatusCode.Unauthorized ); } var qry = Get() .Where( a => a.TransactionDateTime >= options.StartDate ) .Where( a => a.TransactionDateTime < ( options.EndDate ?? DateTime.MaxValue ) ); if ( personId.HasValue ) { // get transactions for a specific person qry = qry.Where( a => a.AuthorizedPersonId == personId.Value ); } else { // get transactions for all the persons in the specified group that have specified that group as their GivingGroup GroupMemberService groupMemberService = new GroupMemberService(); var personIdList = groupMemberService.GetByGroupId( groupId ).Where( a => a.Person.GivingGroupId == groupId ).Select( s => s.PersonId ).ToList(); qry = qry.Where( a => personIdList.Contains( a.AuthorizedPersonId.Value ) ); } if ( options.AccountIds != null ) { qry = qry.Where( a => options.AccountIds.Contains( a.TransactionDetails.FirstOrDefault().AccountId ) ); } var selectQry = qry.Select( a => new { a.TransactionDateTime, CurrencyTypeValueName = a.CurrencyTypeValue.Name, a.Summary, Account = a.TransactionDetails.FirstOrDefault().Account, a.Amount } ).OrderBy( a => a.TransactionDateTime ); DataTable dataTable = new DataTable( "contribution_transactions" ); dataTable.Columns.Add( "TransactionDateTime", typeof(DateTime) ); dataTable.Columns.Add( "CurrencyTypeValueName" ); dataTable.Columns.Add( "Summary" ); dataTable.Columns.Add( "AccountId", typeof(int) ); dataTable.Columns.Add( "AccountName" ); dataTable.Columns.Add( "Amount", typeof(decimal) ); var list = selectQry.ToList(); dataTable.BeginLoadData(); foreach ( var fieldItems in list ) { var itemArray = new object[] { fieldItems.TransactionDateTime, fieldItems.CurrencyTypeValueName, fieldItems.Summary, fieldItems.Account.Id, fieldItems.Account.Name, fieldItems.Amount }; dataTable.Rows.Add( itemArray ); } dataTable.EndLoadData(); DataSet dataSet = new DataSet(); dataSet.Tables.Add( dataTable ); return dataSet; }
/// <summary> /// Handles the Click event of the btnDelete 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 btnDelete_Click( object sender, EventArgs e ) { var familyGroupId = _family.Id; var rockContext = new RockContext(); var familyMemberService = new GroupMemberService( rockContext ); var familyMembers = familyMemberService.GetByGroupId( familyGroupId, true ); if (familyMembers.Count() == 1) { var fm = familyMembers.FirstOrDefault(); // If the person's giving group id is this family, change their giving group id to null if ( fm.Person.GivingGroupId == fm.GroupId ) { var personService = new PersonService( rockContext ); var person = personService.Get( fm.PersonId ); var demographicChanges = new List<string>(); History.EvaluateChange( demographicChanges, "Giving Group", person.GivingGroup.Name, "" ); person.GivingGroupId = null; HistoryService.SaveChanges( rockContext, typeof( Person ), Rock.SystemGuid.Category.HISTORY_PERSON_DEMOGRAPHIC_CHANGES.AsGuid(), person.Id, demographicChanges ); rockContext.SaveChanges(); } // remove person from family var oldMemberChanges = new List<string>(); History.EvaluateChange( oldMemberChanges, "Role", fm.GroupRole.Name, string.Empty ); History.EvaluateChange( oldMemberChanges, "Family", fm.Group.Name, string.Empty ); HistoryService.SaveChanges( rockContext, typeof( Person ), Rock.SystemGuid.Category.HISTORY_PERSON_FAMILY_CHANGES.AsGuid(), fm.Person.Id, oldMemberChanges, fm.Group.Name, typeof( Group ), fm.Group.Id ); familyMemberService.Delete( fm ); rockContext.SaveChanges(); } var familyService = new GroupService( rockContext ); // get the family that we want to delete (if it has no members ) var family = familyService.Queryable() .Where( g => g.Id == familyGroupId && !g.Members.Any() ) .FirstOrDefault(); if ( family != null ) { familyService.Delete( family ); rockContext.SaveChanges(); } Response.Redirect( string.Format( "~/Person/{0}", Person.Id ), false ); }
/// <summary> /// Deletes the family's addresses, phone numbers, photos, viewed records, and people. /// TODO: delete attendance codes for attendance data that's about to be deleted when /// we delete the person record. /// </summary> /// <param name="families">The families.</param> /// <param name="rockContext">The rock context.</param> private void DeleteExistingFamilyData( XElement families, RockContext rockContext ) { PersonService personService = new PersonService( rockContext ); PhoneNumberService phoneNumberService = new PhoneNumberService( rockContext ); PersonViewedService personViewedService = new PersonViewedService( rockContext ); PageViewService pageViewService = new PageViewService( rockContext ); BinaryFileService binaryFileService = new BinaryFileService( rockContext ); PersonAliasService personAliasService = new PersonAliasService( rockContext ); NoteService noteService = new NoteService( rockContext ); AuthService authService = new AuthService( rockContext ); foreach ( var elemFamily in families.Elements( "family" ) ) { Guid guid = elemFamily.Attribute( "guid" ).Value.Trim().AsGuid(); GroupService groupService = new GroupService( rockContext ); Group family = groupService.Get( guid ); if ( family != null ) { var groupMemberService = new GroupMemberService( rockContext ); var members = groupMemberService.GetByGroupId( family.Id ); // delete the people records string errorMessage; List<int> photoIds = members.Select( m => m.Person ).Where( p => p.PhotoId != null ).Select( a => (int)a.PhotoId ).ToList(); foreach ( var person in members.Select( m => m.Person ) ) { person.GivingGroup = null; person.GivingGroupId = null; person.PhotoId = null; // delete phone numbers foreach ( var phone in phoneNumberService.GetByPersonId( person.Id ) ) { if ( phone != null ) { phoneNumberService.Delete( phone ); } } // delete person viewed records foreach ( var view in personViewedService.GetByTargetPersonId( person.Id ) ) { personViewedService.Delete( view ); } // delete page viewed records foreach ( var view in pageViewService.GetByPersonId( person.Id ) ) { pageViewService.Delete( view ); } // delete notes created by them or on their record. foreach ( var note in noteService.Queryable().Where ( n => n.CreatedByPersonAlias.PersonId == person.Id || (n.NoteType.EntityTypeId == _personEntityTypeId && n.EntityId == person.Id ) ) ) { noteService.Delete( note ); } //// delete any GroupMember records they have //foreach ( var groupMember in groupMemberService.Queryable().Where( gm => gm.PersonId == person.Id ) ) //{ // groupMemberService.Delete( groupMember ); //} //// delete any Authorization data //foreach ( var auth in authService.Queryable().Where( a => a.PersonId == person.Id ) ) //{ // authService.Delete( auth ); //} // delete their aliases foreach ( var alias in personAliasService.Queryable().Where( a => a.PersonId == person.Id ) ) { personAliasService.Delete( alias ); } //foreach ( var relationship in person.Gro) // Save these changes so the CanDelete passes the check... //rockContext.ChangeTracker.DetectChanges(); rockContext.SaveChanges( disablePrePostProcessing: true ); if ( personService.CanDelete( person, out errorMessage ) ) { personService.Delete( person ); //rockContext.ChangeTracker.DetectChanges(); //rockContext.SaveChanges( disablePrePostProcessing: true ); } } //rockContext.ChangeTracker.DetectChanges(); rockContext.SaveChanges( disablePrePostProcessing: true ); // delete all member photos foreach ( var photo in binaryFileService.GetByIds( photoIds ) ) { binaryFileService.Delete( photo ); } DeleteGroupAndMemberData( family, rockContext ); } } }
public DataSet GetContributionTransactions( int groupId, int? personId, [FromBody]Rock.Net.RestParameters.ContributionStatementOptions options ) { var qry = Get() .Where( a => a.TransactionDateTime >= options.StartDate ) .Where( a => a.TransactionDateTime < ( options.EndDate ?? DateTime.MaxValue ) ); if ( personId.HasValue ) { // get transactions for a specific person qry = qry.Where( a => a.AuthorizedPersonAlias.PersonId == personId.Value ); } else { // get transactions for all the persons in the specified group that have specified that group as their GivingGroup GroupMemberService groupMemberService = new GroupMemberService( (RockContext)Service.Context ); var personIdList = groupMemberService.GetByGroupId( groupId ).Where( a => a.Person.GivingGroupId == groupId ).Select( s => s.PersonId ).ToList(); qry = qry.Where( a => personIdList.Contains( a.AuthorizedPersonAlias.PersonId ) ); } if ( options.AccountIds != null ) { qry = qry.Where( a => options.AccountIds.Contains( a.TransactionDetails.FirstOrDefault().AccountId ) ); } var selectQry = qry.Select( a => new { a.TransactionDateTime, CurrencyTypeValueName = a.CurrencyTypeValue.Value, a.Summary, Details = a.TransactionDetails.Select( d => new { d.AccountId, AccountName = d.Account.Name, a.Summary, d.Amount } ).OrderBy( x => x.AccountName ), } ).OrderBy( a => a.TransactionDateTime ); DataTable dataTable = new DataTable( "contribution_transactions" ); dataTable.Columns.Add( "TransactionDateTime", typeof( DateTime ) ); dataTable.Columns.Add( "CurrencyTypeValueName" ); dataTable.Columns.Add( "Summary" ); dataTable.Columns.Add( "Amount", typeof( decimal ) ); dataTable.Columns.Add( "Details", typeof( DataTable ) ); var list = selectQry.ToList(); dataTable.BeginLoadData(); foreach ( var fieldItems in list ) { DataTable detailTable = new DataTable( "transaction_details" ); detailTable.Columns.Add( "AccountId", typeof( int ) ); detailTable.Columns.Add( "AccountName" ); detailTable.Columns.Add( "Summary" ); detailTable.Columns.Add( "Amount", typeof( decimal ) ); foreach ( var detail in fieldItems.Details ) { var detailArray = new object[] { detail.AccountId, detail.AccountName, detail.Summary, detail.Amount }; detailTable.Rows.Add( detailArray ); } var itemArray = new object[] { fieldItems.TransactionDateTime, fieldItems.CurrencyTypeValueName, fieldItems.Summary, fieldItems.Details.Sum(a => a.Amount), detailTable }; dataTable.Rows.Add( itemArray ); } dataTable.EndLoadData(); DataSet dataSet = new DataSet(); dataSet.Tables.Add( dataTable ); return dataSet; }
public DataSet GetContributionTransactions( int groupId, int? personId, [FromBody]ContributionStatementOptions options ) { var qry = Get().Where( a => a.TransactionDateTime >= options.StartDate ); if ( options.EndDate.HasValue ) { qry = qry.Where( a => a.TransactionDateTime < options.EndDate.Value ); } var transactionTypeContribution = Rock.Web.Cache.DefinedValueCache.Read( Rock.SystemGuid.DefinedValue.TRANSACTION_TYPE_CONTRIBUTION.AsGuid() ); if ( transactionTypeContribution != null ) { int transactionTypeContributionId = transactionTypeContribution.Id; qry = qry.Where( a => a.TransactionTypeValueId == transactionTypeContributionId ); } if ( personId.HasValue ) { // get transactions for a specific person qry = qry.Where( a => a.AuthorizedPersonAlias.PersonId == personId.Value ); } else { // get transactions for all the persons in the specified group that have specified that group as their GivingGroup GroupMemberService groupMemberService = new GroupMemberService( ( RockContext ) Service.Context ); var personIdList = groupMemberService.GetByGroupId( groupId ).Where( a => a.Person.GivingGroupId == groupId ).Select( s => s.PersonId ).ToList(); qry = qry.Where( a => personIdList.Contains( a.AuthorizedPersonAlias.PersonId ) ); } if ( options.AccountIds != null ) { qry = qry.Where( a => a.TransactionDetails.Any( x => options.AccountIds.Contains( x.AccountId ) ) ); } var selectQry = qry.Select( a => new { a.TransactionDateTime, CurrencyTypeValueName = a.FinancialPaymentDetail != null ? a.FinancialPaymentDetail.CurrencyTypeValue.Value : string.Empty, a.Summary, Details = a.TransactionDetails.Select( d => new { d.AccountId, AccountName = d.Account.Name, d.Summary, d.Amount } ).OrderBy( x => x.AccountName ), } ).OrderBy( a => a.TransactionDateTime ); DataTable dataTable = new DataTable( "contribution_transactions" ); dataTable.Columns.Add( "TransactionDateTime", typeof( DateTime ) ); dataTable.Columns.Add( "CurrencyTypeValueName" ); dataTable.Columns.Add( "Summary" ); dataTable.Columns.Add( "Amount", typeof( decimal ) ); dataTable.Columns.Add( "Details", typeof( DataTable ) ); var list = selectQry.ToList(); dataTable.BeginLoadData(); foreach ( var fieldItems in list ) { DataTable detailTable = new DataTable( "transaction_details" ); detailTable.Columns.Add( "AccountId", typeof( int ) ); detailTable.Columns.Add( "AccountName" ); detailTable.Columns.Add( "Summary" ); detailTable.Columns.Add( "Amount", typeof( decimal ) ); var transactionDetails = fieldItems.Details.ToList(); // remove any Accounts that were not included (in case there was a mix of included and not included accounts in the transaction) if ( options.AccountIds != null ) { transactionDetails = transactionDetails.Where( a => options.AccountIds.Contains( a.AccountId ) ).ToList(); } foreach ( var detail in transactionDetails ) { var detailArray = new object[] { detail.AccountId, detail.AccountName, detail.Summary, detail.Amount }; detailTable.Rows.Add( detailArray ); } var itemArray = new object[] { fieldItems.TransactionDateTime, fieldItems.CurrencyTypeValueName, fieldItems.Summary, transactionDetails.Sum(a => a.Amount), detailTable }; dataTable.Rows.Add( itemArray ); } dataTable.EndLoadData(); DataSet dataSet = new DataSet(); dataSet.Tables.Add( dataTable ); return dataSet; }