public IEnumerable<DistrictDTO> searchDistricts(string parameter)
{
var result = uOW.DistrictRepo.All.Where(s => s.Deleted == false & (s.Name.StartsWith(parameter) || s.Name.Contains(parameter))).Include(c => c.Coordinates).ToList();
var additional = new List<District>();
foreach (var district in result)
{
var parentId = district.ParentId;
var children = GetAllChildren(district.Id);
foreach (var child in children)
{
if (!additional.Contains(child) && !result.Contains(child))
{
additional.Add(child);
}
}
while (parentId != null)
{
var parent = uOW.DistrictRepo.All.Where(d => d.Id == parentId && d.Deleted==false).Include(d=>d.Coordinates).FirstOrDefault();
parentId = parent.ParentId;
if (!additional.Contains(parent) && !result.Contains(parent))
{
additional.Add(parent);
}
}
}
result.AddRange(additional);
SortCoordinates(result);
return Mapper.Map<IEnumerable<DistrictDTO>>(result);
}