using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ModelData.BusinessModel;
using ModelData.BusinessModel.MainEntities;
using ModelData.BusinessModel.ExtraEntities;
namespace ModelData.WebModel
{
public class WebDataManager
{
#region singl
private static WebDataManager dataManager;
public static WebDataManager Get()
{
if (dataManager == null)
dataManager = new WebDataManager();
return dataManager;
}
public static void Destroy()
{
dataManager = null;
}
private WebDataManager()
{
Init();
}
#endregion
#region Data
#endregion
#region Methods
public Model GetMapPoints(int YearMin, int YearMax)
{
Model model = new Model();
List<string> temp = new List<string>();
BusinessDataManager businessData = BusinessDataManager.Get();
var context = businessData.GetSettlements(YearMin, YearMax);
model.arraySettlements = context.MapPoints.ToArray();
// Сортировка массива по убыванию количества населения
Array.Sort(model.arraySettlements);
foreach (var type in context.SettlementTypes)
temp.Add(type.Title);
model.arrayNameTypes = temp.ToArray();
Array.Sort(model.arrayNameTypes);
temp.Clear();
foreach (var region in context.Regions)
temp.Add(region.Title);
model.arrayNameRegions = temp.ToArray();
Array.Sort(model.arrayNameRegions);
temp.Clear();
foreach (var settlement in context.MapPoints)
temp.Add(settlement.Title);
model.arrayNameSettlements = temp.ToArray();
// Инициализация уровней приближения убрана в связи с тем, что не найдено решения для оптимального отображения на карте
// Вместо этого будут отображаться первые 40-50-100 самых крупных поселений (значение регулируется в JS коде)
// Для этого в c# коде производится сортировка списка поселений по количеству населения
//int maxPop = 0;
//foreach (var settlement in context.MapPoints)
//{
// if (settlement.Population > maxPop)
// maxPop = settlement.Population;
// temp.Add(settlement.Title);
//}
//model.InitZoom(maxPop);
return model;
}
public Settlement GetSettlement(string URL)
{
BusinessDataManager businessData = BusinessDataManager.Get();
return businessData.GetInfoAboutSettlement(URL);
}
public string[] GetSettlementsNames(string subName)
{
BusinessDataManager businessData = BusinessDataManager.Get();
return businessData.GetSettlementsNames(subName);
}
public (int min, int max) GetYears()
{
BusinessDataManager businessData = BusinessDataManager.Get();
return businessData.GetYears();
}
public Region[] GetAllRegions()
{
BusinessDataManager businessData = BusinessDataManager.Get();
return businessData.AllRegions();
}
public SettlementType[] GetAllSettlementTypes()
{
BusinessDataManager businessData = BusinessDataManager.Get();
return businessData.AllSettlementTypes();
}
#region Tools
private void Init(int Count = 5)
{
}
#endregion
#endregion
}
}