Пример #1
0
        public CommentaryItemDialog(Book book, CommentaryItem item) : this()
        {
            this.Item = item;

            txtChapterBegin.Properties.MinValue = 1;
            txtChapterBegin.Properties.MaxValue = book.NumberOfChapters;
            txtChapterEnd.Properties.MinValue   = 1;
            txtChapterEnd.Properties.MaxValue   = book.NumberOfChapters;

            var chapter = new XPQuery <Chapter>(item.Session).Where(x => x.NumberOfBook == book.NumberOfBook && x.NumberOfChapter == item.ChapterBegin).FirstOrDefault();

            txtVerseBegin.Properties.MinValue = 1;
            txtVerseEnd.Properties.MinValue   = 1;

            if (chapter != null)
            {
                txtVerseBegin.Properties.MaxValue = chapter.NumberOfVerses;
                txtVerseEnd.Properties.MaxValue   = chapter.NumberOfVerses;
            }

            txtChapterBegin.EditValue = item.ChapterBegin;
            txtChapterEnd.EditValue   = item.ChapterEnd;
            txtVerseBegin.EditValue   = item.VerseBegin;
            txtVerseEnd.EditValue     = item.VerseEnd;
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            lbl.Caption = Chapter == 0 ? $"Introduction to {Book.Title}" : $"{Book.Title} {Chapter}";

            if (Chapter != 0)
            {
                LoadRanges();
            }
            else
            {
                if (!Commentary.Items.Where(x => x.Book == Book.NumberOfBook && x.ChapterBegin == Chapter).Any())
                {
                    var item = new CommentaryItem(Commentary.Session)
                    {
                        Book             = this.Book.NumberOfBook,
                        ChapterBegin     = 0,
                        ChapterEnd       = 0,
                        VerseBegin       = 0,
                        VerseEnd         = 0,
                        Comments         = String.Empty,
                        ParentCommentary = Commentary
                    };
                    item.Save();
                    Commentary.Save();
                    (Commentary.Session as UnitOfWork).CommitChanges();
                }

                LoadRanges();
            }
        }
        public void AddCommentaryRange()
        {
            CommentaryItem item    = null;
            var            chapter = new XPQuery <Chapter>(Commentary.Session).Where(x => x.NumberOfBook == Book.NumberOfBook && x.NumberOfChapter == Chapter).FirstOrDefault();
            var            items   = Commentary.Items.Where(x => x.Book == Book.NumberOfBook && x.ChapterBegin == Chapter);

            if (items.Count() == 0)
            {
                item = new CommentaryItem(Commentary.Session)
                {
                    Book             = Book.NumberOfBook,
                    ChapterBegin     = Chapter,
                    ChapterEnd       = Chapter,
                    Comments         = String.Empty,
                    ParentCommentary = Commentary,
                    VerseBegin       = 1,
                    VerseEnd         = chapter.NumberOfVerses
                };
            }
            else
            {
                var max = items.Max(x => x.VerseEnd);
                if (max + 1 <= chapter.NumberOfVerses)
                {
                    max += 1;
                }
                item = new CommentaryItem(Commentary.Session)
                {
                    Book             = Book.NumberOfBook,
                    ChapterBegin     = Chapter,
                    ChapterEnd       = Chapter,
                    Comments         = String.Empty,
                    ParentCommentary = Commentary,
                    VerseBegin       = max,
                    VerseEnd         = chapter.NumberOfVerses
                };
            }

            using (var dlg = new CommentaryItemDialog(Book, item)) {
                if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    item.Save();

                    LoadRanges(true);
                }
            }
        }