public DocumentInfo GetDocumentUnitChainsDocuments(ICollection <DocumentUnitChain> documentUnitChains, IDictionary <Model.Entities.DocumentUnits.ChainType, string> seriesCaptionLabel, bool?forceAuthorization = null) { if (documentUnitChains != null && documentUnitChains.Count > 0) { DocumentUnit documentUnit = documentUnitChains.First().DocumentUnit; FolderInfo mainFolder = new FolderInfo { Name = $"{documentUnit.DocumentUnitName} {documentUnit.Title}", ID = documentUnit.UniqueId.ToString() }; FolderInfo folderDoc; BiblosDocumentInfo[] docs; string folderName; foreach (DocumentUnitChain chain in documentUnitChains.Where(f => f.ChainType <= ChainType.UnpublishedAnnexedChain || f.ChainType == ChainType.DematerialisationChain).OrderBy(x => x.ChainType)) { docs = null; folderDoc = new FolderInfo { Parent = mainFolder }; folderName = string.Empty; switch (chain.ChainType) { case ChainType.MainChain: { folderName = "Documento"; if (documentUnit.Environment == (int)Data.DSWEnvironment.DocumentSeries && seriesCaptionLabel.ContainsKey(Model.Entities.DocumentUnits.ChainType.MainChain)) { folderName = seriesCaptionLabel[Model.Entities.DocumentUnits.ChainType.MainChain]; } folderDoc.Name = folderName; break; } case ChainType.AttachmentsChain: { folderDoc.Name = "Allegati (parte integrante)"; break; } case ChainType.AnnexedChain: { folderName = "Annessi (non parte integrante)"; if (documentUnit.Environment == (int)Data.DSWEnvironment.DocumentSeries && seriesCaptionLabel.ContainsKey(Model.Entities.DocumentUnits.ChainType.AnnexedChain)) { folderName = seriesCaptionLabel[Model.Entities.DocumentUnits.ChainType.AnnexedChain]; } folderDoc.Name = folderName; break; } case ChainType.UnpublishedAnnexedChain: { folderName = "Annessi non pubblicati"; if (documentUnit.Environment == (int)Data.DSWEnvironment.DocumentSeries && seriesCaptionLabel.ContainsKey(Model.Entities.DocumentUnits.ChainType.UnpublishedAnnexedChain)) { folderName = seriesCaptionLabel[Model.Entities.DocumentUnits.ChainType.UnpublishedAnnexedChain]; } folderDoc.Name = folderName; break; } case ChainType.DematerialisationChain: { folderDoc.Name = "Attestazione di conformità"; break; } default: break; } docs = BiblosDocumentInfo.GetDocuments(chain.IdArchiveChain).ToArray(); if (docs != null) { //TODO: attributi da non salvare in Biblos foreach (BiblosDocumentInfo doc in docs) { doc.AddAttribute(BIBLOS_ATTRIBUTE_Environment, documentUnit.Environment.ToString()); doc.AddAttribute(BIBLOS_ATTRIBUTE_Year, documentUnit.Year.ToString()); doc.AddAttribute(BIBLOS_ATTRIBUTE_Number, documentUnit.Number.ToString()); doc.AddAttribute(BIBLOS_ATTRIBUTE_UniqueId, documentUnit.UniqueId.ToString()); if (chain.DocumentUnit != null && chain.DocumentUnit.UDSRepository != null) { UDSModel model = UDSModel.LoadXml(chain.DocumentUnit.UDSRepository.ModuleXML); if (!model.Model.StampaConformeEnabled) { doc.AddAttribute(BIBLOS_ATTRIBUTE_Disabled, bool.TrueString); } } if (forceAuthorization.HasValue && forceAuthorization.Value) { doc.AddAttribute(BIBLOS_ATTRIBUTE_UserVisibilityAuthorized, bool.TrueString); } } folderDoc.AddChildren(docs); } } return(mainFolder); } return(null); }
public static DocumentInfo GetUDSTreeDocuments(UDSDto udsSource, Action <BiblosDocumentInfo, Helpers.UDS.UDSDocumentType> documentOptionsAction) { UDSModel udsModel = udsSource.UDSModel; FolderInfo mainFolder = new FolderInfo() { Name = string.Concat(udsModel.Model.Title, " ", udsSource.FullNumber), ID = JsonConvert.SerializeObject(new KeyValuePair <string, Guid>(udsModel.Model.Title, udsSource.Id)) }; // Documento principale BiblosDocumentInfo[] docs = FillUDSDocuments(udsModel.Model.Documents.Document); if (documentOptionsAction != null) { docs.ToList().ForEach(f => documentOptionsAction(f, Helpers.UDS.UDSDocumentType.Main)); } if (docs.Length > 0) { FolderInfo folderDoc = new FolderInfo() { Name = udsModel.Model.Documents.Document.Label, Parent = mainFolder }; folderDoc.AddChildren(docs); } // Allegati BiblosDocumentInfo[] attachments = FillUDSDocuments(udsModel.Model.Documents.DocumentAttachment); if (documentOptionsAction != null) { attachments.ToList().ForEach(f => documentOptionsAction(f, Helpers.UDS.UDSDocumentType.Attachment)); } if (attachments.Length > 0) { FolderInfo folderAtt = new FolderInfo() { Name = udsModel.Model.Documents.DocumentAttachment.Label, Parent = mainFolder }; folderAtt.AddChildren(attachments); } // Allegati non parte integrante (Annessi) BiblosDocumentInfo[] annexes = FillUDSDocuments(udsModel.Model.Documents.DocumentAnnexed); if (documentOptionsAction != null) { annexes.ToList().ForEach(f => documentOptionsAction(f, Helpers.UDS.UDSDocumentType.Annexed)); } if (annexes.Length > 0) { FolderInfo folderAnnexed = new FolderInfo() { Name = udsModel.Model.Documents.DocumentAnnexed.Label, Parent = mainFolder }; folderAnnexed.AddChildren(annexes); } // Dematerializzazione (Attestazione di conformità) BiblosDocumentInfo[] dematerialisation = FillUDSDocuments(udsModel.Model.Documents.DocumentDematerialisation); if (documentOptionsAction != null) { dematerialisation.ToList().ForEach(f => documentOptionsAction(f, Helpers.UDS.UDSDocumentType.Dematerialisation)); } if (dematerialisation.Length > 0) { FolderInfo folderDematerialisation = new FolderInfo() { Name = udsModel.Model.Documents.DocumentDematerialisation.Label, Parent = mainFolder }; folderDematerialisation.AddChildren(dematerialisation); } return(mainFolder); }