CityServerFunctions.cs
1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Commons.City;
using Sungero.Core;
using Sungero.CoreEntities;
namespace Sungero.Commons.Server
{
partial class CityFunctions
{
/// <summary>
/// Получить населенный пункт из адреса.
/// </summary>
/// <param name="address">Адрес.</param>
/// <returns>Населенный пункт, указанный в адресе.</returns>
[Public]
public static ICity GetCityFromAddress(string address)
{
if (string.IsNullOrWhiteSpace(address))
return null;
var pattern = string.Format(@"(?i:{0}\s(?<cityName>[а-я][а-я-\s\.]+))", Constants.City.AddressTypesMask);
var match = System.Text.RegularExpressions.Regex.Match(address, pattern);
var cityName = match.Groups["cityName"].Value;
var city = string.Format("{0} {1}", Constants.City.CityMask, cityName);
var locality = string.Format("{0} {1}", Constants.City.LocalityMask, cityName);
return !match.Success
? null
: Cities.GetAll().FirstOrDefault(c =>
c.Name.ToLower() == city.ToLower() || c.Name.ToLower() == cityName ||
c.Name.ToLower() == locality.ToLower());
}
}
}