public void UnitGet() { this.Workspace.Sync(Fixture.LoadData); var session = new Session(this.Workspace); var koen = session.Get(1) as Person; Assert.Equal("Koen", koen.FirstName); Assert.Null(koen.MiddleName); Assert.Equal("Van Exem", koen.LastName); Assert.Equal(UnitConvert.Parse(M.Person.BirthDate.ObjectType.Id, "1973-03-27T18:00:00Z"), koen.BirthDate); Assert.True(koen.IsStudent); var patrick = session.Get(2) as Person; Assert.Equal("Patrick", patrick.FirstName); Assert.Equal("De Boeck", patrick.LastName); Assert.Null(patrick.MiddleName); Assert.Null(patrick.BirthDate); Assert.False(patrick.IsStudent); var martien = session.Get(3) as Person; Assert.Equal("Martien", martien.FirstName); Assert.Equal("Knippenberg", martien.LastName); Assert.Equal("van", martien.MiddleName); Assert.Null(martien.BirthDate); Assert.Null(martien.IsStudent); }
internal WorkspaceRole(IMetaPopulation metaPopulation, SyncResponseRole syncResponseRole) { var value = syncResponseRole.v; this.RoleType = (IRoleType)metaPopulation.Find(Guid.Parse(syncResponseRole.t)); var objectType = this.RoleType.ObjectType; if (objectType.IsUnit) { this.Value = UnitConvert.Parse(this.RoleType.ObjectType.Id, value); } else { if (this.RoleType.IsOne) { this.Value = value != null?long.Parse(value) : (long?)null; } else { this.Value = value != null ? value.Split(Encoding.Separator).Select(long.Parse).ToArray() : Array.Empty <long>(); } } }
private int PushRequestRoles(IList<PushRequestRole> pushRequestRoles, IObject obj, PushResponse pushResponse, Dictionary<string, IObject> objectByNewId, bool ignore = false) { var countOutstandingRoles = 0; foreach (var pushRequestRole in pushRequestRoles) { var composite = (Composite)obj.Strategy.Class; var roleTypes = composite.WorkspaceRoleTypes; var acl = this.acls[obj]; var roleType = (IRoleType)this.metaPopulation.Find(Guid.Parse(pushRequestRole.T)); if (roleType != null) { if (acl.CanWrite(roleType)) { if (roleType.ObjectType.IsUnit) { var unitType = (IUnit)roleType.ObjectType; var role = UnitConvert.Parse(unitType.Id, pushRequestRole.S); obj.Strategy.SetUnitRole(roleType.RelationType, role); } else { if (roleType.IsOne) { var roleId = (string)pushRequestRole.S; if (string.IsNullOrEmpty(roleId)) { obj.Strategy.RemoveCompositeRole(roleType.RelationType); } else { var role = this.GetRole(roleId, objectByNewId); if (role == null) { pushResponse.AddMissingError(roleId); } else { obj.Strategy.SetCompositeRole(roleType.RelationType, role); } } } else { // Add if (pushRequestRole.A != null) { var roleIds = pushRequestRole.A; if (roleIds.Length != 0) { var roles = this.GetRoles(roleIds, objectByNewId); if (roles.Length != roleIds.Length) { AddMissingRoles(roles, roleIds, pushResponse); } else { foreach (var role in roles) { obj.Strategy.AddCompositeRole(roleType.RelationType, role); } } } } // Remove if (pushRequestRole.R != null) { var roleIds = pushRequestRole.R; if (roleIds.Length != 0) { var roles = this.GetRoles(roleIds, objectByNewId); if (roles.Length != roleIds.Length) { AddMissingRoles(roles, roleIds, pushResponse); } else { foreach (var role in roles) { obj.Strategy.RemoveCompositeRole(roleType.RelationType, role); } } } } } } } else { if (!ignore) { pushResponse.AddAccessError(obj); } else { countOutstandingRoles++; } } } } return countOutstandingRoles; }