public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "customers/{id}")]
            HttpRequest request,
            string id,
            [Inject] ICustomerService customerService,
            ILogger logger
            )
        {
            logger.LogInformation($"Calling {nameof(GetCustomersFunction)}");

            if (!int.TryParse(id, out var customerId))
            {
                logger.LogError($"Error: Invalid request, id must be integer: {id}");
                return(new BadRequestObjectResult($"Invalid request, id must be integer: {id}"));
            }

            var getSpecificCustomerRequest = new GetSpecificCustomerRequest(customerId);
            var isValid = getSpecificCustomerRequest.Validate();

            if (!isValid)
            {
                logger.LogError("Error: Invalid request");
                return(new BadRequestObjectResult("Invalid request"));
            }

            var operationResult = await customerService.GetSpecificCustomerAsync(getSpecificCustomerRequest).ConfigureAwait(false);

            if (operationResult.Status)
            {
                return(new OkObjectResult(operationResult.Data));
            }

            return(new BadRequestObjectResult(operationResult.Message));
        }
Пример #2
0
        public async Task <OperationResult <CustomerDisplayModel> > GetSpecificCustomerAsync(GetSpecificCustomerRequest request)
        {
            var isValid = request.Validate();

            if (!isValid)
            {
                _logger.LogError("Error: Invalid request");
                return(OperationResult <CustomerDisplayModel> .Failure("Invalid request"));
            }

            var operationResult = await _customerRepository.GetCustomerAsync(request.Id).ConfigureAwait(false);

            if (operationResult.Status)
            {
                _logger.LogInformation("Customer retrieved successfully");

                return(OperationResult <CustomerDisplayModel> .Success(new CustomerDisplayModel(operationResult.Data.Name, operationResult.Data.Address)));
            }

            _logger.LogError("Error: Cannot get specific customer");
            return(OperationResult <CustomerDisplayModel> .Failure("Cannot get specific customer"));
        }