public async Task <Result <GetProductResponse> > Handle(GetProductByCodeDto request, CancellationToken cancellationToken)
        {
            var serviceRequest = new GetProductByCodeRequest(request.CorrelationId, request.ProductCode);

            var operation = await _mediator.Send(serviceRequest, cancellationToken);

            return(operation);
        }
        public IActionResult Render(GetProductByCodeDto request, Result <GetProductResponse> response)
        {
            if (!response.Status)
            {
                return(GetErrorResponse(response));
            }

            return(new OkObjectResult(response.Data));
        }
        public async Task <IActionResult> GetProductAsync([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "v1/products/{productCode}")]
                                                          HttpRequest request, string productCode)
        {
            var correlationId = request.GetHeaderValue("correlationId");

            var dto = new GetProductByCodeDto
            {
                CorrelationId = correlationId,
                ProductCode   = productCode
            };

            var operation = await _mediator.Send(dto);

            if (!operation.Status)
            {
                _logger.LogError("Error occured when getting product: {correlationId}", correlationId);
            }

            var result = _responseFormatter.Render(dto, operation);

            return(result);
        }