public void when_ProcessImageUseCase_ExecuteGet_method_is_called_then_it_calls_the_gateway()
        {
            //act
            _processImageUseCase.ExecuteGet(new GetProcessImageRequest()); // no need for arrange, since it does not matter how the request object got set up for this test.

            //assert
            _mockGateway.Verify(g => g.RetrieveImage(It.IsAny <string>()), Times.Once);
        }
        public IActionResult GetProcessImage([FromRoute] GetProcessImageRequest requestData)
        {
            _logger.LogInformation($"Get ProcessImage request for Process Type: {requestData.processType ?? "null"}, Process Reference: {requestData.processRef ?? "null"}, Image Id: {requestData.imageId ?? "null"} and File Extension: {requestData.fileExtension ?? "null"}");
            var validationResult = _getValidator.Validate(requestData);

            if (validationResult.IsValid)
            {
                try
                {
                    var usecaseResponse = _processImageUseCase.ExecuteGet(requestData);
                    return(Ok(usecaseResponse));
                }
                catch (ImageNotFound ex)
                {
                    return(NotFound($"The image with ID = {requestData.imageId} has not been found."));

                    throw ex;
                }
                catch (Exception ex)
                {
                    return(StatusCode(500, "An error has occured while processing the request - " + ex.Message + " " + ex.InnerException));
                }
            }

            _logger.LogInformation($"Get ProcessImage request for Process Type: {requestData.processType ?? "null"}, Process Reference: {requestData.processRef ?? "null"}, Image Id: {requestData.imageId ?? "null"} and File Extension: {requestData.fileExtension ?? "null"} did not pass the validation:\n\n{validationResult.Errors.Select(e => $"Validation error for: '{e.PropertyName}', message: '{e.ErrorMessage}'.").Aggregate((acc, m) => acc + "\n" + m)}");
            return(BadRequest(validationResult.Errors));
        }