예제 #1
0
        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();
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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();
        }
예제 #6
0
        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();
                    }
                }
            }
        }
예제 #7
0
 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();
 }