Esempio n. 1
0
        private static void addElementsToModule(Module module, F_R_Modules moduleEnt)
        {
            if (moduleEnt.F_nn_Elements_Modules.Count != 0)
            {
                // Непредвиденная ситуация. Не должно быть элементов в модуле
                //Logger.Log.Error("addElementsToModule() Непредвиденная ситуация. Не должно быть элементов в модуле");
                entities.F_nn_Elements_Modules.RemoveRange(moduleEnt.F_nn_Elements_Modules);
            }
            // Элементы
            foreach (var elem in module.Elements)
            {
                // Определение элемента в базе
                var elemEnt = getElement(elem);
                // Добавление элемента в модуль
                var elemInModEnt = addElemToModule(elemEnt, moduleEnt, elem);
            }
            // Для дверей - найти стену в базе и сохранить в список doorsAndHostWall для записи реального idWall после первого обновления базы.
            var doors = module.Elements.OfType <DoorElement>();

            foreach (var door in doors)
            {
                F_nn_Elements_Modules        doorEmEnt = (F_nn_Elements_Modules)door.DBObject;
                List <F_nn_Elements_Modules> wallsHost = new List <F_nn_Elements_Modules>();
                foreach (var item in door.HostWall)
                {
                    F_nn_Elements_Modules wallEmEnt = (F_nn_Elements_Modules)item.DBObject;
                    wallsHost.Add(wallEmEnt);
                }
                doorsAndHostWall.Add(new Tuple <F_nn_Elements_Modules, List <F_nn_Elements_Modules> >(item1: doorEmEnt, item2: wallsHost));
            }
        }
Esempio n. 2
0
        private static F_nn_Elements_Modules addElemToModule(F_S_Elements elemEnt, F_R_Modules moduleEnt, Element elem)
        {
            var emEnt = new F_nn_Elements_Modules()
            {
                F_R_Modules  = moduleEnt,
                F_S_Elements = elemEnt,
                DIRECTION    = elem.Direction,
                LOCATION     = elem.LocationPoint
            };

            moduleEnt.F_nn_Elements_Modules.Add(emEnt);
            elem.DBObject = emEnt;
            return(emEnt);
        }
