public CompaniesListViewModel()
 {
     Companies = new CompaniesCollection(RaP_DAO.GetCompanies());
 }
        /// <summary>
        /// Валидация страницы
        /// </summary>
        /// <param name="columnName">Название элемента для валидации</param>
        /// <returns></returns>
        public override string Validate(string columnName)
        {
            // Текст ошибки
            string error = null;

            switch (columnName)
            {
            case nameof(Login):
                Login = Login.Trim();
                if (string.IsNullOrEmpty(Login))
                {
                    error = "Логин не введён";
                }
                else if (Login.Length < 3)
                {
                    error = "Минимум 3 символа";
                }
                else if (Login.Length > 150)
                {
                    error = "Максимум 150 символов";
                }
                else if (RaP_DAO.IsLoginExists(id ?? 0, Login))
                {
                    error = "Этот логин занят";
                }
                else
                {
                    // Проверка, что в логин состоит только из букв и цифр
                    bool onlyLettersAndDigits = false;
                    bool atLeastOneLetter     = false;

                    for (int i = 0; i < Login.Length &&
                         !onlyLettersAndDigits &&
                         !atLeastOneLetter; i++)
                    {
                        onlyLettersAndDigits = char.IsLetter(Login[i]) || char.IsDigit(Login[i]);
                        atLeastOneLetter     = char.IsLetter(Password[i]);
                    }

                    if (!onlyLettersAndDigits)
                    {
                        error = "Логин должен состоять только из букв и цифр";
                    }
                    else if (!atLeastOneLetter)
                    {
                        error = "Введите хотя бы 1 букву";
                    }
                }
                break;

            case nameof(Password):
                Password = Password.Trim();
                if (string.IsNullOrEmpty(Password))
                {
                    error = "Введите пароль";
                }
                else if (Password.Length < 6)
                {
                    error = "Минимум 6 символов";
                }
                else if (Password.Length > 50)
                {
                    error = "Максимум 50 символов";
                }
                else if (Password == Login)
                {
                    error = "Пароль не может совпадать с логином";
                }
                else
                {
                    // Проверка, что в пароле есть хотя бы 1 буква
                    bool atLeastOneLetter = false;
                    for (int i = 0; i < Password.Length && !atLeastOneLetter; i++)
                    {
                        atLeastOneLetter = char.IsLetter(Password[i]);
                    }

                    if (!atLeastOneLetter)
                    {
                        error = "Введите хотя бы 1 букву";
                    }
                }
                break;

            case nameof(SelectedCompany):
                if (SelectedCompany == null)
                {
                    error = "Выберите компанию сотрудника";
                }
                break;
            }

            if (ErrorCollection.ContainsKey(columnName))
            {
                ErrorCollection[columnName] = error;
            }
            else
            {
                ErrorCollection.Add(columnName, error);
            }

            OnPropertyChanged(nameof(ErrorCollection));

            return(error);
        }
        /// <summary>
        /// Для вывода всех пользователей
        /// </summary>
        public CompanyUsersViewModel()
        {
            CompanyUsers = new UsersCollection(RaP_DAO.GetUsers());

            Header = "Список сотрудников";
        }
        // На добавление
        public AddEditUserViewModel()
        {
            CompaniesList = RaP_DAO.GetCompanies();

            Header = "Добавить сотрудника";
        }
 /// <summary>
 /// Для вывода пользователей определённой компании
 /// </summary>
 /// <param name="company">Компания</param>
 public CompanyUsersViewModel(Company company)
 {
     CompanyUsers = new UsersCollection(RaP_DAO.GetCompanyUsers(company));
     Header       = "Сотрудники компании «" + company + "»";
 }