public void AddUDSDocumentUnitChain(DocumentUnit documentUnit, UDSDocumentModel udsDocument, ChainType chainType, IIdentityContext identity) { string documentName = string.Empty; BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(udsDocument.IdChain).FirstOrDefault(); if (document != null) { AddDocumentUnitChain(documentUnit, udsDocument.IdChain, chainType, identity, document.Archive.Name, chainType == ChainType.MainChain ? document.Name : null, udsDocument.DocumentLabel); } }
internal void AddResolutionDocumentUnitChain(DocumentUnit documentUnit, ResolutionModel resolution, Guid chainId, ChainType chainType, IIdentityContext identity) { string documentName = string.Empty; if (chainType == ChainType.MainChain) { BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(chainId).FirstOrDefault(); documentName = document != null ? document.Name : string.Empty; } AddDocumentUnitChain(documentUnit, chainId, chainType, identity, resolution.Container.ReslLocation.ResolutionArchive, documentName); }
internal override async Task <DocumentUnit> MappingInsertAsync(IContentBase entity, IIdentityContext identity) { DocumentUnit documentUnit = new DocumentUnit(); try { Protocol protocol = (Protocol)entity; #region [ Base ] documentUnit.EntityId = 0; documentUnit.Environment = (int)DSWEnvironmentType.Protocol; documentUnit.LastChangedDate = null; documentUnit.LastChangedUser = null; documentUnit.Number = protocol.Number; documentUnit.RegistrationDate = protocol.RegistrationDate; documentUnit.RegistrationUser = protocol.RegistrationUser; documentUnit.Subject = protocol.Object; documentUnit.Title = string.Concat(protocol.Year, "/", protocol.Number.ToString("0000000")); documentUnit.UniqueId = protocol.UniqueId; documentUnit.Year = protocol.Year; documentUnit.DocumentUnitName = "Protocollo"; documentUnit.Status = protocol.IdStatus == 0 ? DocumentUnitStatus.Active : DocumentUnitStatus.Inactive; #endregion #region [ Navigation Properties ] documentUnit.UDSRepository = null; documentUnit.Category = protocol.Category; documentUnit.Container = protocol.Container; documentUnit.Fascicle = await _webApiClient.GetFascicleAsync(protocol.UniqueId); foreach (ProtocolRole item in protocol.ProtocolRoles) { documentUnit.DocumentUnitRoles.Add(new DocumentUnitRole() { UniqueIdRole = item.Role.UniqueId, RegistrationDate = DateTimeOffset.UtcNow, RegistrationUser = identity.User, AuthorizationRoleType = GetRoleType(item.Type) }); } foreach (ProtocolUser user in protocol.ProtocolUsers) { documentUnit.DocumentUnitUsers.Add(new DocumentUnitUser() { UniqueId = user.UniqueId, Account = user.Account, RegistrationDate = DateTimeOffset.UtcNow, RegistrationUser = identity.User, AuthorizationType = AuthorizationRoleType.Accounted }); } if (protocol.IdAnnexed.HasValue && protocol.IdAnnexed.Value != Guid.Empty) { AddDocumentUnitChain(documentUnit, protocol.IdAnnexed.Value, ChainType.AnnexedChain, identity, protocol.Container.ProtLocation.ProtocolArchive); } if (protocol.IdAttachments.HasValue && protocol.IdAttachments.Value != 0) { string attachmentArchiveName = protocol.Container.ProtLocation.ProtocolArchive; if (protocol.AttachLocation != null && protocol.Container.ProtLocation.EntityShortId != protocol.AttachLocation.EntityShortId) { attachmentArchiveName = protocol.AttachLocation?.ProtocolArchive; } AddDocumentUnitChain(documentUnit, _biblosClient.Document.GetDocumentId(attachmentArchiveName, protocol.IdAttachments.Value), ChainType.AttachmentsChain, identity, attachmentArchiveName); } if (protocol.IdDocument.HasValue && protocol.IdDocument.Value != 0) { Guid chainId = _biblosClient.Document.GetDocumentId(protocol.Container.ProtLocation.ProtocolArchive, protocol.IdDocument.Value); BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(chainId).FirstOrDefault(); AddDocumentUnitChain(documentUnit, chainId, ChainType.MainChain, identity, protocol.Container.ProtLocation.ProtocolArchive, documentName: document?.Name); } if (protocol.DematerialisationChainId.HasValue && protocol.DematerialisationChainId != Guid.Empty) { AddDocumentUnitChain(documentUnit, protocol.DematerialisationChainId.Value, ChainType.DematerialisationChain, identity, protocol.Container.ProtLocation.ProtocolArchive); } #endregion } catch (Exception ex) { _logger.WriteError(new LogMessage("Protocol, MappingInsertAsync Error: "), ex, LogCategories); throw ex; } return(documentUnit); }
internal override async Task <DocumentUnit> MappingInsertAsync(IContentBase entity, IIdentityContext identity) { DocumentUnit documentUnit = new DocumentUnit(); try { DocumentSeriesItem documentSeriesItem = (DocumentSeriesItem)entity; #region [ Base ] documentUnit.EntityId = documentSeriesItem.EntityId; documentUnit.Environment = (int)DocSuiteWeb.Entity.Commons.DSWEnvironmentType.DocumentSeries; documentUnit.LastChangedDate = null; documentUnit.LastChangedUser = null; documentUnit.Number = documentSeriesItem.Number.Value; documentUnit.RegistrationDate = documentSeriesItem.RegistrationDate; documentUnit.RegistrationUser = documentSeriesItem.RegistrationUser; documentUnit.Subject = documentSeriesItem.Subject; documentUnit.Title = string.Concat(documentSeriesItem.Year.Value, "/", documentSeriesItem.Number.Value.ToString("0000000")); documentUnit.UniqueId = documentSeriesItem.UniqueId; documentUnit.Year = (short)(documentSeriesItem.Year.Value); documentUnit.DocumentUnitName = documentSeriesItem.DocumentSeries.Name; documentUnit.Status = documentSeriesItem.Status == DocumentSeriesItemStatus.Active ? DocumentUnitStatus.Active : DocumentUnitStatus.Inactive; #endregion #region [ Navigation Properties ] documentUnit.UDSRepository = null; documentUnit.Category = documentSeriesItem.Category; documentUnit.Container = documentSeriesItem.DocumentSeries.Container; documentUnit.Fascicle = await _webApiClient.GetFascicleAsync(documentSeriesItem.UniqueId); foreach (DocumentSeriesItemRole item in documentSeriesItem.DocumentSeriesItemRoles) { documentUnit.DocumentUnitRoles.Add(new DocumentUnitRole() { UniqueIdRole = item.Role.UniqueId, RegistrationDate = DateTimeOffset.UtcNow, RegistrationUser = identity.User, AuthorizationRoleType = GetRoleType(string.Empty) }); } if (documentSeriesItem.IdAnnexed.HasValue && documentSeriesItem.IdAnnexed.Value != Guid.Empty) { AddDocumentUnitChain(documentUnit, documentSeriesItem.IdAnnexed.Value, ChainType.AnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } if (documentSeriesItem.IdUnpublishedAnnexed.HasValue && documentSeriesItem.IdUnpublishedAnnexed.Value != Guid.Empty) { AddDocumentUnitChain(documentUnit, documentSeriesItem.IdUnpublishedAnnexed.Value, ChainType.UnpublishedAnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesUnpublishedAnnexedLocation.ProtocolArchive); } if (documentSeriesItem.IdMain.HasValue && documentSeriesItem.IdMain.Value != Guid.Empty) { BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(documentSeriesItem.IdMain.Value).FirstOrDefault(); AddDocumentUnitChain(documentUnit, documentSeriesItem.IdMain.Value, ChainType.MainChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesLocation.ProtocolArchive, document != null ? document.Name : null); } if (documentSeriesItem.DematerialisationChainId.HasValue && documentSeriesItem.DematerialisationChainId.Value != Guid.Empty) { AddDocumentUnitChain(documentUnit, documentSeriesItem.DematerialisationChainId.Value, ChainType.DematerialisationChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } #endregion } catch (Exception ex) { _logger.WriteError(new LogMessage("DocumentSeriesItem, MappingInsertAsync Error: "), ex, LogCategories); throw ex; } return(documentUnit); }
internal override async Task <DocumentUnit> MappingUpdateAsync(IContentBase entity, DocumentUnit documentUnit, IIdentityContext identity) { try { DocumentSeriesItem documentSeriesItem = (DocumentSeriesItem)entity; #region [ Base ] documentUnit.LastChangedDate = documentSeriesItem.LastChangedDate; documentUnit.LastChangedUser = documentSeriesItem.LastChangedUser; documentUnit.Subject = documentSeriesItem.Subject; documentUnit.Title = documentUnit.Title; documentUnit.Status = documentSeriesItem.Status == DocumentSeriesItemStatus.Active ? DocumentUnitStatus.Active : DocumentUnitStatus.Inactive; #endregion #region [ Navigation Properties ] if (documentUnit.Category.UniqueId != documentSeriesItem.Category.UniqueId) { documentUnit.Category = documentSeriesItem.Category; } if (documentUnit.Container.UniqueId != documentSeriesItem.DocumentSeries.Container.UniqueId) { documentUnit.Container = documentSeriesItem.DocumentSeries.Container; } documentUnit.Fascicle = await _webApiClient.GetFascicleAsync(documentSeriesItem.UniqueId); if (documentSeriesItem.DocumentSeriesItemRoles == null || !documentSeriesItem.DocumentSeriesItemRoles.Any()) { documentSeriesItem.DocumentSeriesItemRoles.Clear(); } if (documentSeriesItem.DocumentSeriesItemRoles != null) { foreach (DocumentSeriesItemRole item in documentSeriesItem.DocumentSeriesItemRoles.Where(t => !documentUnit.DocumentUnitRoles.Any(x => x.UniqueIdRole == t.Role.UniqueId)).ToList()) { documentUnit.DocumentUnitRoles.Add(new DocumentUnitRole() { UniqueIdRole = item.Role.UniqueId, RegistrationDate = DateTimeOffset.UtcNow, RegistrationUser = identity.User, AuthorizationRoleType = GetRoleType(string.Empty) }); } foreach (DocumentUnitRole item in documentUnit.DocumentUnitRoles.Where(t => !documentSeriesItem.DocumentSeriesItemRoles.Any(x => x.Role.UniqueId == t.UniqueIdRole)).ToList()) { documentUnit.DocumentUnitRoles.Remove(item); } } if (documentSeriesItem.IdAnnexed.HasValue && documentSeriesItem.IdAnnexed.Value != Guid.Empty) { DocumentUnitChain annexed = documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.AnnexedChain).FirstOrDefault(); if (annexed != null) { if (annexed.IdArchiveChain != documentSeriesItem.IdAnnexed.Value) { documentUnit.DocumentUnitChains.Remove(annexed); AddDocumentUnitChain(documentUnit, documentSeriesItem.IdAnnexed.Value, ChainType.AnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } } else { AddDocumentUnitChain(documentUnit, documentSeriesItem.IdAnnexed.Value, ChainType.AnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } } else { foreach (DocumentUnitChain chain in documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.AnnexedChain).ToList()) { documentUnit.DocumentUnitChains.Remove(chain); } } if (documentSeriesItem.IdUnpublishedAnnexed.HasValue && documentSeriesItem.IdUnpublishedAnnexed.Value != Guid.Empty) { DocumentUnitChain unpublishedAnnexed = documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.UnpublishedAnnexedChain).FirstOrDefault(); if (unpublishedAnnexed != null) { if (unpublishedAnnexed.IdArchiveChain != documentSeriesItem.IdUnpublishedAnnexed.Value) { documentUnit.DocumentUnitChains.Remove(unpublishedAnnexed); AddDocumentUnitChain(documentUnit, documentSeriesItem.IdUnpublishedAnnexed.Value, ChainType.UnpublishedAnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesUnpublishedAnnexedLocation.ProtocolArchive); } } else { AddDocumentUnitChain(documentUnit, documentSeriesItem.IdUnpublishedAnnexed.Value, ChainType.UnpublishedAnnexedChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesUnpublishedAnnexedLocation.ProtocolArchive); } } else { foreach (DocumentUnitChain chain in documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.UnpublishedAnnexedChain).ToList()) { documentUnit.DocumentUnitChains.Remove(chain); } } if (documentSeriesItem.IdMain.HasValue && documentSeriesItem.IdMain.Value != Guid.Empty) { DocumentUnitChain main = documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.MainChain).FirstOrDefault(); if (main != null) { if (main.IdArchiveChain != documentSeriesItem.IdMain.Value) { documentUnit.DocumentUnitChains.Remove(main); BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(documentSeriesItem.IdMain.Value).FirstOrDefault(); AddDocumentUnitChain(documentUnit, documentSeriesItem.IdMain.Value, ChainType.MainChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesLocation.ProtocolArchive, document != null ? document.Name : null); } } else { BiblosDS.BiblosDS.Document document = _biblosClient.Document.GetDocumentChildren(documentSeriesItem.IdMain.Value).FirstOrDefault(); AddDocumentUnitChain(documentUnit, documentSeriesItem.IdMain.Value, ChainType.MainChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesLocation.ProtocolArchive, document != null ? document.Name : null); } } else { foreach (DocumentUnitChain chain in documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.MainChain).ToList()) { documentUnit.DocumentUnitChains.Remove(chain); } } if (documentSeriesItem.DematerialisationChainId.HasValue && documentSeriesItem.DematerialisationChainId.Value != Guid.Empty) { DocumentUnitChain dematerialisation = documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.DematerialisationChain).FirstOrDefault(); if (dematerialisation != null) { if (dematerialisation.IdArchiveChain != documentSeriesItem.DematerialisationChainId.Value) { documentUnit.DocumentUnitChains.Remove(dematerialisation); AddDocumentUnitChain(documentUnit, documentSeriesItem.DematerialisationChainId.Value, ChainType.DematerialisationChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } } else { AddDocumentUnitChain(documentUnit, documentSeriesItem.DematerialisationChainId.Value, ChainType.DematerialisationChain, identity, documentSeriesItem.DocumentSeries.Container.DocumentSeriesAnnexedLocation.ProtocolArchive); } } else { foreach (DocumentUnitChain chain in documentUnit.DocumentUnitChains.Where(t => t.ChainType == ChainType.DematerialisationChain).ToList()) { documentUnit.DocumentUnitChains.Remove(chain); } } #endregion } catch (Exception ex) { _logger.WriteError(new LogMessage("DocumentSeriesItem, MappingUpdateAsync Error: "), ex, LogCategories); throw ex; } return(documentUnit); }