public async Task <Response <DistanceResponseVM> > GetDistanceAsync(DistanceRequestVM request) { try { var airportFromInfo = await _airpotsApi.GetAirportInfoAsync(request.IataCodeFrom); var airportToInfo = await _airpotsApi.GetAirportInfoAsync(request.IataCodeTo); var fromCoords = _mapper.Map <Coordinates>(airportFromInfo); var toCoords = _mapper.Map <Coordinates>(airportToInfo); var distance = fromCoords.DistanceTo(toCoords); var vm = new DistanceResponseVM() { Distance = distance }; var response = Response <DistanceResponseVM> .Success(vm); return(response); } catch (Exception ex) { _logger.LogError(ex, "Error while calculating distance"); var response = Response <DistanceResponseVM> .Error("Unable to get airport information"); return(response); } }
public async Task <ActionResult <Response <DistanceResponseVM> > > Post([FromBody] DistanceRequestVM distanceRequest) { var result = await _distanceCalculationService.GetDistanceAsync(distanceRequest); if (result.ResponseStatus == Domain.Enums.Status.Success) { return(Ok(result)); } else { return(BadRequest(result)); } }