/// <summary> /// Список данных инсоляций для проекта /// </summary> /// <param name="projectId">Проект</param> /// <returns>Список данных инсоляций проекта</returns> public static List <InsData> Load(int projectId) { if (projectId == 0) { return(null); } var resDatas = new List <InsData>(); using (var ent = GetEntities()) { // Объекты домов для проекта var housesDb = MDMService.GetHouses(projectId); if (housesDb == null || !housesDb.Any()) { return(null); } // Найти данные инс связанные с этими домами // Все объекты инс для домов проекта var insObjectsDb = ent.Insolation_Object.ToList().Where(w => housesDb.Any(h => h.Id == w.Object_id)).ToList(); // данные объектов инсоляции для каждого объекта (InsVer-версия инс, данные объекта) var objectsData = new List <Tuple <Insolation_version, InsObject> >(); foreach (var objDb in insObjectsDb) { var pts = new List <InsPoint>(); foreach (var ptDb in objDb.Insolation_Object_Point) { pts.Add(new InsPoint { InsValue = ptDb.Insolation_type.Insolation_type1, Row = ptDb.Point_row.Value, Column = ptDb.Point_column.Value, }); } var objData = new InsObject { Id = objDb.Object_id, Points = pts }; objectsData.Add(new Tuple <Insolation_version, InsObject>(objDb.Insolation_version, objData)); } // группировка по версии инсоляции var versionsInsObjects = objectsData.GroupBy(g => g.Item1.Insolation_version_id); foreach (var verInsObjects in versionsInsObjects) { var insVer = verInsObjects.First().Item1; var insData = new InsData { Date = insVer.Insolation_version_datetime.Value, Name = insVer.Insolation_version1, Objects = verInsObjects.Select(s => s.Item2).ToList() }; resDatas.Add(insData); } } // Сортировка по дате resDatas.Sort((d1, d2) => DateTime.Compare(d1.Date, d2.Date)); return(resDatas); }
public void GetHousesTest() { int parentId = 1; var houses = MDMService.GetHouses(parentId); Console.WriteLine($"ParentId={parentId}, домов {houses.Count}"); Assert.IsTrue(houses.All(h => h.ObjectType == ObjectTypeEnum.House || (h.ObjectType == ObjectTypeEnum.Block && h.IsBuilding == true))); }
/// <summary> /// Получение корпусов для проекта. /// Корпус - объект МДМ у которого все вложенные объекты уровнем ниже Корпуса или нет вложенных объектов /// </summary> public static List <ObjectMDM> GetHouses(ProjectMDM project) { if (project == null) { return(null); } var objs = MDMService.GetHouses(project.Id); return(objs); }