Beispiel #1
0
        public string AccessUsersXml(bool includeNoAccess = false)
        {
            var xs = new XmlSerializer(typeof(AccessUsers));
            var sw = new StringWriter();
            var a  = new AccessUsers {
                People = AccessUsersData(includeNoAccess).ToArray()
            };

            xs.Serialize(sw, a);
            return(sw.ToString());
        }
Beispiel #2
0
        public void ExportApartmentsOptions()
        {
            Logger.Log.Info("Start command AR-BaseApartmentsOptions");
            Document doc = Application.DocumentManager.MdiActiveDocument;

            if (doc == null)
            {
                return;
            }

            // Проверка допуска пользователя
            if (!AccessUsers.HasAccess())
            {
                doc.Editor.WriteMessage("\nОтказано в доступе");
                return;
            }

            Options.Show();
        }
Beispiel #3
0
 public string AccessUsersXml(bool includeNoAccess = false)
 {
     var xs = new XmlSerializer(typeof(AccessUsers));
     var sw = new StringWriter();
     var a = new AccessUsers { People = AccessUsersData(includeNoAccess).ToArray() };
     xs.Serialize(sw, a);
     return sw.ToString();
 }
Beispiel #4
0
        public void BaseApartmentsExport()
        {
            Logger.Log.Info("Start command AR-BaseApartmentsExport");
            Document doc = Application.DocumentManager.MdiActiveDocument;

            if (doc == null)
            {
                return;
            }

            // Проверка допуска пользователя
            if (!AccessUsers.HasAccess())
            {
                doc.Editor.WriteMessage("\nОтказано в доступе");
                return;
            }

            if (!File.Exists(doc.Name))
            {
                doc.Editor.WriteMessage("\nНужно сохранить текущий чертеж.");
                return;
            }

            try
            {
                Inspector.Clear();

                Database db = doc.Database;
                Editor   ed = doc.Editor;

                ExportApartmentsAbout();

                Parameter.BlocksConstantAtrs = new Dictionary <ObjectId, List <Parameter> >();

                // Проверка дубликатов блоков
                CheckDublicateBlocks.Tolerance = new Autodesk.AutoCAD.Geometry.Tolerance(0.02, 15);
                CheckDublicateBlocks.Check(new HashSet <string>()
                {
                    "RV_EL_BS_Базовая стена", "RV_EL_BS_Вентиляционный блок"
                });

                // Создание папки для экспорта подложек квуартир
                DefineDirExportFilesApartments(db);

                // Считывание блоков квартир из чертежа
                var apartments = Apartment.GetApartments(db);
                if (apartments.Count == 0)
                {
                    throw new System.Exception($"Блоки квартир не найдены. Имя блока квартиры должно соответствовать условию Match = '{Options.Instance.BlockApartmentNameMatch}'");
                }
                ed.WriteMessage($"\nВ Модели найдено {apartments.Count} блоков квартир.");

                Inspector.ShowDialog();
                Inspector.Clear();

                // Квартиры в базе
                var apartmentsInBase = GetBaseApartments.GetAll();

                //Проверка всех элементов квартир в базе - категории, параметры.
                CheckApartments.Check(apartments, apartmentsInBase);

                // Сортировка квартир, модулей и элементов
                var alphaComparer = AcadLib.Comparers.AlphanumComparator.New;
                apartments.Sort((a1, a2) => a1.Name.CompareTo(a2.Name));
                apartments.ForEach(a =>
                {
                    a.Modules.Sort((m1, m2) => m1.Name.CompareTo(m2.Name));
                    a.Modules.ForEach(m => m.Elements.Sort((e1, e2) => alphaComparer.Compare(e1.NodeName, e2.NodeName)));
                });

                // Форма предпросмотра экспорта блоков
                FormBlocksExport formExport = new FormBlocksExport(apartments);
                var dlgRes = Application.ShowModalDialog(formExport);

                // Прервать
                if (dlgRes == System.Windows.Forms.DialogResult.Abort)
                {
                    formExport.SetModaless();
                    Application.ShowModelessDialog(formExport);
                    throw new System.Exception(AcadLib.General.CanceledByUser);
                }

                if (dlgRes == System.Windows.Forms.DialogResult.OK)
                {
                    // Экспорт блоков в файлы
                    var count = Apartment.ExportToFiles(apartments);
                    ed.WriteMessage($"\nЭкспортированно '{count}' квартир в отдельные файлы.");

                    // Выбор квартир записываемых в базу - изменившиеся и новые
                    var apartsToDb = apartments.Where
                                         (a => !a.BaseStatus.HasFlag(EnumBaseStatus.Error) &&
                                         !a.BaseStatus.HasFlag(EnumBaseStatus.NotInDwg) &&
                                         (
                                             a.BaseStatus.HasFlag(EnumBaseStatus.Changed) ||
                                             a.BaseStatus.HasFlag(EnumBaseStatus.New) ||
                                             a.Modules.Any(m => !m.BaseStatus.HasFlag(EnumBaseStatus.Error) &&
                                                           (
                                                               m.BaseStatus.HasFlag(EnumBaseStatus.Changed) ||
                                                               m.BaseStatus.HasFlag(EnumBaseStatus.New)
                                                           ))
                                         )).ToList();
                    //var apartsNotToDB = apartments.Except(apartsToDb);
                    //foreach (var apartNotToDB in apartsNotToDB)
                    //{
                    //    ed.WriteMessage($"\nКвартира не будет записана в базу, статус '{apartNotToDB.BaseStatus}' - '{apartNotToDB.Name}'.");
                    //}

                    //// Запись квартир в xml
                    //string fileXml = Path.Combine(Path.GetDirectoryName(doc.Name), Path.GetFileNameWithoutExtension(doc.Name) + ".xml");
                    //Apartment.ExportToXML(fileXml, apartmentsToExport);

                    // Запись в DB
                    try
                    {
                        BaseApartments.Export(apartsToDb);
                    }
                    catch (System.Exception ex)
                    {
                        Inspector.AddError($"Ошибка экспорта в БД - {ex.Message}", icon: System.Drawing.SystemIcons.Error);
                    }

                    // Запись лога экспортированных блоков
                    string   logFile  = Path.Combine(Path.GetDirectoryName(doc.Name), Options.Instance.LogFileName);
                    ExcelLog excelLog = new ExcelLog(logFile);
                    excelLog.AddtoLog(apartments);

                    // Показ ошибок
                    Inspector.Show();
                }
            }
            catch (System.Exception ex)
            {
                doc.Editor.WriteMessage($"\nОшибка экспорта блоков: {ex.Message}");
                if (!ex.Message.Contains(AcadLib.General.CanceledByUser))
                {
                    Logger.Log.Error(ex, $"Command: AR-BaseApartmentsExport. {doc.Name}");
                }
            }
        }
 public static User LogInUser(string email, string password)
 {
     return(AccessUsers.LogIn(email, password));
 }
 public static void Delete(int id)
 {
     AccessUsers.Delete(id);
 }
 public static void EditUser(int id, User user)
 {
     AccessUsers.Edit(id, user);
 }
 public static void InsertUser(User user)
 {
     AccessUsers.Insert(user);
 }
 public static User GetUserById(int id)
 {
     return(AccessUsers.GetById(id));
 }
 public static List <User> GetAllUsers()
 {
     return(AccessUsers.GetAll());
 }