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);
        }
Example #2
0
        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 (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 (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 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);
        }
Example #6
0
        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.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);
        }