Example #1
0
        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));
        }
Example #2
0
        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);
        }