/// <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); }
public UDSDto GetUDSSource(Data.Entity.UDS.UDSRepository udsRepository, string odataFilter) { string controllerName = Utils.GetWebAPIControllerName(udsRepository.Name); IBaseAddress webApiAddress = DocSuiteContext.Current.CurrentTenant.WebApiClientConfig.Addresses.FirstOrDefault(x => x.AddressName.Eq(UDS_ADDRESS_NAME)); WebApiControllerEndpoint udsEndpoint = new WebApiControllerEndpoint { AddressName = UDS_ADDRESS_NAME, ControllerName = controllerName, EndpointName = "UDSModel" }; HttpClientConfiguration customHttpConfiguration = new HttpClientConfiguration(); customHttpConfiguration.Addresses.Add(webApiAddress); customHttpConfiguration.EndPoints.Add(udsEndpoint); odataFilter = string.Concat("?", odataFilter, "&applySecurity='0'"); string jsonSource = WebAPIImpersonatorFacade.ImpersonateRawRequest <UDSModel, string>(WebAPIHelper, odataFilter, customHttpConfiguration); if (string.IsNullOrEmpty(jsonSource)) { return(null); } return(ReadUDSJson(jsonSource, udsRepository)); }
/// <summary> /// Deserializza una struttura JSON dinamica recuperata da WebAPI. /// </summary> /// <returns>oggetto UDSDto</returns> public UDSDto ReadUDSJson(string udsJson, Data.Entity.UDS.UDSRepository repository) { if (string.IsNullOrEmpty(udsJson)) { throw new ArgumentNullException("udsJson"); } if (repository == null) { throw new ArgumentNullException("repository"); } UDSModel udsModel = UDSModel.LoadXml(repository.ModuleXML); string jsonParsed = ParseJson(udsJson); UDSEntityDto entityDto = JsonConvert.DeserializeObject <IList <UDSEntityDto> >(jsonParsed, DocSuiteContext.DefaultUDSJsonSerializerSettings).FirstOrDefault(); if (entityDto == null) { return(null); } FillBaseData(entityDto, udsModel); FillMetadata(jsonParsed, udsModel); FillDocuments(entityDto, udsModel); FillContacts(entityDto, udsModel); FillAuthorization(entityDto, udsModel); FillMessages(entityDto, udsModel); FillPECMails(entityDto, udsModel); FillProtocols(entityDto, udsModel); FillCollaborations(entityDto, udsModel); UDSDto dto = new UDSDto() { Id = entityDto.Id.Value, Year = entityDto.Year.Value, Number = entityDto.Number.Value, Status = entityDto.Status, CancelMotivation = entityDto.CancelMotivation, RegistrationDate = entityDto.RegistrationDate.Value, RegistrationUser = entityDto.RegistrationUser, LastChangedDate = entityDto.LastChangedDate, LastChangedUser = entityDto.LastChangedUser, Subject = entityDto.Subject, Category = entityDto.Category, UDSRepository = entityDto.UDSRepository, Authorizations = entityDto.Authorizations, Contacts = entityDto.Contacts, Documents = entityDto.Documents, Messages = entityDto.Messages, PecMails = entityDto.PecMails, Collaborations = entityDto.Collaborations, DocumentUnits = entityDto.DocumentUnits, UDSModel = udsModel }; return(dto); }
public UDSRepositoryRightsUtil(Data.Entity.UDS.UDSRepository udsRepository, string userName, UDSDto udsDto) : this(userName, udsDto) { CurrentUDSRepository = udsRepository; }