/// <summary>
 /// Получить товар за идентификационним кодом.
 /// </summary>
 /// <param name="id">Полный идентификационный код товара.</param>
 /// <returns>Товар с соответствующим идентификационным кодом.</returns>
 public Article GetArticle(long id)
 {
     using (_ent = new SupermarketDataEntities())
     {
         return _ent.Articles.FirstOrDefault(item => item.ID == id);
     }
 }
        /// <summary>
        /// Поиск товаров по имени или идентификационному коду.
        /// </summary>
        /// <param name="name">Значение для поиска.</param>
        /// <returns>Список найденных товаров.</returns>
        public async Task<ObservableCollection<Article>> SearchAsync(string name)
        {
            using (_ent = new SupermarketDataEntities())
            {
                List<Article> result = new List<Article>();

                long parsedId;

                bool idNeeded = long.TryParse(name, out parsedId);

                IQueryable<Article> founded;

                if (idNeeded)
                {
                    string id = parsedId.ToString();

                    founded = from d in _ent.Articles
                              where d.ID.ToString().Contains(id)
                              select d;

                    result.AddRange(await founded.ToListAsync());
                }

                string[] words = name.Split(' ');

                founded = from d in _ent.Articles
                          where words.All(item => d.Name.Contains(item))
                          select d;

                result.AddRange(await founded.ToListAsync());

                return new ObservableCollection<Article>(result);
            }
        }
        /// <summary>
        /// Обеспечивает авторизацию.
        /// </summary>
        /// <param name="username">Имя пользователя.</param>
        /// <param name="password">Пароль пользователя.</param>
        /// <returns>Результат авторизации.</returns>
        private bool Authorize(string username, string password)
        {
            var hash = SHA1HashStringForUTF8String(password).ToUpper();
            using (SupermarketDataEntities ent = new SupermarketDataEntities())
            {
                var wanted = from d in ent.Users
                             where d.Username == username &&
                                d.PasswordHash.ToUpper() == hash
                             select d;
                try
                {
                    var res = wanted.ToList();
                    return res.Count != 0;
                }
                catch
                {
                    return false;
                }

            }
        }