/// <summary> /// Deserializza una struttura JSON di tipo UDSWorkflowModel recuperata da Workflow (property). /// </summary> /// <returns>oggetto UDSDto</returns> public UDSDto ReadUDSWorkflowJson(string udsWorkflowJson, Data.Entity.UDS.UDSRepository repository) { if (string.IsNullOrEmpty(udsWorkflowJson)) { throw new ArgumentNullException("udsWorkflowJson"); } if (repository == null) { throw new ArgumentNullException("repository"); } UDSModel udsModel = UDSModel.LoadXml(repository.ModuleXML); UDSWorkflowModel model = JsonConvert.DeserializeObject <UDSWorkflowModel>(udsWorkflowJson, DocSuiteContext.DefaultWebAPIJsonSerializerSettings); UDSModelField udsField; foreach (Section metadata in udsModel.Model.Metadata) { foreach (FieldBaseType item in metadata.Items) { udsField = new UDSModelField(item); foreach (KeyValuePair <string, string> data in model.DynamicDatas) { if (data.Key.Eq(udsField.ColumnName)) { udsField.Value = data.Value; } } } } if (udsModel.Model.Contacts != null && model.Contact != null) { //todo: sarĂ sempre e solo un singolo contatto? Contacts contact = udsModel.Model.Contacts.FirstOrDefault(); if (model.Contact.HasId()) { ContactInstance newInstance = new ContactInstance() { IdContact = model.Contact.Id.Value }; contact.ContactInstances = (contact.ContactInstances ?? Enumerable.Empty <ContactInstance>()).Concat(new ContactInstance[] { newInstance }).ToArray(); } else if (!string.IsNullOrEmpty(model.Contact.Description)) { ContactManualInstance newManualInstance = new ContactManualInstance() { ContactDescription = model.Contact.Description }; contact.ContactManualInstances = (contact.ContactManualInstances ?? Enumerable.Empty <ContactManualInstance>()).Concat(new ContactManualInstance[] { newManualInstance }).ToArray(); } } UDSDto udsDto = new UDSDto() { UDSModel = udsModel }; return(udsDto); }
private void FillMetadata(string jsModel, UDSModel model) { Dictionary <string, JToken> rootElements = JsonConvert.DeserializeObject <List <Dictionary <string, JToken> > >(jsModel, DocSuiteContext.DefaultUDSJsonSerializerSettings).First(); foreach (Section metadata in model.Model.Metadata) { foreach (FieldBaseType item in metadata.Items) { UDSModelField udsField = new UDSModelField(item); JToken selectedProperty = rootElements.ContainsKey(udsField.ColumnName) ? rootElements[udsField.ColumnName] : null; if (selectedProperty == null) { continue; } udsField.Value = selectedProperty.ToObject <object>(); } } }