private void FillProtocols(UDSEntityDto entityDto, UDSModel model) { ICollection <WebAPIDto <UDSDocumentUnit> > result = WebAPIImpersonatorFacade.ImpersonateFinder(UDSDocumentUnitFinder, (impersonationType, finder) => { finder.ResetDecoration(); finder.IdUDS = entityDto.Id; finder.EnablePaging = false; finder.ExpandRelation = true; finder.DocumentUnitTypes = new List <Entity.UDS.UDSRelationType>() { Entity.UDS.UDSRelationType.Protocol, Entity.UDS.UDSRelationType.ArchiveProtocol, Entity.UDS.UDSRelationType.ProtocolArchived }; return(finder.DoSearch()); }); if (result == null || !result.Select(s => s.Entity).Any()) { return; } ICollection <UDSDocumentUnit> documentUnits = result.Select(s => s.Entity).ToList(); IEnumerable <ReferenceModel> referenceModels = documentUnits.Select(s => new ReferenceModel() { UniqueId = s.Relation.UniqueId }); model.FillProtocols(referenceModels); entityDto.DocumentUnits = entityDto.DocumentUnits.Concat(documentUnits.Select(s => new UDSEntityDocumentUnitDto() { UniqueId = s.Relation.UniqueId, UDSDocumentUnitId = s.UniqueId, RelationType = Model.Entities.UDS.UDSRelationType.Protocol })).ToList(); }
private void FillCollaborations(UDSEntityDto entityDto, UDSModel model) { ICollection <WebAPIDto <UDSCollaboration> > result = WebAPIImpersonatorFacade.ImpersonateFinder(UDSCollaborationFinder, (impersonationType, finder) => { finder.ResetDecoration(); finder.IdUDS = entityDto.Id; finder.EnablePaging = false; finder.ExpandRelation = true; return(finder.DoSearch()); }); if (result == null || !result.Select(s => s.Entity).Any()) { return; } ICollection <UDSCollaboration> collaborations = result.Select(s => s.Entity).ToList(); IEnumerable <ReferenceModel> referenceModels = collaborations.Select(s => new ReferenceModel() { EntityId = s.Relation.EntityId, UniqueId = s.Relation.UniqueId }); model.FillCollaborations(referenceModels); entityDto.Collaborations = result.Select(s => s.Entity).Select(s => new UDSEntityCollaborationDto() { IdCollaboration = s.Relation.EntityId, UniqueId = s.UniqueId }).ToArray(); }
/// <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); }
private void FillDocuments(UDSEntityDto entityDto, UDSModel model) { if (model.Model.Documents == null) { return; } ICollection <Guid> mainDocuments = entityDto.Documents.Where(x => x.DocumentType == Helpers.UDS.UDSDocumentType.Main && x.IdDocument.HasValue).Select(s => s.IdDocument.Value).ToList(); ICollection <Guid> attachementDocuments = entityDto.Documents.Where(x => x.DocumentType == Helpers.UDS.UDSDocumentType.Attachment && x.IdDocument.HasValue).Select(s => s.IdDocument.Value).ToList(); ICollection <Guid> annexedDocuments = entityDto.Documents.Where(x => x.DocumentType == Helpers.UDS.UDSDocumentType.Annexed && x.IdDocument.HasValue).Select(s => s.IdDocument.Value).ToList(); ICollection <Guid> dematerialisationDocuments = entityDto.Documents.Where(x => x.DocumentType == Helpers.UDS.UDSDocumentType.Dematerialisation && x.IdDocument.HasValue).Select(s => s.IdDocument.Value).ToList(); model.FillDocuments(mainDocuments); model.FillDocumentAttachments(attachementDocuments); model.FillDocumentAnnexed(annexedDocuments); model.FillDocumentDematerialisation(dematerialisationDocuments); }
private void FillAuthorization(UDSEntityDto entityDto, UDSModel model) { ICollection <UDSRole> roles = new List <UDSRole>(); ICollection <WebAPIDto <UDSRole> > result = WebAPIImpersonatorFacade.ImpersonateFinder(UDSRoleFinder, (impersonationType, finder) => { finder.ResetDecoration(); finder.IdUDS = entityDto.Id; finder.EnablePaging = false; finder.ExpandRelation = true; return(finder.DoSearch()); }); if (result == null) { return; } roles = result.Select(f => f.Entity).ToList(); if (roles == null || roles.Count() < 1) { return; } IEnumerable <ReferenceModel> referenceModels = roles.Select(s => new ReferenceModel() { EntityId = s.Relation.EntityShortId, UniqueId = s.UniqueId, AuthorizationType = (AuthorizationType)s.AuthorizationType }); model.FillAuthorizations(referenceModels, model.Model.Authorizations.Label); entityDto.Authorizations = roles.Select(s => new UDSEntityRoleDto() { IdRole = s.Relation.EntityShortId, UniqueId = s.UniqueId, AuthorizationType = (AuthorizationType)s.AuthorizationType }).ToArray(); }
private void FillContacts(UDSEntityDto entityDto, UDSModel model) { if (model.Model.Contacts.IsNullOrEmpty()) { return; } ICollection <WebAPIDto <UDSContact> > result = WebAPIImpersonatorFacade.ImpersonateFinder(UDSContactFinder, (impersonationType, finder) => { finder.ResetDecoration(); finder.IdUDS = entityDto.Id; finder.EnablePaging = false; finder.ExpandRelation = true; return(finder.DoSearch()); }); if (result == null || !result.Select(s => s.Entity).Any()) { return; } entityDto.Contacts = result.Select(s => s.Entity).Select(s => new UDSEntityContactDto() { ContactManual = s.ContactManual, ContactType = (Helpers.UDS.UDSContactType)s.ContactType, IdContact = s.Relation?.EntityId, UDSContactId = s.UniqueId, Label = s.ContactLabel }).ToList(); foreach (Contacts modelContacts in model.Model.Contacts) { IList <UDSEntityContactDto> contacts = entityDto.Contacts.Where(x => x.Label.Eq(modelContacts.Label)).ToList(); if (contacts == null || !contacts.Any()) { continue; } foreach (UDSEntityContactDto contact in contacts) { if (contact.ContactType == Helpers.UDS.UDSContactType.Contact) { if (contact.IdContact.HasValue) { ContactInstance newInstance = new ContactInstance() { IdContact = contact.IdContact.Value }; modelContacts.ContactInstances = (modelContacts.ContactInstances ?? Enumerable.Empty <ContactInstance>()).Concat(new ContactInstance[] { newInstance }).ToArray(); } } else { ContactManualInstance newManualInstance = new ContactManualInstance() { ContactDescription = contact.ContactManual }; modelContacts.ContactManualInstances = (modelContacts.ContactManualInstances ?? Enumerable.Empty <ContactManualInstance>()).Concat(new ContactManualInstance[] { newManualInstance }).ToArray(); } } } }
private void FillBaseData(UDSEntityDto entityDto, UDSModel model) { model.Model.Title = entityDto.UDSRepository?.Name; model.Model.Subject.Value = entityDto.Subject; model.Model.Category.IdCategory = entityDto.IdCategory?.ToString(); }