示例#1
0
        /// <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);
        }
示例#2
0
        /// <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;
            }
        }