コード例 #1
0
ファイル: RaceHelper.cs プロジェクト: andrewlock/RaceViewer
        private List <RaceDetails> ReadRaces()
        {
            var races    = new List <RaceDetails>();
            var fileInfo = new FileInfo(_excelFile);

            using (ExcelPackage package = new ExcelPackage(fileInfo))
            {
                var worksheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == "Races");

                if (worksheet == null)
                {
                    return(new List <RaceDetails>());
                }

                for (var i = worksheet.Dimension.Start.Row + 1; i <= worksheet.Dimension.End.Row; i++)
                {
                    var race = new RaceDetails
                    {
                        Name    = worksheet.Cells[i, 4].Value?.ToString(),
                        Start   = worksheet.Cells[i, 9].Value?.ToString(),
                        Medal   = worksheet.Cells[i, 5].Value?.ToString(),
                        Cost    = worksheet.Cells[i, 6].Value?.ToString(),
                        Website = worksheet.Cells[i, 11].Value?.ToString(),
                        Dates   = FirstNonNull(
                            worksheet.Cells[i, 3].Value?.ToString(),
                            worksheet.Cells[i, 2].Value?.ToString(),
                            worksheet.Cells[i, 1].Value?.ToString()
                            ),
                    };
                    if (string.IsNullOrEmpty(race.Name) || string.IsNullOrEmpty(race.Start))
                    {
                        //you get extra dummy lines depending on how they're defined in the spreadsheet
                        continue;
                    }
                    races.Add(race);
                }
            }
            return(races);
        }
コード例 #2
0
ファイル: RaceHelper.cs プロジェクト: andrewlock/RaceViewer
        private async Task <(bool ok, decimal?lat, decimal?lng)> GetDetailsFromSummary(RaceDetails summary)
        {
            try
            {
                var postCode = _urlEncoder.Encode(summary.Start);
                var text     = await _httpClient.GetStringAsync("/maps/api/geocode/json?address=" + postCode);

                var response = JObject.Parse(text);

                var results = (JArray)response["results"];
                var result  = results.FirstOrDefault();
                var geo     = result?["geometry"]?["location"];

                var latVal = geo?["lat"]?.ToString();
                var lngVal = geo?["lng"]?.ToString();

                decimal?lat = null;
                decimal?lng = null;

                if (!string.IsNullOrEmpty(latVal) && decimal.TryParse(latVal, out var value))
                {
                    lat = value;
                }
                if (!string.IsNullOrEmpty(lngVal) && decimal.TryParse(lngVal, out var value2))
                {
                    lng = value2;
                }

                return(lat.HasValue && lng.HasValue, lat, lng);
            }
            catch (Exception)
            {
                return(false, null, null);
            }
        }