Esempio n. 3
0
        /// <summary>
        /// Поиск модуля, если он изменился, то создание ревизии (с обновлением квартир), если его нет, то создание
        /// </summary>
        private static F_R_Modules defineModuleEnt(Module module, List <F_R_Modules> modulesBD)
        {
            F_R_Modules moduleEnt     = null;
            F_R_Modules modulePrevRev = null;
            int         revision      = 0;

            if (module.BaseStatus.HasFlag(EnumBaseStatus.Changed))
            {
                // Последняя ревизия модуля
                modulePrevRev = modulesBD.Where(m => m.NAME_MODULE.Equals(module.Name, StringComparison.OrdinalIgnoreCase)).First();
                var lastRevision = modulePrevRev.REVISION;
                revision = lastRevision + 1;
            }
            else
            {
                moduleEnt = modulesBD.Where(m => m.NAME_MODULE.Equals(
                                                module.Name, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
            }

            if (moduleEnt == null)
            {
                //Logger.Log.Error($"\nНовая ревизия модуля {module.Name} - {revision}.");
                moduleEnt = entities.F_R_Modules.Add(new F_R_Modules()
                {
                    NAME_MODULE = module.Name, REVISION = revision
                });
                modulesBD.Add(moduleEnt);
                // Добавление элементов в модуль
                addElementsToModule(module, moduleEnt);
                // Если это новая ревизия модуля, то обновление модуля во всех квартиро-модулей
                if (revision != 0)
                {
                    // квартиро-модули в которых есть пред ревизия модуля
                    var fmsPrevRevM = entities.F_nn_FlatModules.Local.Where(fm => fm.ID_MODULE == modulePrevRev.ID_MODULE).ToList();
                    foreach (var fmPrevRevM in fmsPrevRevM)
                    {
                        entities.F_nn_FlatModules.Add(new F_nn_FlatModules()
                        {
                            F_R_Flats   = fmPrevRevM.F_R_Flats,
                            F_R_Modules = moduleEnt,
                            LOCATION    = fmPrevRevM.LOCATION,
                            DIRECTION   = fmPrevRevM.DIRECTION,
                            ANGLE       = fmPrevRevM.ANGLE
                        });
                    }
                }
            }
            return(moduleEnt);
        }
Esempio n. 4
0
        private static F_nn_FlatModules getFMEnt(F_R_Flats flatEnt, F_R_Modules moduleEnt, Module module)
        {
            var fmEnt = flatEnt.F_nn_FlatModules.SingleOrDefault
                            (fm =>
                            fm.F_R_Flats == flatEnt &&
                            fm.F_R_Modules == moduleEnt &&
                            fm.LOCATION.Equals(module.LocationPoint) &&
                            fm.DIRECTION.Equals(module.Direction)
                            );

            if (fmEnt == null)
            {
                fmEnt = new F_nn_FlatModules()
                {
                    F_R_Flats   = flatEnt,
                    F_R_Modules = moduleEnt,
                    LOCATION    = module.LocationPoint,
                    DIRECTION   = module.Direction,
                    ANGLE       = module.Rotation
                };
                flatEnt.F_nn_FlatModules.Add(fmEnt);
            }
            return(fmEnt);
        }
 private static F_nn_FlatModules getFMEnt(F_R_Flats flatEnt, F_R_Modules moduleEnt, Module module)
 {
     var fmEnt = flatEnt.F_nn_FlatModules.SingleOrDefault
                          (fm =>
                                fm.F_R_Flats == flatEnt &&
                                fm.F_R_Modules == moduleEnt &&
                                fm.LOCATION.Equals(module.LocationPoint) &&
                                fm.DIRECTION.Equals(module.Direction)
                          );
     if (fmEnt == null)
     {
         fmEnt = new F_nn_FlatModules()
         {
             F_R_Flats = flatEnt,
             F_R_Modules = moduleEnt,
             LOCATION = module.LocationPoint,
             DIRECTION = module.Direction,
             ANGLE = module.Rotation
         };
         flatEnt.F_nn_FlatModules.Add(fmEnt);
     }
     return fmEnt;
 }
 private static F_nn_Elements_Modules addElemToModule(F_S_Elements elemEnt, F_R_Modules moduleEnt, Element elem)
 {
     var emEnt = new F_nn_Elements_Modules()
     {
         F_R_Modules = moduleEnt,
         F_S_Elements = elemEnt,
         DIRECTION = elem.Direction,
         LOCATION = elem.LocationPoint
     };
     moduleEnt.F_nn_Elements_Modules.Add(emEnt);
     elem.DBObject = emEnt;
     return emEnt;
 }
 private static void addElementsToModule(Module module, F_R_Modules moduleEnt)
 {
     if (moduleEnt.F_nn_Elements_Modules.Count != 0)
     {
         // Непредвиденная ситуация. Не должно быть элементов в модуле
         //Logger.Log.Error("addElementsToModule() Непредвиденная ситуация. Не должно быть элементов в модуле");
         entities.F_nn_Elements_Modules.RemoveRange(moduleEnt.F_nn_Elements_Modules);
     }
     // Элементы
     foreach (var elem in module.Elements)
     {
         // Определение элемента в базе
         var elemEnt = getElement(elem);
         // Добавление элемента в модуль
         var elemInModEnt = addElemToModule(elemEnt, moduleEnt, elem);
     }
     // Для дверей - найти стену в базе и сохранить в список doorsAndHostWall для записи реального idWall после первого обновления базы.
     var doors = module.Elements.OfType<DoorElement>();
     foreach (var door in doors)
     {
         F_nn_Elements_Modules doorEmEnt = (F_nn_Elements_Modules)door.DBObject;
         List<F_nn_Elements_Modules> wallsHost = new List<F_nn_Elements_Modules>();
         foreach (var item in door.HostWall)
         {
             F_nn_Elements_Modules wallEmEnt = (F_nn_Elements_Modules)item.DBObject;
             wallsHost.Add(wallEmEnt);
         }
         doorsAndHostWall.Add(new Tuple<F_nn_Elements_Modules, List<F_nn_Elements_Modules>>(item1: doorEmEnt, item2: wallsHost));
     }
 }
Esempio n. 8
0
 /// <summary>
 /// Определение стены для двери в объектах созданных не из чертежа, а из базы
 /// </summary>
 public void SearchHostWallDB(F_R_Modules moduleEnt)
 {
     HostWall = new List<WallElement>();
     // найти стену по id в параметре двери
     var paramIdWall = Parameters.Single(p => p.Name.Equals(Options.Instance.DoorHostWallParameter, StringComparison.OrdinalIgnoreCase));
     var idsWall = paramIdWall.Value.Split(';');
     foreach (var item in idsWall)
     {
         int idWall = Convert.ToInt32(item);
         // найти стену в элементах модуля
         var wall = this.Module.Elements.SingleOrDefault(e => ((F_nn_Elements_Modules)e.DBObject).ID_ELEMENT_IN_MODULE == idWall);
         HostWall.Add((WallElement)wall);
     }
 }