Ejemplo n.º 1
0
        public override async Task <dynamic> GetDataAsync(HttpContext httpContext, DataSource dataSource)
        {
            ParametersParser parametersParser = new ParametersParser(dataSource.DataProviderParameters);

            Inclusion <Object>[] inclusions = null;

            if (parametersParser.GetStringParameterValue("RelationType") == "Primary")
            {
                inclusions = new Inclusion <Object>[] {
                    new Inclusion <Object>("Properties.Member"),
                    new Inclusion <Object>("Properties.StringValue.Localizations"),
                    new Inclusion <Object>("ForeignRelations.Primary.Properties.Member"),
                    new Inclusion <Object>("ForeignRelations.Primary.Properties.StringValue.Localizations")
                }
            }
            ;

            else
            {
                inclusions = new Inclusion <Object>[] {
                    new Inclusion <Object>("Properties.Member"),
                    new Inclusion <Object>("Properties.StringValue.Localizations"),
                    new Inclusion <Object>("PrimaryRelations.Foreign.Properties.Member"),
                    new Inclusion <Object>("PrimaryRelations.Foreign.Properties.StringValue.Localizations")
                }
            };

            Object @object = (await httpContext.GetStorage().GetRepository <int, Object, ObjectFilter>().GetAllAsync(
                                  new ObjectFilter(stringValue: new LocalizationFilter(value: new StringFilter(equals: httpContext.Request.GetUrl()))),
                                  inclusions: inclusions
                                  )).FirstOrDefault();

            if (@object == null)
            {
                return(null);
            }

            int relationMemberId = parametersParser.GetIntParameterValue("RelationMemberId");

            if (new ParametersParser(dataSource.DataProviderParameters).GetStringParameterValue("RelationType") == "Primary")
            {
                return(@object.ForeignRelations.Where(r => r.MemberId == relationMemberId).Select(r => this.CreateViewModel(r.Primary)));
            }

            return(@object.PrimaryRelations.Where(r => r.MemberId == relationMemberId).Select(r => this.CreateViewModel(r.Foreign)));
        }
    }