private async Task <Tuple <DocumentUnit, DocumentUnit> > EvaluateMappingDocumentUnitAsync(TCommand command, IBaseCommonExecutor baseCommonExecutor, IContentBase entity, bool isCommandUpdate) { DocumentUnit documentUnit = null; DocumentUnit existDocumentUnit = null; if (typeof(IDocumentUnitEntity).IsAssignableFrom(baseCommonExecutor.GetType())) { documentUnit = await baseCommonExecutor.Mapping(entity, command.Identity, isCommandUpdate); documentUnit.TenantAOO = new TenantAOO() { UniqueId = command.TenantAOOId }; existDocumentUnit = await _webApiClient.GetDocumentUnitAsync(documentUnit); bool skipSendDocument = existDocumentUnit != null && existDocumentUnit.UniqueId == documentUnit.UniqueId && existDocumentUnit.Year == documentUnit.Year && existDocumentUnit.Number == documentUnit.Number && existDocumentUnit.Subject == existDocumentUnit.Subject && existDocumentUnit.Environment == documentUnit.Environment; if ((!isCommandUpdate && !skipSendDocument) || isCommandUpdate) { await baseCommonExecutor.SendDocumentAsync(documentUnit, isCommandUpdate); _logger.WriteDebug(new LogMessage($"DocumentUnit - {entity.GetType()} - {entity.UniqueId} has been successfully created."), LogCategories); } else { _logger.WriteWarning(new LogMessage($"DocumentUnit - {entity.GetType()} - {entity.UniqueId} already exists and CQRS structures has been skipped."), LogCategories); } } return(new Tuple <DocumentUnit, DocumentUnit>(documentUnit, existDocumentUnit)); }
public override IEvent BuildEvent(ICommandCQRS command, WorkflowActionShareDocumentUnitModel workflowAction) { DocumentUnitModel documentUnitModel = workflowAction.GetReferenced(); DocumentUnit documentUnit = _webAPIClient.GetDocumentUnitAsync(new DocumentUnit(documentUnitModel.UniqueId)).Result; documentUnit.WorkflowName = workflowAction.WorkflowName; documentUnit.IdWorkflowActivity = workflowAction.IdWorkflowActivity; EventShareDocumentUnit @event = new EventShareDocumentUnit(Guid.NewGuid(), workflowAction.CorrelationId, command.TenantName, command.TenantId, command.TenantAOOId, command.Identity, documentUnit, null); return(@event); }
public async Task <DocumentUnit> Mapping(IContentBase entity, IIdentityContext identity, bool isUpdate) { DocumentUnit doc = null; DocumentUnit currentDocumentUnit; if (!isUpdate) { doc = await MappingInsertAsync(entity, identity); } if (isUpdate) { currentDocumentUnit = await _webApiClient.GetDocumentUnitAsync(new DocumentUnit(entity.UniqueId)); if (currentDocumentUnit == null) { string message = string.Concat("DoumentUnit ", entity.GetType().Name, " not found with UniqueId ", entity.UniqueId); _logger.WriteError(new LogMessage(message), LogCategories); throw new NullReferenceException(message); } doc = await MappingUpdateAsync(entity, currentDocumentUnit, identity); } return(doc); }