Beispiel #1
0
        public async Task Execute(InputData inputData)
        {
            try
            {
                var originCountry = await _countriesService.FindByName(inputData.Origin);

                if (originCountry is null)
                {
                    throw new ArgumentOutOfRangeException(Resources.CountryNameNotFound);
                }

                var destinyCountry = await _countriesService.FindByName(inputData.Destiny);

                if (destinyCountry is null)
                {
                    throw new ArgumentOutOfRangeException(Resources.CountryNameNotFound);
                }

                if (!destinyCountry.Region.Equals(originCountry.Region))
                {
                    throw new ArgumentOutOfRangeException(Resources.CountryNameNotFound);
                }

                var countriesInRoute = await _countriesService.GetRoute(originCountry, destinyCountry);

                var outputDataCountries = countriesInRoute.Select(
                    country => new OutputDataRouteCountryItem(
                        country.Name,
                        country.Flag)
                    ).ToList();

                var outputData = new OutputData(outputDataCountries);

                _outputPort.Success(outputData);
            }
            catch (ArgumentOutOfRangeException ex)
            {
                _outputPort.InvalidData(ex.Message);
            }
        }