Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }