Esempio n. 1
0
        public List <RowBase> GetListBases(MainWindow main)
        {
            List <RowBase> list = new List <RowBase>();

            string pathIbases  = DefaultValues.GetNameFileIbases(_nameUser);
            string pathUserDir = DefaultValues.GetPathUserDir(_nameUser);

            try
            {
                new DirectoryInfo(pathUserDir).GetAccessControl();

                if (File.Exists(pathIbases))
                {
                    ReadFileIbases(list, pathIbases);
                    RemoveIncorrectRows(list);
                }
                else
                {
                    throw new DirectoryNotFoundException(pathIbases);
                }
            }
            catch (DirectoryNotFoundException)
            {
                Dialog.ShowMessage($"Файл списка баз не существует.");
            }
            catch (UnauthorizedAccessException)
            {
                if (_tryGetAccess)
                {
                    Dialog.ShowMessage($"Нет доступа к файлу списка баз: " +
                                       $"\n{pathIbases}");
                }

                else if (Dialog.DialogQuestion($"Нет доступа к файлу списка баз: " +
                                               $"\n{pathIbases}" +
                                               $"\nПопробовать получить доступ?"))
                {
                    _tryGetAccess = true;

                    Access.TryGetAccess(pathUserDir);

                    Thread.Sleep(1 * 1000);

                    main.Activate();

                    Dialog.ShowMessage("Вы уже должны были получить запрос на получение доступа в каталог выбранного пользователя." +
                                       "\nПосле закрытия этого окна будет выполнена попытка чтения данных.");

                    GetListBases(main);

                    //Process process = new Access(pathUserDir).TryGetAccess();

                    //if (process != null)
                    //{
                    //    process.EnableRaisingEvents = true;
                    //    process.Exited += Process_Exited;
                    //    process.Start();
                    //    process.WaitForExit();
                    //    Dialog.ShowMessage("Вы уже должны были получить запрос на получение доступа." +
                    //        "\nПосле закрытия каталога будет выполнен повторный запрос на получение данных.");
                    //}
                    //else
                    //    GetListBases();
                }
            }
            catch (Exception ex)
            {
                Dialog.ShowMessage("Произошла непредвиденная ошибка.");
                Dialog.ShowMessage(ex.Message);
            }

            return(list);
        }
Esempio n. 2
0
        private void ReadCachePath(ref IEnumerable <RowBase> list, ref ulong totalByte, ref string total, List <RowBase> listCache, string path, TypeCache typeCache)
        {
            try
            {
                DirectoryInfo[] dirCache = new DirectoryInfo(path).GetDirectories();

                foreach (DirectoryInfo dir in dirCache)
                {
                    string nameDir = dir.Name;

                    if (nameDir.Count(f => f == '-') == 4)
                    {
                        RowBase rowBase = listCache.FirstOrDefault(f => f.ID == nameDir);

                        if (rowBase == null)
                        {
                            rowBase = new RowBase()
                            {
                                Name       = _nameRowIsNotList,
                                ID         = nameDir,
                                DateCreate = DateTime.MaxValue
                            };
                            listCache.Add(rowBase);
                        }

                        DirFile dirFile = new DirFile(dir.FullName);

                        ulong sizeByte = dirFile.GetDirSize();
                        Tuple <DateTime, DateTime> dateCreateEdit = dirFile.GetDateCreateEdited();

                        rowBase.DateCreate = dirFile.CompareDatePlus(rowBase.DateCreate, dateCreateEdit.Item1);
                        rowBase.DateEdit   = dirFile.CompareDateMinus(rowBase.DateEdit, dateCreateEdit.Item2);

                        string size = new DirFile().GetSizeFormat(sizeByte);

                        if (typeCache == TypeCache.Local)
                        {
                            rowBase.PathCacheLocal = dir.FullName;
                            rowBase.SizeLocal      = size;
                        }
                        else if (typeCache == TypeCache.AppData)
                        {
                            rowBase.PathCacheAppData = dir.FullName;
                            rowBase.SizeAppData      = size;
                        }

                        rowBase.SizeByte += sizeByte;

                        totalByte += sizeByte;
                    }
                }

                RemoveIncorrectRows(listCache);

                total = new DirFile().GetSizeFormat(totalByte);

                listCache.Sort();

                list = listCache;
            }
            catch (DirectoryNotFoundException)
            {
                Dialog.ShowMessage($"Не удалось получить данные с каталога: \n{path}\nКаталог кеша не существует.");
            }
            catch (UnauthorizedAccessException)
            {
                Dialog.ShowMessage($"Нет доступа к каталогу кеша: \n{path}");
            }
            catch (Exception ex)
            {
                Dialog.ShowMessage("Произошла непредвиденная ошибка.");
                Dialog.ShowMessage(ex.Message);
            }
        }