public void Execute(GetFooByNameUseCaseRequest useCaseRequest, IOutputPort <GetFooByNameUseCaseResponse> outputPort)
        {
            Foo foo;

            try
            {
                foo = _fooRepository.GetByName(useCaseRequest.Name);
            }
            catch (Exception exception)
            {
                _coreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(2, "Unknown Error"));
                return;
            }

            if (foo == default(Foo))
            {
                outputPort.HandleError(new SimpleUseCaseError(1, $"{nameof(Foo)} with {nameof(useCaseRequest.Name)} {useCaseRequest.Name} not exists"));
                return;
            }

            var getFooByNameUseCaseResponse = new GetFooByNameUseCaseResponse(foo);

            outputPort.HandleSuccess(getFooByNameUseCaseResponse);
        }
Exemple #2
0
        public virtual async Task ExecuteAsync(CreateEntityUseCaseRequest <T> useCaseRequest, IOutputPort <CreateEntityUseCaseResponse> outputPort)
        {
            if (!EntityValidator.IsValid(useCaseRequest.Entity))
            {
                outputPort.HandleError(new SimpleUseCaseError(1, "Not Valid Entity"));
                return;
            }

            long id;

            try
            {
                id = await Repository.AddAsync(useCaseRequest.Entity);
            }
            catch (Exception exception)
            {
                CoreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(2, "Add Not Found"));
                return;
            }

            if (id == default(long))
            {
                outputPort.HandleError(new SimpleUseCaseError(2, "Add Not Found"));
                return;
            }

            var createEntityUseCaseResponse = new CreateEntityUseCaseResponse(id);

            outputPort.HandleSuccess(createEntityUseCaseResponse);
        }
Exemple #3
0
        public virtual async Task ExecuteAsync(UpdateEntityUseCaseRequest <T> useCaseRequest, IOutputPort <UpdateEntityUseCaseResponse> outputPort)
        {
            if (!EntityValidator.IsValid(useCaseRequest.Entity))
            {
                outputPort.HandleError(new SimpleUseCaseError(1, "Not Valid Entity"));
                return;
            }

            bool updated;

            try
            {
                updated = await Repository.UpdateAsync(useCaseRequest.Entity);
            }
            catch (Exception exception)
            {
                CoreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(2, "Update Not Found"));
                return;
            }

            if (!updated)
            {
                outputPort.HandleError(new SimpleUseCaseError(2, "Update Not Found"));
                return;
            }

            var updateEntityUseCaseResponse = new UpdateEntityUseCaseResponse(useCaseRequest.Entity.Id);

            outputPort.HandleSuccess(updateEntityUseCaseResponse);
        }
Exemple #4
0
        public virtual async Task ExecuteAsync(GetEntityByIdUseCaseRequest useCaseRequest, IOutputPort <GetEntityByIdUseCaseResponse <T> > outputPort)
        {
            T entity;

            try
            {
                entity = await Repository.GetByIdAsync(useCaseRequest.Id);
            }
            catch (Exception exception)
            {
                CoreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(2, "Unknown Error"));
                return;
            }

            if (entity == default(T))
            {
                outputPort.HandleError(new SimpleUseCaseError(1, $"{typeof(T).Name} with {nameof(useCaseRequest.Id)} {useCaseRequest.Id} not exists"));
                return;
            }

            var getByIdEntityUseCaseResponse = new GetEntityByIdUseCaseResponse <T>(entity);

            outputPort.HandleSuccess(getByIdEntityUseCaseResponse);
        }
        public virtual async Task ExecuteAsync(DeleteEntityUseCaseRequest useCaseRequest, IOutputPort <DeleteEntityUseCaseResponse> outputPort)
        {
            var entityToBeDeleted = new T {
                Id = useCaseRequest.Id
            };

            bool deleted;

            try
            {
                deleted = await Repository.DeleteAsync(entityToBeDeleted);
            }
            catch (Exception exception)
            {
                CoreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(1, "Delete Not Found"));
                return;
            }

            if (!deleted)
            {
                outputPort.HandleError(new SimpleUseCaseError(1, "Delete Not Found"));
                return;
            }

            var deleteEntityUseCaseResponse = new DeleteEntityUseCaseResponse(useCaseRequest.Id);

            outputPort.HandleSuccess(deleteEntityUseCaseResponse);
        }
        public virtual async Task ExecuteAsync(GetAllEntitysUseCaseRequest useCaseRequest, IOutputPort <GetAllEntityUseCaseResponse <T> > outputPort)
        {
            IEnumerable <T> entities;

            try
            {
                entities = await Repository.GetAllAsync();
            }
            catch (Exception exception)
            {
                CoreLogger.LogError(exception);

                outputPort.HandleError(new SimpleUseCaseError(1, "Unknown Error"));
                return;
            }

            var getAllEntityUseCaseResponse = new GetAllEntityUseCaseResponse <T>(entities);

            outputPort.HandleSuccess(getAllEntityUseCaseResponse);
        }