コード例 #1
0
 /// <summary>
 /// Searches for the relating username in all DbSets and removes all content related to it
 /// </summary>
 /// <param name="UserName">Seeked username</param>
 public void RemoveUser(string UserName)
 {
     foreach (Car Car in CarDb)
     {
         if (Car.DisplayName == UserName)
         {
             foreach (var it in FuelDb)
             {
                 if (it.PlateNumber == Car.PlateNumber)
                 {
                     FuelDb.Remove(it);
                 }
             }
             foreach (var it in RepairDb)
             {
                 if (it.Plate == Car.PlateNumber)
                 {
                     RepairDb.Remove(it);
                 }
             }
             foreach (var it in NotebookDb)
             {
                 if (it.Plate == Car.PlateNumber)
                 {
                     NotebookDb.Remove(it);
                 }
             }
             CarDb.Remove(Car);
         }
     }
     SaveChanges();
 }
コード例 #2
0
 /// <summary>
 /// Removes objects of all types with matching plate number value from all DbSets
 /// </summary>
 /// <param name="Plate">Plate number to be cleared</param>
 public void RemoveAllByPlate(string Plate)
 {
     foreach (Car Car in CarDb)
     {
         if (Car.PlateNumber == Plate)
         {
             foreach (var it in FuelDb)
             {
                 if (it.PlateNumber == Plate)
                 {
                     FuelDb.Remove(it);
                 }
             }
             foreach (var it in RepairDb)
             {
                 if (it.Plate == Plate)
                 {
                     RepairDb.Remove(it);
                 }
             }
             foreach (var it in NotebookDb)
             {
                 if (it.Plate == Plate)
                 {
                     NotebookDb.Remove(it);
                 }
             }
             CarDb.Remove(Car);
         }
     }
     this.SaveChanges();
 }
コード例 #3
0
        public void InitShell()
        {
            try {
                if (Application != null)
                {
                    using (var session = NHibernate.Factory.OpenSession()) {
                        StyleHelper.BuildStyles(Application.Resources, session.Query <CustomStyle>());
                    }
                }
            }
            catch (Exception e) {
                log.Error("Не удалось инициализировать стили", e);
            }

            var count = 0;

repeat:
            try {
                count++;
                //если это попытка восстановления нужно очистить
                Shell?.Dispose();
                windowManager = (WindowManager)IoC.Get <IWindowManager>();
                Shell         = new ShellViewModel(Config);
                Deserialize();
                windowManager.ShowWindow(Shell, null, new Dictionary <string, object> {
                    { "WindowState", WindowState.Maximized }
                });

                if (Application != null)
                {
                    //если это повторный запуск то мы можем потерять окно
                    //в этом случае нужно найти потерянные окна и закрыть их
                    //что бы избежать ситуации когда главное окно закрылось а приложение не завершилось
                    //тк windows считает что у него еще есть активные окна
                    //
                    //мы не можем выполнять очистку вместе с очисткой предыдущего главного экрана
                    //тк если мы это сделаем windows попытается завершить процесс тк у него не будет больше окон
                    var lostWindows = Application.Windows.OfType <Window>()
                                      .Where(x => x.DataContext is ShellViewModel && ((ShellViewModel)x.DataContext) != Shell);
                    foreach (var window in lostWindows)
                    {
                        window.Close();
                    }
                }
            }
            catch (Exception e) {
                log.Error("Ошибка при запуске приложения", e);
                if (count > 1 || !RepairDb.TryToRepair(e, Config))
                {
                    throw;
                }
                goto repeat;
            }
            IsInitialized = true;
        }
コード例 #4
0
 /// <summary>
 /// Searches for the Repairbook-type object with relating plate number, text and price and removes it
 /// </summary>
 /// <param name="Plate">Seeked plate number</param>
 /// <param name="Note">Seeked text</param>
 /// <param name="Price">Seeked price</param>
 public void RemoveRepairNote(string Plate, string Note, string Price)
 {
     foreach (var note in RepairDb)
     {
         if (note.Plate == Plate && note.Text == Note && note.Price.ToString() == Price)
         {
             RepairDb.Remove(note);
         }
     }
     SaveChanges();
 }
コード例 #5
0
        /// <summary>
        /// Removes all items from all DbSets
        /// </summary>
        public void ClearCollection()
        {
            foreach (Car it in CarDb)
            {
                CarDb.Remove(it);
            }
            foreach (var it in NotebookDb)
            {
                NotebookDb.Remove(it);
            }
            foreach (var it in RepairDb)
            {
                RepairDb.Remove(it);
            }
            foreach (var it in FuelDb)
            {
                FuelDb.Remove(it);
            }

            this.SaveChanges();
        }
コード例 #6
0
        private void InitDb()
        {
            if (NHibernate != null)
            {
                return;
            }

            SqlMapperExtensions.GetDatabaseType = x => "mysqlconnection";
            NHibernate = new Config.NHibernate.NHibernate();
            NHibernate.Init();

            if (Config.Cmd.Match("repair"))
            {
                using (var cmd = new RepairDb(Config)) {
                    cmd.Execute();
                }
            }

            var count = 0;

repeat:
            try {
                count++;
                using (var sanityCheck = new SanityCheck(Config)) {
                    sanityCheck.Check(Config.Cmd.Match("import"));
                }
            }
            catch (Exception e) {
                log.Error("Ошибка при запуске приложения", e);
                if (count > 1 || !RepairDb.TryToRepair(e, Config))
                {
                    throw;
                }
                goto repeat;
            }
        }