Пример #1
0
        /// <summary>
        /// Десериализация файла
        /// </summary>
        /// <param name="inputFilePath">Путь к JSON файлу</param>
        public static void DeserializeJsonFile(string inputFilePath)
        {
            // Если путь по умолчанию не найден...
            if (!File.Exists(inputFilePath))
            {
                // Вывести сообщение
                MessageBox.Show("Входной файл не найден, укажите путь", "Файл не найден", MessageBoxButton.OK, MessageBoxImage.Warning);
                // Показать диалог открытия файла
                OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == true)
                {
                    // Присвоить переменной новый путь
                    inputFilePath = openFileDialog.FileName;
                }
            }

            // Открыть файл
            using (StreamReader sr = File.OpenText(inputFilePath))
            {
                string line;
                // Присвоить к переменной line каждую строку, пока не достигнет конца файла
                while ((line = sr.ReadLine()) != null)
                {
                    // К списку json данных добавляется элемент, если найдено начало данных
                    if (line.Equals(startData))
                    {
                        jsonDataSet.Add(null);
                    }
                    // Увеличить счетчик json данных если найден конец данных
                    else if (line.Equals(endData))
                    {
                        dataSetNum++;
                    }
                    // В остальных случаях добавить строку к к текущему элементу списка json данных, который определяется счетчиком
                    else if (dataSetNum >= 0)
                    {
                        jsonDataSet[dataSetNum] += line;
                    }
                }
            }

            // Для каждых json данных в списке данных..
            foreach (string jsonData in jsonDataSet)
            {
                // Десериализовать тип данных
                DataType dt = JsonConvert.DeserializeObject <DataType>(jsonData);

                // Если тип "HOUSES", десериализовать json данные как набор данных домов
                if (dt.Q.Equals("HOUSES"))
                {
                    HousesDataSet = JsonConvert.DeserializeObject <HousesDataSet>(jsonData);
                }
                // Если тип "USERS", десериализовать json данные как набор данных пользователей
                else if (dt.Q.Equals("USERS"))
                {
                    UsersDataSet = JsonConvert.DeserializeObject <UsersDataSet>(jsonData);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Конструктор модели представления
        /// </summary>
        public MainViewModel()
        {
            //Десериализация файла
            JSONData.DeserializeJsonFile(inputFilePath);
            housesDataSet = JSONData.HousesDataSet;
            usersDataSet  = JSONData.UsersDataSet;

            //Создание команд
            NextHouseCommand   = new Command(NextHouse);
            PrevHouseCommand   = new Command(PrevHouse);
            NewHouseCommand    = new Command(NewHouse);
            DeleteHouseCommand = new Command(DeleteHouse);

            NextUserCommand   = new Command(NextUser);
            PrevUserCommand   = new Command(PrevUser);
            NewUserCommand    = new Command(NewUser);
            DeleteUserCommand = new Command(DeleteUser);

            DeletePhoneCommand = new Command <Phone>(ExecuteDeletePhoneCommand);
            AddPhoneCommand    = new Command(AddPhone);

            SaveDataCommand = new Command(SaveAllData);

            // Если набор данных существует
            if (housesDataSet != null)
            {
                // Присваивание нулевых значений идекса
                currentHouseIndex = 0;
                // Определение не пуст ли набор данных
                HousesNotEmpty = housesDataSet.D.Items.Count != 0 ? true : false;
                // Если набор данных не пуст
                if (HousesNotEmpty)
                {
                    // Показ первых элементов наборов данных
                    ShowHouse(currentHouseIndex);
                }
            }
            // Иначе, присвоить текущему элементу пустое значение
            else
            {
                CurrentHouse = null;
            }

            // Если набор данных существует
            if (usersDataSet != null)
            {
                // Присваивание нулевых значений идекса
                currentUserIndex = 0;
                // Определение не пуст ли набор данных
                UsersNotEmpty = usersDataSet.D.Items.Count != 0 ? true : false;
                // Если набор данных не пуст
                if (UsersNotEmpty)
                {
                    // Показ первых элементов наборов данных
                    ShowUser(currentUserIndex);
                }
            }
            // Иначе, присвоить текущему элементу пустое значение
            else
            {
                CurrentUser = null;
            }
        }