/// <summary> /// protocol cat = faccicle cat || protocol cat contine fasscicle cat /// </summary> /// <param name="objectToValidate"></param> protected override void ValidateObject(FascicleDocumentUnitValidator objectToValidate) { if (objectToValidate.ReferenceType != ReferenceType.Fascicle) { return; } bool result = false; FascicleFolder fascicleFolder = objectToValidate.FascicleFolder == null ? null : CurrentUnitOfWork.Repository <FascicleFolder>().GetByFolderId(objectToValidate.FascicleFolder.UniqueId); DocumentUnit documentUnit = objectToValidate.DocumentUnit == null ? null : CurrentUnitOfWork.Repository <DocumentUnit>().GetById(objectToValidate.DocumentUnit.UniqueId).FirstOrDefault(); Fascicle fascicle = objectToValidate.Fascicle == null ? null : CurrentUnitOfWork.Repository <Fascicle>().GetByUniqueId(objectToValidate.Fascicle.UniqueId); ICollection <CategoryFascicleTableValuedModel> categoryFascicles = CurrentUnitOfWork.Repository <CategoryFascicle>().GetCategorySubFascicles(fascicle.Category.EntityShortId); if (documentUnit != null && documentUnit.Category != null && fascicle != null && fascicle.Category != null && (documentUnit.Category.UniqueId == fascicle.Category.UniqueId || (categoryFascicles.Any() && categoryFascicles.Any(c => c.IdCategory == documentUnit.Category.EntityShortId)))) { result = true; } if (!result) { GenerateInvalidateResult(); } }
protected override void ValidateObject(DossierFolderValidator objectToValidate) { Fascicle temp = objectToValidate.Fascicle == null ? null : CurrentUnitOfWork.Repository <Fascicle>().GetByUniqueId(objectToValidate.Fascicle.UniqueId); if (temp != null && temp.Category != null && objectToValidate.Category != null && objectToValidate.Category.UniqueId != temp.Category.UniqueId) { GenerateInvalidateResult(); } }
protected override void ValidateObject(FascicleDocumentUnitValidator objectToValidate) { Fascicle localFascicle = objectToValidate.Fascicle == null ? null : CurrentUnitOfWork.Repository <Fascicle>().GetByUniqueId(objectToValidate.Fascicle.UniqueId); DocumentUnit documentUnit = objectToValidate.DocumentUnit == null ? null : CurrentUnitOfWork.Repository <DocumentUnit>().GetById(objectToValidate.DocumentUnit.UniqueId).SingleOrDefault(); if (documentUnit != null && localFascicle != null && !((documentUnit.Environment).Equals(localFascicle.DSWEnvironment)) && objectToValidate.ReferenceType == ReferenceType.Fascicle && localFascicle.FascicleType == FascicleType.Period) { GenerateInvalidateResult(); } }
public async Task ExecuteAsync(ICommandUpdateFascicleData command) { _logger.WriteInfo(new LogMessage($"{command.CommandName} is arrived"), LogCategories); FascicleBuildModel fascicleBuildModel = command.ContentType.ContentTypeValue; FascicleModel fascicleModel = fascicleBuildModel.Fascicle; try { if (RetryPolicyEvaluation != null && !string.IsNullOrEmpty(RetryPolicyEvaluation.ReferenceModel)) { _logger.WriteDebug(new LogMessage("Load reference model from RetryPolicyEvaluation"), LogCategories); fascicleModel = JsonConvert.DeserializeObject <FascicleModel>(RetryPolicyEvaluation.ReferenceModel, _serializerSettings); } else { _logger.WriteDebug(new LogMessage("Generate new RetryPolicyEvaluation model"), LogCategories); RetryPolicyEvaluation = new EvaluationModel(); } _logger.WriteInfo(new LogMessage($"Cancel requested for fascicle {fascicleModel.Title}/{fascicleModel.UniqueId}-{fascicleModel.FascicleObject}"), LogCategories); _logger.WriteDebug(new LogMessage($"Cancel requested from WorkflowName {fascicleBuildModel.WorkflowName} and IdWorkflowActivity {fascicleBuildModel.IdWorkflowActivity}"), LogCategories); if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "ENTITY_UPDATED")) { Fascicle updatedFascicle = await UpdateData(fascicleBuildModel, fascicleModel); _logger.WriteInfo(new LogMessage($"Fascicle {updatedFascicle.GetTitle()} has been updated"), LogCategories); RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "ENTITY_UPDATED", LocalReference = JsonConvert.SerializeObject(fascicleModel, _serializerSettings) }); _logger.WriteDebug(new LogMessage("Set ENTITY_UPDATED RetryPolicyEvaluation"), LogCategories); } else { StepModel fascicleStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "ENTITY_UPDATED"); fascicleModel = JsonConvert.DeserializeObject <FascicleModel>(fascicleStatus.LocalReference); _logger.WriteDebug(new LogMessage("Load fascicle entity from RetryPolicyEvaluation ENTITY_UPDATED"), LogCategories); } } catch (Exception ex) { RetryPolicyEvaluation.ReferenceModel = JsonConvert.SerializeObject(fascicleModel, _serializerSettings); _logger.WriteError(ex, LogCategories); throw new ServiceBusEvaluationException(RetryPolicyEvaluation); } }
private void GenerateFascicleReference(Fascicle fascicle, Guid uniqueIdProtocol) { if (fascicle != null && this.CurrentTenantConfiguration.Dao.FindProtocolInFascicle(uniqueIdProtocol, fascicle.UniqueId) == null) { FascicleProtocol fascicleProtocol = new FascicleProtocol() { DocumentUnit = new Entity.Protocols.Protocol() { UniqueId = uniqueIdProtocol }, Fascicle = fascicle, ReferenceType = ReferenceType.Reference }; Save(fascicleProtocol); } }
protected override void ValidateObject(FascicleDocumentUnitValidator objectToValidate) { if (objectToValidate.ReferenceType == ReferenceType.Reference) { return; } int count = 0; Fascicle localFascicle = objectToValidate.Fascicle == null || objectToValidate.DocumentUnit == null ? null : CurrentUnitOfWork.Repository <Fascicle>().GetByUniqueId(objectToValidate.Fascicle.UniqueId); count = localFascicle == null || localFascicle.Category == null ? 0 : CurrentUnitOfWork.Repository <CategoryFascicle>().CountByEnvironment(localFascicle.Category.EntityShortId, objectToValidate.DocumentUnit.Environment); if (count == 0) { GenerateInvalidateResult(); } }
protected override Process BeforeUpdate(Process entity, Process entityTransformed) { entityTransformed.ProcessType = ProcessType.Defined; if (entity.Category != null) { entityTransformed.Category = _unitOfWork.Repository <Category>().Find(entity.Category.EntityShortId); } if (entity.Roles != null) { foreach (Role item in entityTransformed.Roles.Where(f => !entity.Roles.Any(c => c.EntityShortId == f.EntityShortId)).ToList()) { foreach (DossierFolder df in entityTransformed.Dossier.DossierFolders) { if (df.DossierFolderRoles.Count() != 0) { DossierFolderRole role = df.DossierFolderRoles.FirstOrDefault(x => x.Role.EntityShortId == item.EntityShortId); if (role != null) { _unitOfWork.Repository <DossierFolderRole>().Delete(role); _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.DELETE, string.Concat("Rimosso il settore '", item.Name, "' da volumi '", df.Name, "'"), typeof(TenantConfiguration).Name, CurrentDomainUser.Account)); } } if (df.FascicleTemplates.Count() != 0) { foreach (ProcessFascicleTemplate pft in df.FascicleTemplates) { if (pft.JsonModel != null && !String.IsNullOrEmpty(pft.JsonModel)) { Fascicle fascicle = JsonConvert.DeserializeObject <Fascicle>(pft.JsonModel); FascicleRole role = fascicle.FascicleRoles.FirstOrDefault(x => x.Role.EntityShortId == item.EntityShortId); if (role != null && role.IsMaster) { fascicle.FascicleRoles.Remove(role); pft.JsonModel = JsonConvert.SerializeObject(fascicle); _unitOfWork.Repository <ProcessFascicleTemplate>().Update(pft); _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.DELETE, string.Concat("Rimosso il settore '", item.Name, "' da modello di fascicolo '", pft.Name, "'"), typeof(TenantConfiguration).Name, CurrentDomainUser.Account)); } } } } } entityTransformed.Roles.Remove(item); _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.DELETE, string.Concat("Rimosso il settore '", item.Name, "'"), typeof(TenantConfiguration).Name, CurrentDomainUser.Account)); } foreach (Role item in entity.Roles.Where(f => !entityTransformed.Roles.Any(c => c.EntityShortId == f.EntityShortId))) { foreach (DossierFolder df in entityTransformed.Dossier.DossierFolders) { DossierFolderRole role = new DossierFolderRole { Role = _unitOfWork.Repository <Role>().Find(item.EntityShortId), AuthorizationRoleType = AuthorizationRoleType.Accounted, IsMaster = true, DossierFolder = _unitOfWork.Repository <DossierFolder>().Find(df.UniqueId), Status = DossierRoleStatus.Active }; if (!df.DossierFolderRoles.Any(x => x.Role.EntityId == item.EntityShortId)) { _unitOfWork.Repository <DossierFolderRole>().Insert(role); _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.INSERT, string.Concat("Aggiunto il settore '", item.Name, "' da volumi '", df.Name, "'"), typeof(TenantConfiguration).Name, CurrentDomainUser.Account)); } } entityTransformed.Roles.Add(_unitOfWork.Repository <Role>().Find(item.EntityShortId)); _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.INSERT, string.Concat("Aggiunto il settore '", item.Name, "'"), typeof(TenantConfiguration).Name, CurrentDomainUser.Account)); } } _unitOfWork.Repository <TableLog>().Insert(TableLogService.CreateLog(entityTransformed.UniqueId, null, TableLogEvent.UPDATE, $"Modificata raccolta dei procedimenti {entity.Name} con ID {entity.UniqueId}", typeof(Process).Name, CurrentDomainUser.Account)); return(base.BeforeUpdate(entity, entityTransformed)); }
public static IQueryable <FascicleLink> GetByFascicleLink(this IRepository <FascicleLink> repository, Fascicle fascicle, Fascicle fascicleLinked) { IQueryable <FascicleLink> temp = repository.Query(x => x.Fascicle.UniqueId == fascicle.UniqueId && x.FascicleLinked.UniqueId == fascicleLinked.UniqueId) .Include(i => i.Fascicle) .Include(i => i.FascicleLinked) .SelectAsQueryable(); return(temp); }
public static ICollection <ContactTableValuedModel> GetContacts(this IRepository <Fascicle> repository, Fascicle fascicle) { return(repository.ExecuteModelFunction <ContactTableValuedModel>(CommonDefinition.SQL_FX_Fascicle_GetFascicleContactModels, new QueryParameter(CommonDefinition.SQL_Param_Fascicle_IdFascicle, fascicle.UniqueId))); }
public static ICollection <DocumentUnitTableValuedModel> GetFascicleDocumentUnitsPrivate(this IRepository <DocumentUnit> repository, Fascicle fascicle, Guid?idFascicleFolder, Guid?idTenantAOO) { QueryParameter fascicleFolderParameter = new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_IdFascicleFolder, DBNull.Value); QueryParameter idTenantAooParameter = new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_IdTenantAOO, DBNull.Value); if (idFascicleFolder.HasValue) { fascicleFolderParameter = new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_IdFascicleFolder, idFascicleFolder.Value); } if (idTenantAOO.HasValue) { idTenantAooParameter = new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_IdTenantAOO, idTenantAOO.Value); } return(repository.ExecuteModelFunction <DocumentUnitTableValuedModel>(CommonDefinition.SQL_FX_DocumentUnit_FascicleDocumentUnitsPrivate, new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FascicleId, fascicle.UniqueId), fascicleFolderParameter, idTenantAooParameter)); }
public static bool CanBeFascicolable(this IRepository <DocumentUnit> repository, Fascicle fascicle, DocumentUnit documentUnit) { return(repository.ExecuteModelScalarFunction <bool>(CommonDefinition.SQL_FX_DocumentUnits_CanBeFascicolable, new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FascicleIdCategory, fascicle.Category.EntityShortId), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FascicleEnvironment, fascicle.DSWEnvironment.HasValue ? fascicle.DSWEnvironment.Value : 0), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FascicleType, (short)fascicle.FascicleType), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_IdDocumentUnit, documentUnit.UniqueId), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_Environment, documentUnit.Environment), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_CategoryId, documentUnit.Category.EntityShortId))); }
public static ICollection <DocumentUnitTableValuedModel> GetFascicleDocumentUnitsPublic(this IRepository <DocumentUnit> repository, Fascicle fascicle, string filter) { return(repository.ExecuteModelFunction <DocumentUnitTableValuedModel>(CommonDefinition.SQL_FX_DocumentUnit_FascicleDocumentUnitsPublic, new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FascicleId, fascicle.UniqueId), new QueryParameter(CommonDefinition.SQL_Param_DocumentUnit_FilterNameTitle, string.IsNullOrEmpty(filter) ? string.Empty : filter))); }
public async Task ExecuteAsync(ICommandBuildFascicle command) { Fascicle fascicle = new Fascicle(); FascicleBuildModel fascicleBuildModel = command.ContentType.ContentTypeValue; FascicleModel fascicleModel = fascicleBuildModel.Fascicle; IdWorkflowActivity = fascicleBuildModel.IdWorkflowActivity; List <DossierFolderModel> dossierFolderDoAction = new List <DossierFolderModel>(); string fascicleInsertActionType; if (!fascicleModel.FascicleType.HasValue || !_fascicleTypeInsertActionDescription.TryGetValue(fascicleModel.FascicleType.Value, out fascicleInsertActionType)) { _logger.WriteError(new LogMessage($"Undefined or unsupported fascicle type {fascicleModel.FascicleType}"), LogCategories); throw new ServiceBusEvaluationException(new EvaluationModel { CommandName = nameof(command), CorrelationId = command.CorrelationId }); } try { if (RetryPolicyEvaluation != null && !string.IsNullOrEmpty(RetryPolicyEvaluation.ReferenceModel)) { fascicleModel = JsonConvert.DeserializeObject <FascicleModel>(RetryPolicyEvaluation.ReferenceModel, _serializerSettings); } else { RetryPolicyEvaluation = new EvaluationModel(); } //Attraverso le WebAPI comunicando col verbo POST col controller Rest Fascicle creare l'entità Fascicle #region [ Creazione Fascicle ] if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "ENTITY")) { if (!fascicleModel.Category.IdCategory.HasValue) { throw new ArgumentNullException("fascicleModel.Category.IdCategory", "IdCategory must be defined"); } if (fascicleModel.UniqueId == Guid.Empty) { throw new ArgumentException("fascicleModel.UniqueId", $"Invalid FascicleModel UniqueId {fascicleModel.UniqueId}"); } fascicle.MetadataValues = fascicleModel.MetadataValues; fascicle.UniqueId = fascicleModel.UniqueId; fascicle.Rack = fascicleModel.Rack; fascicle.Note = fascicleModel.Note; fascicle.Manager = fascicleModel.Manager; fascicle.FascicleObject = fascicleModel.FascicleObject; fascicle.MetadataDesigner = fascicleModel.MetadataDesigner; if (fascicleModel.FascicleTemplate != null) { fascicle.FascicleTemplate = new ProcessFascicleTemplate { JsonModel = fascicleModel.FascicleTemplate.JsonModel, Name = fascicleModel.FascicleTemplate.Name, UniqueId = fascicleModel.FascicleTemplate.UniqueId ?? Guid.NewGuid(), StartDate = fascicleModel.FascicleTemplate.StartDate, EndDate = fascicleModel.FascicleTemplate.EndDate, RegistrationDate = fascicleModel.FascicleTemplate.RegistrationDate, RegistrationUser = fascicleModel.FascicleTemplate.RegistrationUser }; } if (fascicleModel.MetadataRepository != null) { fascicle.MetadataRepository = new MetadataRepository() { UniqueId = fascicleModel.MetadataRepository.Id }; } if (fascicleModel.FascicleType != null) { fascicle.FascicleType = (DocSuiteWeb.Entity.Fascicles.FascicleType)fascicleModel.FascicleType.Value; } if (fascicleModel.VisibilityType != null) { fascicle.VisibilityType = (DocSuiteWeb.Entity.Fascicles.VisibilityType)fascicleModel.VisibilityType.Value; } if (fascicleModel.Conservation != null) { fascicle.Conservation = fascicleModel.Conservation.Value; } if (fascicleModel.DossierFolders.Any()) { dossierFolderDoAction.AddRange(fascicleModel.DossierFolders.Where(f => f.Status == DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus.DoAction)); List <DossierFolder> dossierFolders = new List <DossierFolder>(); DossierFolder folder; foreach (DossierFolderModel dossierFolderModel in fascicleModel.DossierFolders.Where(f => f.Status != DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus.DoAction)) { if (dossierFolderModel.Status == DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus.Fascicle || dossierFolderModel.Status == DocSuiteWeb.Model.Entities.Dossiers.DossierFolderStatus.FascicleClose) { _logger.WriteWarning(new LogMessage($"Fascicle {fascicle.GetTitle()} has wrong dossierfolder({dossierFolderModel.UniqueId}) reference type and it going to replace with parent association"), LogCategories); folder = await _webApiClient.GetDossierFolderParentAsync(dossierFolderModel.UniqueId); folder.Category = new Category() { EntityShortId = (short)fascicleModel.Category.IdCategory.Value }; if (folder == null) { _logger.WriteError(new LogMessage($"DossierFolder {dossierFolderModel.UniqueId} doesn't have parent. it will be skip"), LogCategories); continue; } dossierFolders.Add(folder); } else { dossierFolders.Add(new DossierFolder() { UniqueId = dossierFolderModel.UniqueId, Status = (VecompSoftware.DocSuiteWeb.Entity.Dossiers.DossierFolderStatus)dossierFolderModel.Status, Category = dossierFolderModel.IdCategory.HasValue ? new Category() { EntityShortId = dossierFolderModel.IdCategory.Value } : null }); } } fascicle.DossierFolders = dossierFolders; } fascicle.Contacts = new List <Contact>(); if (fascicleModel.Contacts != null && fascicleModel.Contacts.Count > 0) { foreach (ContactModel contact in fascicleModel.Contacts.Where(f => f.EntityId.HasValue)) { fascicle.Contacts.Add(new Contact() { EntityId = contact.EntityId.Value }); } } fascicle.Category = new Category() { EntityShortId = (short)fascicleModel.Category.IdCategory.Value }; fascicle.FascicleRoles = new List <FascicleRole>(); if (fascicleModel.FascicleRoles != null && fascicleModel.FascicleRoles.Count > 0) { fascicle.FascicleRoles = fascicleModel.FascicleRoles.Where(x => x.Role.IdRole.HasValue).Select(s => new FascicleRole() { Role = new Role() { EntityShortId = s.Role.IdRole.Value }, IsMaster = s.IsMaster, AuthorizationRoleType = (AuthorizationRoleType)s.AuthorizationRoleType }).ToList(); } RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "ENTITY", LocalReference = JsonConvert.SerializeObject(fascicle, _serializerSettings) }); } else { StepModel messageStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "ENTITY"); fascicle = JsonConvert.DeserializeObject <Fascicle>(messageStatus.LocalReference); } if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "ENTITY_CREATED")) { fascicle.WorkflowName = fascicleBuildModel.WorkflowName; fascicle.IdWorkflowActivity = fascicleBuildModel.IdWorkflowActivity; fascicle.WorkflowAutoComplete = fascicleBuildModel.WorkflowAutoComplete; foreach (IWorkflowAction workflowAction in fascicleBuildModel.WorkflowActions) { fascicle.WorkflowActions.Add(workflowAction); } _logger.WriteDebug(new LogMessage(JsonConvert.SerializeObject(fascicle, _serializerSettings)), LogCategories); fascicle = await _webApiClient.PostEntityAsync(fascicle, fascicleInsertActionType); _logger.WriteInfo(new LogMessage($"Fascicle {fascicle.GetTitle()} has been created"), LogCategories); DossierFolder dossierFolder; foreach (DossierFolderModel item in dossierFolderDoAction) { dossierFolder = await _webApiClient.PutEntityAsync(new DossierFolder() { UniqueId = item.UniqueId, Category = new Category() { EntityShortId = fascicle.Category.EntityShortId }, Fascicle = fascicle, JsonMetadata = item.JsonMetadata, Name = item.Name, Status = DocSuiteWeb.Entity.Dossiers.DossierFolderStatus.Fascicle }); _logger.WriteInfo(new LogMessage($"DoAction DossierFolder {item.Name} update to new fascicle"), LogCategories); fascicle.DossierFolders.Add(dossierFolder); } RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "ENTITY_CREATED", LocalReference = JsonConvert.SerializeObject(fascicle, _serializerSettings) }); } else { StepModel messageStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "ENTITY_CREATED"); //Posso fare first direttamente perche sono nell else fascicle = JsonConvert.DeserializeObject <Fascicle>(messageStatus.LocalReference); } #endregion #region [ Creazione FascicleFolders ] if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "FASCICLE_FOLDERS")) { if (fascicleModel.FascicleFolders.Count > 0) { FascicleFolder defaultFolder = await _webApiClient.GetDefaultFascicleFolderAsync(fascicle.UniqueId); FascicleFolder fascicleFolder; foreach (FascicleFolderModel fascicleFolderModel in fascicleModel.FascicleFolders) { fascicleFolder = new FascicleFolder() { UniqueId = fascicleFolderModel.UniqueId, Fascicle = fascicle, ParentInsertId = defaultFolder.UniqueId, Name = fascicleFolderModel.Name, Status = (DocSuiteWeb.Entity.Fascicles.FascicleFolderStatus)fascicleFolderModel.Status, Typology = (DocSuiteWeb.Entity.Fascicles.FascicleFolderTypology)fascicleFolderModel.Typology }; await _webApiClient.PostEntityAsync(fascicleFolder); _logger.WriteInfo(new LogMessage($"Fascicle folder {fascicleFolder.Name} has been created"), LogCategories); } } RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "FASCICLE_FOLDERS", LocalReference = JsonConvert.SerializeObject(fascicle, _serializerSettings) }); } else { StepModel messageStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "FASCICLE_FOLDERS"); fascicle = JsonConvert.DeserializeObject <Fascicle>(messageStatus.LocalReference); } #endregion //Attraverso le WebAPI comunicando col verbo POST col controller Rest FascicleDocument e inserire tutti gli inserti inseriti in Biblos popolando la navigation property FascicleDocuments (FascicleDocument table) coi relativi identificativi Guid di Biblos #region [ Creazione FascicleDocument ] if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "FASCICLE")) { foreach (FascicleDocumentModel model in fascicleModel.FascicleDocuments) { fascicle.FascicleDocuments.Add(new FascicleDocument { UniqueId = model.UniqueId, ChainType = (DocSuiteWeb.Entity.DocumentUnits.ChainType)model.ChainType, IdArchiveChain = model.IdArchiveChain, RegistrationUser = model.RegistrationUser, RegistrationDate = model.RegistrationDate.Value, LastChangedUser = model.LastChangedUser }); } RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "FASCICLE", LocalReference = JsonConvert.SerializeObject(fascicle, _serializerSettings) }); } else { StepModel messageStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "FASCICLE"); fascicle = JsonConvert.DeserializeObject <Fascicle>(messageStatus.LocalReference); } if (!RetryPolicyEvaluation.Steps.Any(f => f.Name == "FASCICLE_CREATED")) { fascicle = await _webApiClient.PutEntityAsync(fascicle, fascicle.FascicleType == DocSuiteWeb.Entity.Fascicles.FascicleType.Activity?UpdateActionType.ActivityFascicleUpdate.ToString() : string.Empty); RetryPolicyEvaluation.Steps.Add(new StepModel() { Name = "FASCICLE_CREATED", LocalReference = JsonConvert.SerializeObject(fascicle, _serializerSettings) }); } else { StepModel messageStatus = RetryPolicyEvaluation.Steps.First(f => f.Name == "FASCICLE_CREATED"); fascicle = JsonConvert.DeserializeObject <Fascicle>(messageStatus.LocalReference); } #endregion //Attraverso le WebAPI comunicando col verbo POST inviare l'evento EventoCompleteFascicleBuild #region [ EventoCompleteFascicleBuild ] fascicleModel.RegistrationDate = fascicle.RegistrationDate; fascicleModel.RegistrationUser = fascicle.RegistrationUser; fascicleModel.Year = fascicle.Year; fascicleModel.Title = fascicle.Title; fascicleModel.StartDate = fascicle.StartDate; fascicleModel.Number = fascicle.Number; fascicleBuildModel.Fascicle = fascicleModel; IEventCompleteFascicleBuild eventCompleteFascicleBuild = new EventCompleteFascicleBuild(Guid.NewGuid(), command.CorrelationId ?? fascicleBuildModel.UniqueId, command.TenantName, command.TenantId, command.TenantAOOId, command.Identity, fascicleBuildModel, null); if (!await _webApiClient.PushEventAsync(eventCompleteFascicleBuild)) { _logger.WriteError(new LogMessage($"EventCompleteFascicleBuild {fascicle.GetTitle()} has not been sended"), LogCategories); throw new Exception("IEventCompleteFascicleBuild not sended"); } _logger.WriteInfo(new LogMessage($"EventCompleteFascicleBuild {eventCompleteFascicleBuild.Id} has been sended"), LogCategories); #endregion } catch (Exception ex) { RetryPolicyEvaluation.ReferenceModel = JsonConvert.SerializeObject(fascicleModel, _serializerSettings); _logger.WriteError(ex, LogCategories); throw new ServiceBusEvaluationException(RetryPolicyEvaluation); } }