/// <summary>
        /// Расчет времени чтения книги
        /// </summary>
        /// <param name="language">Язык книги</param>
        /// <param name="pages">Количество страниц книги</param>
        /// <param name="dataTime">Дата начала чтения книги</param>
        /// <returns></returns>
        public double TimeReadingBook(BookSDB.languageEnum language, int pages, DateTime dataTime)
        {
            double timeReadingBook;                                                                         //время чтения книги
            int    level = 0;                                                                               //уровень владения языком

            foreach (LevelLanguageSDB lela in LevelLanguages)
            {
                if (lela.Language == language)
                {
                    level = lela.Level;
                    break;
                }
            }
            if (level == 0)
            {
                throw new Exception("Клиент не владеет языком" + language);
            }
            TimeSpan interval = dataTime - DataRegistration;                                                    //интервал времени от данного до времени регистрации
            int      ReadingIntervalActiveSecond  = ReadingIntervalActive * ProgramServer.DaysSecond;           //время активного чтения в цикле
            int      ReadingIntervalPassiveSecond = ReadingIntervalPassive * ProgramServer.DaysSecond;          //время пассивного чтения чтения в цикле
            int      cycleReading           = ReadingIntervalActiveSecond + ReadingIntervalPassiveSecond;       //время цикла чтения
            double   levelPagesPerCycle     = ReadingIntervalActive * PagesPerDay * (level / 10.0);             //количество читаемых страниц в цикл
            double   balanseInterval        = (double)interval.TotalSeconds % (double)cycleReading;             //текущее время нового цикла
            double   remainingActiveCycle   = ReadingIntervalActiveSecond - balanseInterval;                    //оставшееся время цикла активного чтения
            double   timeReadingBookNCCycle = (double)(pages % levelPagesPerCycle) / (double)levelPagesPerCycle //время чтения неполного цикла
                                              * (double)ReadingIntervalActiveSecond;
            int timeReadingBookFullCycle = (int)(pages / levelPagesPerCycle) * cycleReading;                    //время чтения полных циклов

            if (balanseInterval >= ReadingIntervalActiveSecond)
            {
                timeReadingBook = timeReadingBookFullCycle + timeReadingBookNCCycle + (cycleReading - balanseInterval);
            }
            else
            {
                if (remainingActiveCycle > timeReadingBookNCCycle)
                {
                    timeReadingBook = timeReadingBookFullCycle + timeReadingBookNCCycle;
                }
                else
                {
                    timeReadingBook = timeReadingBookFullCycle + timeReadingBookNCCycle + ReadingIntervalPassiveSecond;
                }
            }
            return(timeReadingBook);
        }
 /// <summary>
 /// Конструктор объекта язык-уровень
 /// </summary>
 /// <param name="language">Язык</param>
 /// <param name="level">Уровень владения</param>
 public LevelLanguageSDB(BookSDB.languageEnum language, int level)
 {
     Language = language;
     Level    = level;
 }