public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var idField = (Field)((handler.Row as IIdRow).IdField); var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = ColumnSelection.KeyOnly, IncludeColumns = new HashSet <string> { itemKeyField.PropertyName ?? itemKeyField.Name }, Criteria = thisKeyCriteria == new ValueCriteria(idField.AsObject(handler.Row)) & filterCriteria }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = listFactory(); foreach (Row item in response.Entities) { list.Add(itemKeyField.AsObject(item)); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.ShouldSelectField(Target)) { return; } var idField = (handler.Row as IIdRow).IdField; var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = ColumnSelection.List, EqualityFilter = new Dictionary <string, object> { { foreignKeyField.PropertyName ?? foreignKeyField.Name, idField[handler.Row] } } }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) { list.Add(item); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (Target is null || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var idField = handler.Row.IdField; var listHandler = handlerFactory.CreateHandler <IListRequestProcessor>(rowType); var listRequest = listHandler.CreateRequest(); listRequest.ColumnSelection = ColumnSelection.KeyOnly; listRequest.IncludeColumns = new HashSet <string> { itemKeyField.PropertyName ?? itemKeyField.Name }; listRequest.Criteria = thisKeyCriteria == new ValueCriteria(idField.AsObject(handler.Row)) & filterCriteria; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = listFactory(); foreach (IRow item in response.Entities) { list.Add(itemKeyField.AsObject(item)); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var idField = (Field)((handler.Row as IIdRow).IdField); var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = this.attr.ColumnSelection, IncludeColumns = this.includeColumns, Criteria = foreignKeyCriteria == new ValueCriteria(idField.AsObject(handler.Row)) & filterCriteria }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) { list.Add(item); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var listHandler = DefaultHandlerFactory.ListHandlerFor(rowType); var listRequest = DefaultHandlerFactory.ListRequestFor(rowType); listRequest.ColumnSelection = this.attr.ColumnSelection; listRequest.IncludeColumns = this.includeColumns; listRequest.Criteria = foreignKeyCriteria == new ValueCriteria(masterKeyField.AsObject(handler.Row)) & filterCriteria; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) { list.Add(item); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (Target is null || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var listHandler = handlerFactory.CreateHandler <IListRequestProcessor>(rowType); var listRequest = listHandler.CreateRequest(); listRequest.ColumnSelection = attr.ColumnSelection; listRequest.IncludeColumns = includeColumns; listRequest.Criteria = foreignKeyCriteria == new ValueCriteria(masterKeyField.AsObject(handler.Row)) & filterCriteria; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) { list.Add(item); } Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var idField = (handler.Row as IIdRow).IdField; var fld = NotificationsRow.Fields; var listRequest = new ListRequest { ColumnSelection = ColumnSelection.List, EqualityFilter = new Dictionary <string, object> { { fld.EntityType.PropertyName, handler.Row.Table }, { fld.EntityId.PropertyName, idField[handler.Row] ?? -1 } } }; var notifications = new NotificationsRepository().List(handler.Connection, listRequest).Entities; // users might be in another database, in another db server, so we can't simply use a join here var userIdList = notifications.Where(x => x.InsertUserId != null) .Select(x => x.InsertUserId.Value) .Distinct(); if (userIdList.Any()) { var u = UserRow.Fields; IDictionary <int, string> userDisplayNames; using (var connection = SqlConnections.NewFor <UserRow>()) userDisplayNames = connection.Query(new SqlQuery() .From(u) .Select(u.UserId) .Select(u.DisplayName) .Where(u.UserId.In(userIdList))) .ToDictionary(x => (int)(x.UserId ?? x.USERID), x => (string)x.DisplayName); string s; foreach (var x in notifications) { if (x.InsertUserId != null && userDisplayNames.TryGetValue(x.InsertUserId.Value, out s)) { x.InsertUserDisplayName = s; } } } Target.AsObject(handler.Row, notifications); }
public void OnReturn(IRetrieveRequestHandler handler) { if (Target is null || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) { return; } var idField = (handler.Row as IIdRow).IdField; var fld = NoteRow.Fields; var listRequest = new ListRequest { ColumnSelection = ColumnSelection.List, EqualityFilter = new Dictionary <string, object> { { fld.EntityType.PropertyName, handler.Row.Table }, { fld.EntityId.PropertyName, idField.AsObject(handler.Row) ?? -1 } } }; var notes = new NoteRepository(Context).List(handler.Connection, listRequest).Entities; var userIdList = notes.Where(x => x.InsertUserId != null) .Select(x => x.InsertUserId.Value).Distinct(); if (userIdList.Any()) { var userDisplayNames = userIdList.ToDictionary(x => x, x => UserRetriever.ById(x.ToString( CultureInfo.InvariantCulture))?.DisplayName); foreach (var x in notes) { if (x.InsertUserId != null && userDisplayNames.TryGetValue(x.InsertUserId.Value, out string s)) { x.InsertUserDisplayName = s; } } } Target.AsObject(handler.Row, notes); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.ShouldSelectField(Target)) return; var idField = (handler.Row as IIdRow).IdField; var fld = NoteRow.Fields; var listRequest = new ListRequest { ColumnSelection = ColumnSelection.List, EqualityFilter = new Dictionary<string, object> { { fld.EntityType.PropertyName, handler.Row.Table }, { fld.EntityId.PropertyName, idField[handler.Row] ?? -1 } } }; var notes = new NoteRepository().List(handler.Connection, listRequest).Entities; // users might be in another database, in another db server, so we can't simply use a join here var userIdList = notes.Where(x => x.InsertUserId != null).Select(x => x.InsertUserId.Value).Distinct(); if (userIdList.Any()) { var u = UserRow.Fields; IDictionary<int, string> userDisplayNames; using (var connection = SqlConnections.NewFor<UserRow>()) userDisplayNames = connection.Query(new SqlQuery() .From(u) .Select(u.UserId) .Select(u.DisplayName) .Where(u.UserId.In(userIdList))) .ToDictionary(x => (int)x.UserId, x => (string)x.DisplayName); string s; foreach (var x in notes) if (x.InsertUserId != null && userDisplayNames.TryGetValue(x.InsertUserId.Value, out s)) x.InsertUserDisplayName = s; } Target.AsObject(handler.Row, notes); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) return; var idField = (Field)((handler.Row as IIdRow).IdField); var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = ColumnSelection.KeyOnly, IncludeColumns = new HashSet<string> { itemKeyField.PropertyName ?? itemKeyField.Name }, Criteria = thisKeyCriteria == new ValueCriteria(idField.AsObject(handler.Row)) & filterCriteria }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = listFactory(); foreach (Row item in response.Entities) list.Add(itemKeyField.AsObject(item)); Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.AllowSelectField(Target) || !handler.ShouldSelectField(Target)) return; var idField = (Field)((handler.Row as IIdRow).IdField); var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = this.attr.ColumnSelection, IncludeColumns = this.includeColumns, Criteria = foreignKeyCriteria == new ValueCriteria(idField.AsObject(handler.Row)) & filterCriteria }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) list.Add(item); Target.AsObject(handler.Row, list); }
public void OnReturn(IRetrieveRequestHandler handler) { if (ReferenceEquals(null, Target) || !handler.ShouldSelectField(Target)) return; var idField = (handler.Row as IIdRow).IdField; var listHandler = listHandlerFactory(); var listRequest = new ListRequest { ColumnSelection = ColumnSelection.List, EqualityFilter = new Dictionary<string, object> { { foreignKeyField.PropertyName ?? foreignKeyField.Name, idField[handler.Row] } } }; IListResponse response = listHandler.Process(handler.Connection, listRequest); var list = rowListFactory(); foreach (var item in response.Entities) list.Add(item); Target.AsObject(handler.Row, list); }