/// <summary> /// Add a row representing an <see cref="Organization"/> /// </summary> /// <param name="organization"> The <see cref="Organization"/> to add /// </param> private void AddOrganization(Organization organization) { var row = new OrganizationRowViewModel(organization, this.Session, this); this.UpdatePersonRows(row); this.Organizations.Add(row); }
/// <summary> /// Update the person rows for an organization /// </summary> /// <param name="organizationRow">The organization row to update</param> private void UpdatePersonRows(OrganizationRowViewModel organizationRow) { var currentPersons = organizationRow.ContainedRows.Select(x => x.Thing).OfType <Person>().ToList(); var updatedPerson = this.Thing.Person.Where(x => x.Organization == organizationRow.Thing).ToList(); var addedPersons = updatedPerson.Except(currentPersons).ToList(); var removedPersons = currentPersons.Except(updatedPerson).ToList(); foreach (var addedPerson in addedPersons) { var row = new OrganizationBrowser.PersonRowViewModel(addedPerson, this.Session, organizationRow); organizationRow.ContainedRows.Add(row); } foreach (var removedPerson in removedPersons) { var row = organizationRow.ContainedRows.SingleOrDefault(x => x.Thing == removedPerson); if (row != null) { organizationRow.ContainedRows.RemoveAndDispose(row); } } foreach (var row in organizationRow.ContainedRows.OfType <OrganizationBrowser.PersonRowViewModel>()) { row.RowStatus = (row.Thing.IsActive && !row.Thing.IsDeprecated) ? RowStatusKind.Active : RowStatusKind.Inactive; } }