Example #1
0
        /// <summary>
        /// Mapping the query response to model
        /// </summary>
        /// <returns></returns>
        protected override DynamicQueryEnumerableResponse <T> Map()
        {
            // Init response and items for mapping
            var  response  = new DynamicQueryEnumerableResponse <T>();
            var  items     = new List <T>();
            var  model     = new T();
            var  fields    = typeof(OrderFields).GetFields(BindingFlags.Public | BindingFlags.Static);
            bool getHeader = true;

            // Map business CS query entity value to model value
            while (BusinessEntity.Fetch(false))
            {
                var fieldValue   = "";
                var propTypeName = "";

                if (!_getUniqueHeader)
                {
                    model = new T();
                }
                //Set model(header) value
                if (getHeader)
                {
                    var modelProperties = model.GetType().GetProperties();
                    foreach (var prop in modelProperties)
                    {
                        var field = fields.Where(f => f.Name == prop.Name).FirstOrDefault();
                        if (field != null)
                        {
                            propTypeName = prop.PropertyType.Name;
                            fieldValue   = field.GetRawConstantValue().ToString();
                            SetModelValue(prop, model, propTypeName, fieldValue);
                        }
                    }
                    getHeader = !_getUniqueHeader;
                }

                //Set detail model value
                if (!_mapHeaderOnly)
                {
                    var detailModel           = new OrderDetail();
                    var detailModelProperties = detailModel.GetType().GetProperties();
                    foreach (var prop in detailModelProperties)
                    {
                        var field = fields.Where(f => f.Name == prop.Name).FirstOrDefault();
                        if (field != null)
                        {
                            propTypeName = prop.PropertyType.Name;
                            fieldValue   = field.GetRawConstantValue().ToString();
                            SetModelValue(prop, detailModel, propTypeName, fieldValue);
                        }
                    }
                    model.OrderDetails.Add(detailModel);
                }
                items.Add(model);
            }

            response.Items = items;
            return(response);
        }