コード例 #1
0
                /// <summary>
                /// Obtiene un entitySearch desde un objeto, asignando las propiedades que corresponden, si el objeto no implementa las propiedades de IEntitySearch lanzará error,
                ///
                /// </summary>
                /// <typeparam name="T">Tipo de dato Geo, dependerá de la implementación</typeparam>
                /// <param name="entity">objeto a convertir</param>
                /// <returns></returns>
                public static EntityBaseSearch <T> GetEntityBaseSearch <T>(object entity)
                {
                    var entitySearch = new EntityBaseSearch <T>();

                    entitySearch.num32 = (INum32Property[])entity.GetType().GetProperty("num32").GetValue(entity);

                    entitySearch.dbl   = (IDblProperty[])entity.GetType().GetProperty("dbl").GetValue(entity);
                    entitySearch.dt    = (IDtProperty[])entity.GetType().GetProperty("dt").GetValue(entity);
                    entitySearch.enm   = (IEnumProperty[])entity.GetType().GetProperty("enm").GetValue(entity);
                    entitySearch.bl    = (IBoolProperty[])entity.GetType().GetProperty("bl").GetValue(entity);
                    entitySearch.geo   = (IProperty <T>[])entity.GetType().GetProperty("geo").GetValue(entity);
                    entitySearch.num64 = (INum64Property[])entity.GetType().GetProperty("num64").GetValue(entity);
                    entitySearch.str   = (IStrProperty[])entity.GetType().GetProperty("str").GetValue(entity);
                    entitySearch.sug   = (IStrProperty[])entity.GetType().GetProperty("sug").GetValue(entity);

                    return(entitySearch);
                }
コード例 #2
0
        public void ConvertEntityToObject()
        {
            // operaciones de hash para crear las identidades.
            var hash = new HashEntityMockSearch();


            // un id genérico.
            var genericId = Guid.NewGuid().ToString("N");


            // objeto del modelo de base de datos.
            var objs = new BarrackTest()
            {
                ClientId           = "1",
                GeographicalPoints = new GeoPointTs[] { new GeoPointTs {
                                                            latitude = 1.3, longitude = 1.45
                                                        } },
                Hectares       = 3.4,
                Id             = genericId,
                IdPlotLand     = genericId,
                IdPollinator   = genericId,
                IdRootstock    = genericId,
                IdVariety      = genericId,
                Name           = "Barrack1",
                NumberOfPlants = 1221,
                PlantingYear   = 1982,
                SeasonId       = genericId
            };



            // Creamos una entidad que coincide con el objeto de modelo de base de datos.
            var entity = new EntityBaseSearch <GeoPointTs>
            {
                bl      = Array.Empty <BoolBaseProperty>(),
                created = DateTime.Now,
                index   = (int)EntityRelated.BARRACK,
                dbl     = new DblBaseProperty[] { new DblBaseProperty {
                                                      index = (int)DoubleRelated.HECTARES, value = 3.4
                                                  } },
                dt  = Array.Empty <DtBaseProperty>(),
                enm = Array.Empty <EnumBaseProperty>(),
                geo = new GeographyProperty[] { new GeographyProperty {
                                                    index = (int)GeoRelated.LOCATION_BARRACK, value = new GeoPointTs {
                                                        latitude = 1.3, longitude = 1.45
                                                    }
                                                } },
                id    = genericId,
                num32 = new Num32BaseProperty[] { new Num32BaseProperty {
                                                      index = (int)NumRelated.NUMBER_OF_PLANTS, value = 1221
                                                  }, new Num32BaseProperty {
                                                      index = (int)NumRelated.PLANTING_YEAR, value = 1982
                                                  } },
                num64 = Array.Empty <Num64BaseProperty>(),
                rel   = new IRelatedId[] {
                    new RelatedBaseId {
                        id = genericId, index = (int)EntityRelated.PLOTLAND
                    },
                    new RelatedBaseId {
                        id = genericId, index = (int)EntityRelated.POLLINATOR
                    },
                    new RelatedBaseId {
                        id = genericId, index = (int)EntityRelated.ROOTSTOCK
                    },
                    new RelatedBaseId {
                        id = genericId, index = (int)EntityRelated.VARIETY
                    },
                    new RelatedBaseId {
                        id = genericId, index = (int)EntityRelated.SEASON
                    },
                },
                str = new StrBaseProperty[] { new StrBaseProperty {
                                                  index = (int)StringRelated.GENERIC_NAME, value = "Barrack1",
                                              }, new StrBaseProperty {
                                                  index = (int)StringRelated.GENERIC_CORRELATIVE, value = "1"
                                              } },
                sug = Array.Empty <StrBaseProperty>(),
                hh  = hash.HashHeader(typeof(BarrackTest)),
                hm  = hash.HashModel(objs)
            };

            // obtenemos el entitySearch del barrack, internamente valida el hash.
            var barrack = (BarrackTest)Mdm.Reflection.Entities.GetEntityFromSearch(entity, typeof(BarrackTest), "trifenix.connect.test.model", s => s, new SearchElement(), hash);


            //assert
            Assert.Equal(entity.str.First().value, barrack.Name);
        }