private async Task <Fascicle> UpdateData(FascicleBuildModel fascicleBuildModel, FascicleModel entity) { Fascicle entityTransformed; try { entityTransformed = await _webApiClient.GetFascicleByIdAsync(entity.UniqueId); if (entityTransformed == null) { _logger.WriteError(new LogMessage($"Fascicle with id {entity.UniqueId} not found"), LogCategories); throw new Exception("Fascicle not found"); } entityTransformed.WorkflowName = fascicleBuildModel.WorkflowName; entityTransformed.IdWorkflowActivity = fascicleBuildModel.IdWorkflowActivity; entityTransformed.WorkflowAutoComplete = fascicleBuildModel.WorkflowAutoComplete; foreach (IWorkflowAction workflowAction in fascicleBuildModel.WorkflowActions) { entityTransformed.WorkflowActions.Add(workflowAction); } entityTransformed.Name = entity.Name; entityTransformed.Note = entity.Note; entityTransformed.Rack = entity.Rack; entityTransformed.FascicleObject = entity.FascicleObject; if (entityTransformed.FascicleType == DocSuiteWeb.Entity.Fascicles.FascicleType.Legacy) { entityTransformed.Manager = entity.Manager; } if (entityTransformed.FascicleType != DocSuiteWeb.Entity.Fascicles.FascicleType.Activity && entity.Contacts != null) { foreach (Contact item in entityTransformed.Contacts.Where(f => !entity.Contacts.Any(c => c.EntityId == f.EntityId)).ToList()) { entityTransformed.Contacts.Remove(item); } foreach (ContactModel item in entity.Contacts.Where(f => !entityTransformed.Contacts.Any(c => c.EntityId == f.EntityId))) { entityTransformed.Contacts.Add(new Contact() { EntityId = item.EntityId.Value }); } } if (entity.FascicleDocuments != null && entity.FascicleDocuments.Count > 0) { Archive fascicleMiscellaneaArchive = _biblosArchives.Single(f => f.Name.Equals(_fascicleLocation.ProtocolArchive, StringComparison.InvariantCultureIgnoreCase)); List <BiblosDS.BiblosDS.Attribute> miscellaneaAttributes = _biblosClient.Document.GetAttributesDefinition(fascicleMiscellaneaArchive.Name); DocumentModel documentInserted; FascicleFolder fascicleFolder; FascicleDocument currentFascicleDocument; foreach (FascicleDocumentModel item in entity.FascicleDocuments.Where(f => !entityTransformed.FascicleDocuments.Any(c => c.UniqueId == f.UniqueId))) { if (item.Document == null || !item.Document.DocumentToStoreId.HasValue) { _logger.WriteError(new LogMessage($"Document not defined for fascicle document {item.UniqueId}."), LogCategories); continue; } fascicleFolder = null; if (item.FascicleFolder != null) { fascicleFolder = await _webApiClient.GetFascicleFolderAsync(item.FascicleFolder.UniqueId); } if (fascicleFolder == null) { fascicleFolder = await _webApiClient.GetDefaultFascicleFolderAsync(entityTransformed.UniqueId); } _logger.WriteInfo(new LogMessage($"Adding document {item.Document.FileName} into fascicle folder {fascicleFolder.Name}({fascicleFolder.UniqueId})."), LogCategories); currentFascicleDocument = await _webApiClient.GetFascicleDocumentByFolderAsync(fascicleFolder.UniqueId); item.Document.ChainId = currentFascicleDocument?.IdArchiveChain; documentInserted = ArchiveFascicleMiscellanea(item, fascicleMiscellaneaArchive, miscellaneaAttributes); if (currentFascicleDocument == null) { entityTransformed.FascicleDocuments.Add(new FascicleDocument() { IdArchiveChain = documentInserted.ChainId.Value, ChainType = DocSuiteWeb.Entity.DocumentUnits.ChainType.Miscellanea, FascicleFolder = fascicleFolder }); } } } if (!string.IsNullOrEmpty(entity.MetadataDesigner)) { entityTransformed.MetadataDesigner = entity.MetadataDesigner; } if (!string.IsNullOrEmpty(entity.MetadataValues)) { entityTransformed.MetadataValues = entity.MetadataValues; } entityTransformed = await _webApiClient.PutEntityAsync(entityTransformed); } catch (Exception ex) { _logger.WriteError(ex, LogCategories); throw ex; } return(entityTransformed); }