Exemple #1
0
        /* Generate Dynamic Object according to Message Schema */
        private ExpandoObject convertToMessageObj(int msgId, string msgJsonContent)
        {
            MessageCatalogSchema msgSchema;
            var L2EQuery = from a in this._messageCatalogSchemaList
                           where a.MessageCatalogId == msgId
                           select a;

            if (L2EQuery.Count() == 0)
            {
                throw new Exception("Not a valid Message Id");           //Message Id doens't apply on this IoT Device
            }
            else
            {
                msgSchema = L2EQuery.FirstOrDefault <MessageCatalogSchema>();
            }

            ExpandoObject deviceMessage = new ExpandoObject();
            JObject       sourceMsg     = JObject.Parse(msgJsonContent);

            foreach (var element in msgSchema.ElementList)
            {
                if (element.MandatoryFlag)
                {
                    if (sourceMsg[element.Name] == null)
                    {
                        throw new Exception("Not a valid Message Schema, Missing: " + element.Name);
                    }
                    JSONHelper.AddExpandoObjectProperty(deviceMessage, element.Name, sourceMsg[element.Name]);
                }
                else
                {
                    if (sourceMsg[element.Name] != null)
                    {
                        JSONHelper.AddExpandoObjectProperty(deviceMessage, element.Name, sourceMsg[element.Name]);
                    }
                }
            }
            return(deviceMessage);
        }