/// <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)));
        }
Exemple #3
0
        /// <summary>
        /// Получение корпусов для проекта.
        /// Корпус - объект МДМ у которого все вложенные объекты уровнем ниже Корпуса или нет вложенных объектов
        /// </summary>
        public static List <ObjectMDM> GetHouses(ProjectMDM project)
        {
            if (project == null)
            {
                return(null);
            }
            var objs = MDMService.GetHouses(project.Id);

            return(objs);
        }