Exemple #1
0
        public IActionResult GetService([FromRoute] GetServiceByIdRequest requestParams) //if user doens't input anything, then it will be 0 by default!!!
        {
            var usecaseResult = _servicesUseCase.ExecuteGet(requestParams);

            if (usecaseResult != null)
            {
                return(Ok(usecaseResult));
            }

            return(NotFound(new ErrorResponse($"Service with an Id: {requestParams.Id} was not found.")));
        }
        public GetServiceResponse ExecuteGet(GetServiceByIdRequest requestParams)
        {
            var servicesGatewayResponse = _servicesGateway.GetService(requestParams.Id);

            var usecaseResponse = servicesGatewayResponse.ToResponse();

            if (usecaseResponse == null)
            {
                return(null);
            }
            usecaseResponse.Metadata.PostCode = requestParams.PostCode;

            if (!string.IsNullOrEmpty(requestParams.PostCode))
            {
                try
                {
                    Coordinate?postcodeCoord = _addressesGateway.GetPostcodeCoordinates(requestParams.PostCode);

                    if (postcodeCoord.HasValue)
                    {
                        usecaseResponse.Metadata.PostCodeLatitude  = postcodeCoord.Value.Latitude;
                        usecaseResponse.Metadata.PostCodeLongitude = postcodeCoord.Value.Longitude;

                        foreach (var location in usecaseResponse.Service.Locations)
                        {
                            if (location.Latitude.HasValue && location.Longitude.HasValue)
                            {
                                location.Distance =
                                    GeoCalculator.GetDistance(
                                        postcodeCoord.Value,
                                        new Coordinate(location.Latitude.Value, location.Longitude.Value),
                                        decimalPlaces: 1,
                                        DistanceUnit.Miles
                                        ) + " miles";
                            }
                        }
                    }
                    else
                    {
                        usecaseResponse.Metadata.Error = "Postcode coordinates not found.";
                    }
                }
                catch (Exception ex)
                {
                    usecaseResponse.Metadata.Error = ex.Message;
                }
            }

            return(usecaseResponse);
        }
        public async Task <IActionResult> GetServiceById(GetServiceByIdRequest request)
        {
            var model = await _service.GetServiceByIdAsync(request.ServiceId);

            if (model == null)
            {
                return(BadRequest());
            }

            var response = new WebServiceResponse
            {
                Code    = "success",
                Message = "get.services.success",
                Data    = model
            };

            return(Ok(model));
        }