示例#1
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);
        }
        public async Task <IActionResult> CreateAsync([FromBody] CreateFooDto createFooDto)
        {
            var createFooOutputPort = new CreateFooOutputPort();

            var newFoo = new Foo
            {
                Name = createFooDto.Name
            };

            var createFooUseCaseRequest = new CreateEntityUseCaseRequest <Foo>(newFoo);

            await _createFooUseCase.ExecuteAsync(createFooUseCaseRequest, createFooOutputPort);

            return(createFooOutputPort.ActionResult);
        }
        public IActionResult Create([FromBody] CreateFooDto createFooDto)
        {
            var createFooOutputPort = new CreateFooOutputPort();

            var newFoo = new Foo
            {
                Name = createFooDto.Name
            };

            var createFooUseCaseRequest = new CreateEntityUseCaseRequest <Foo>(newFoo);

            _createFooUseCase.Execute(createFooUseCaseRequest, createFooOutputPort);

            return(createFooOutputPort.ActionResult);
        }